gcloud spanner

gcloud コマンドライン ツールを使用すると、Cloud Spanner を操作できます。Cloud Spanner の操作には、gcloud spanner コマンドを使用します。

Cloud Spanner を使用する環境をまだ設定していない場合には、設定の手順を行ってください。

このページでは、一般的な gcloud spanner コマンドについて説明します。また、--help 引数を指定してコマンドを実行するとコマンドライン ヘルプを表示できます。次に例を示します。

gcloud spanner instances create --help
SYNOPSIS
    gcloud spanner instances create INSTANCE --config=CONFIG
        --description=DESCRIPTION --nodes=NODES [--async] [GLOBAL-FLAG ...]

DESCRIPTION
    Cloud Spanner instances create command.

...

このページでは、Cloud Spanner プロジェクトの値で置き換える必要があるいくつかの変数を使用しています。

  • PROJECT_ID: プロジェクト ID
  • INSTANCE_ID: インスタンス ID
  • NODE_COUNT: インスタンス内のノード数
  • DATABASE_ID: データベース ID
  • SQL_STATEMENT: SQL ステートメント
  • TABLE_NAME: テーブル名
  • COL_NAME: 列名
  • COL_VALUE: 列の値
  • KEY_VALUE: 主キー列の値
  • SESSION_ID: セッション ID
  • POLICY_FILE: JSON または YAML ポリシー ファイルのファイル名

gcloud spanner の完全なリファレンスについては、gcloud spanner をご覧ください。

デフォルト プロジェクトの設定

まだ行っていない場合には、Google Cloud Platform プロジェクトの ID を gcloud コマンドライン ツールのデフォルト プロジェクトに設定します。

gcloud config set project PROJECT_ID

デフォルト プロジェクトを設定しない場合、gcloud spanner の最初の引数として、次の各コマンドに --project PROJECT_ID を渡す必要があります。次に例を示します。

gcloud spanner --project=PROJECT_ID instance-configs list

インスタンスとインスタンス構成

Cloud Spanner インスタンスは、Cloud Spanner データベースで使用されるリソースの割り当てです。インスタンスを作成するにはインスタンス構成を選択する必要があります。この構成は Cloud Spanner データの地理的配置とレプリケーションを定義するインスタンスの設計図のようなものです。

インスタンス構成の一覧取得

プロジェクトで使用可能なインスタンス構成の一覧を表示するには、次のコマンドを実行します。

gcloud spanner instance-configs list

リージョンおよびマルチリージョン構成の一覧が表示されます。

リージョン構成ではデータが単一のリージョン内に分散され、マルチリージョン構成ではデータが地理的に複数のリージョンにわたって分散されます。詳細については、インスタンスをご覧ください。

インスタンスの作成

アプリケーションのニーズに合ったインスタンス構成を選択した後は、次の手順として、インスタンスを作成するときに使うノードの数を選択します。ノードの数は、インスタンスのデータベースで利用できるリソースの量に対応します。含まれるノード数にかかわらず、リージョン インスタンスは一つのゾーンでの停止に対し常に回復力があることを覚えておいてください。リージョンとゾーンに関する詳細は、地域とリージョンをご覧ください。

5 ノードが存在するリージョンのインスタンス構成 regional-us-central1 を使用して、表示名が My Instancetest-instance というインスタンスを作成するには、次のコマンドを実行します。

gcloud spanner instances create test-instance --config=regional-us-central1 \
    --description="My Instance" --nodes=5

上のコマンドでは、インスタンス名は test-instance に設定され、--description によってインスタンスの表示名が設定されます。これらの両方の値が Google Cloud Platform プロジェクト内で一意である必要があります。

デフォルトのインスタンスの設定

コマンドにインスタンスが指定されていないときに Cloud Spanner が使用するデフォルトのインスタンスを設定できます。デフォルトのインスタンスを設定するには、次のコマンドを実行します。

gcloud config set spanner/instance INSTANCE_ID

インスタンスの一覧取得

プロジェクト内のすべての活動中のインスタンスとその構成(ノード数や状態など)を一覧表示する場合:

gcloud spanner instances list

特定インスタンスの一覧取得

特定のインスタンスの構成を取得する場合:

gcloud spanner instances describe INSTANCE_ID

インスタンスの更新

既存のインスタンスの表示名とノード数のみ更新できます。インスタンス内のノード数を更新するには、次のコマンドを実行します。

gcloud spanner instances update INSTANCE_ID --nodes=NODE_COUNT

既存のプロパティ セットを見つけるには、gcloud spanner instances list または gcloud spanner instances describe INSTANCE_ID を使用します。

インスタンスの削除

既存のインスタンスを削除するには、次のコマンドを実行します。

gcloud spanner instances delete INSTANCE_ID

インスタンスを削除すると、そのインスタンス内のすべてのデータベースが削除されます。インスタンスの削除は元に戻せません。

データベースの作成と管理

データベースの作成

Cloud Spanner の読み書き API を使用するには、データベースを作成する必要があります。インスタンスで複数のデータベースを作成できます。

INSTANCE_ID インスタンスに ID が DATABASE_ID のデータベースを作成するには、次のコマンドを実行します。

gcloud spanner databases create DATABASE_ID --instance=INSTANCE_ID

データベースの一覧取得

インスタンスのデータベースを一覧表示するには、次のコマンドを実行します。

gcloud spanner databases list --instance=INSTANCE_ID

データベースの削除

インスタンス INSTANCE_ID のデータベース DATABASE_ID を削除するには、次のコマンドを実行します。

gcloud spanner databases delete DATABASE_ID --instance=INSTANCE_ID

データベースの更新

既存のデータベースのスキーマを修正できます。たとえば、MyTable という名前のテーブルを作成するには、次のコマンドを実行します。

gcloud spanner databases ddl update example-db --instance=test-instance \
    --ddl='CREATE TABLE MyTable ( MyKey INT64, MyValue STRING(MAX) ) PRIMARY KEY (MyKey)'

スキーマ構文についてはデータ定義言語をご覧ください。

SQL ステートメントの実行

コマンドラインで SQL SELECT ステートメントを実行するには、次の構文を使用します。

gcloud spanner databases execute-sql DATABASE_ID --instance=INSTANCE_ID \
    --sql=SQL_STATEMENT

たとえば、SQL SELECT ステートメントを実行するには、次のコマンドを使用します。

gcloud spanner databases execute-sql example-db --instance=test-instance \
    --sql='SELECT * FROM MyTable WHERE MyKey = 1'

Cloud Spanner SQL リファレンスについてはクエリ構文をご覧ください。

IAM ポリシーの管理

gcloud ツールを使用すると、Cloud Spanner インスタンスとデータベースの IAM ポリシーを管理できます。

IAM ポリシーは、Google Cloud Platform のリソースにアクセスできるユーザーと権限を定義するステートメントの集合です。

IAM ポリシーの取得

インスタンス

インスタンスの IAM ポリシーを取得するには、次のコマンドを実行します。

gcloud spanner instances get-iam-policy INSTANCE_ID

データベース

データベースの IAM ポリシーを取得するには、次のコマンドを実行します。

gcloud spanner databases get-iam-policy DATABASE_ID --instance=INSTANCE_ID

IAM ポリシーの設定

リソースに IAM ポリシーを設定するには、JSON または YAML ファイルにポリシーを定義し、set-iam-policy コマンドでそのファイルを参照します。リソースに IAM ポリシーが設定されている場合、このコマンドを実行すると、ポリシー全体がポリシー ファイル内のポリシーで置き換わります。IAM ポリシー ファイルの詳細については、Cloud IAM ポリシーをご覧ください。

IAM ポリシーを設定したら、IAM ポリシー バインドの追加または削除を行い、ポリシーを更新できます。ポリシーを更新するときに set-iam-policy を実行する必要はありません。

インスタンス

インスタンスの IAM ポリシーを設定するには、次のコマンドを実行します。

gcloud spanner instances set-iam-policy INSTANCE_ID POLICY_FILE

たとえば、次のコマンドは、myPolicy.json に定義されている IAM ポリシーを設定します。

gcloud spanner instances set-iam-policy test-instance myPolicy.json

データベース

インスタンス INSTANCE_ID のデータベース DATABASE_ID の IAM ポリシーを設定するには、次のコマンドを実行します。

gcloud spanner databases set-iam-policy DATABASE_ID --instance=INSTANCE_ID POLICY_FILE

たとえば、次のコマンドは、myPolicy.json に定義されている IAM ポリシーを設定します。

gcloud spanner databases set-iam-policy example-db --instance=test-instance myPolicy.json

IAM ポリシー バインドの追加

IAM ポリシー バインドを追加すると、特定のユーザー、グループまたはサービスに権限を付与し、IAM ポリシーを更新できます。それぞれの IAM ポリシー バインドでメンバー(Google アカウントなど)を指定し、役割という権限のバンドル(databaseAdmin など)をメンバーに付与します。Cloud Spanner リソースに対するアクセスを制御する役割の一覧については、Cloud Spanner のアクセス制御をご覧ください。

以下のコマンドでは、databaseAdmin 権限を email1@gmail.com に付与しています。これにより、email1@gmail.com に関連する Google アカウントに databaseAdmin 役割を付与するポリシー バインドが追加されます。

インスタンス

インスタンスにポリシー バインドを追加できます。たとえば、アカウントに権限を付与するには、次のコマンドを実行します。

gcloud spanner instances add-iam-policy-binding test-instance --member="user:email1@gmail.com" \
    --role="roles/spanner.databaseAdmin"

データベース

データベースにポリシー バインドを追加できます。たとえば、アカウントに権限を付与するには、次のコマンドを実行します。

gcloud spanner databases add-iam-policy-binding example-db --instance=test-instance \
    --member="user:email1@gmail.com" --role="roles/spanner.databaseAdmin"

IAM ポリシー バインドの削除

IAM ポリシー バインドを削除すると、リソースが使用する IAM ポリシーから権限のセットが削除されます。

それぞれの IAM ポリシー バインドでメンバー(Google アカウントなど)を指定し、役割という権限のバンドル(databaseAdmin など)をメンバーに付与します。バインドを削除すると、バインドに指定されているメンバーから権限のバンドルが削除されます。Cloud Spanner リソースに対するアクセスを制御する役割の一覧については、Cloud Spanner のアクセス制御をご覧ください。

以下のコマンドは、email1@gmail.com から databaseAdmin 権限を削除します。つまり、これらのコマンドは email1@gmail.com に関連する Google アカウントに databaseAdmin 役割を付与するポリシー バインドを削除し、IAM ポリシーを更新します。これは、この IAM ポリシーを使用するリソースの権限にのみ影響を及ぼします。

インスタンス

インスタンスからポリシー バインドを削除できます。たとえば、アカウントから権限を削除するには、次のコマンドを実行します。

gcloud spanner instances remove-iam-policy-binding test-instance \
    --member="user:email1@gmail.com" --role="roles/spanner.databaseAdmin"

データベース

データベースからポリシー バインドを削除できます。たとえば、アカウントから権限を削除するには、次のコマンドを実行します。

gcloud spanner databases remove-iam-policy-binding example-db --instance=test-instance \
    --member="user:email1@gmail.com" --role="roles/spanner.databaseAdmin"

セッションの管理

クライアント ライブラリを作成する場合や、REST API を使用する場合は、アクティブなセッション数を確認しておくと便利です。詳しくは、セッションをご覧ください。

アクティブなセッションの一覧取得

データベースのアクティブなすべてのセッションを一覧表示するには、次のコマンドを実行します。

gcloud spanner databases sessions list --database=DATABASE_ID --instance=INSTANCE_ID

セッションの削除

セッションを削除するには、次のコマンドを実行します。

gcloud spanner databases sessions delete SESSION_ID --database=DATABASE_ID --instance=INSTANCE_ID

次のステップ

gcloud コマンドライン ツールを使用して、テーブル内の行を挿入、更新、削除する方法を学習する。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Cloud Spanner のドキュメント