このページでは、Memorystore for Valkey の IAM 認証機能の一般的なタスクに関する手順について説明します。この機能の詳細については、IAM 認証についてをご覧ください。
IAM 認証を使用してインスタンスを作成する
IAM 認証を使用する Memorystore for Valkey インスタンスを作成するには、create
コマンドを実行します。
gcloud memorystore instances create INSTANCE_ID --region=REGION_ID --network=NETWORK --node-type=NODE_TYPE --shard-count=SHARD_COUNT --auth-mode=iam-auth
以下を置き換えます。
INSTANCE_ID は、作成する Memorystore for Valkey インスタンスの ID です。インスタンス ID は 1〜63 文字にする必要があり、小文字、数字、ハイフンのみ使用できます。先頭は英小文字に、末尾は英小文字または数字にする必要があります。
REGION_ID は、インスタンスを配置するリージョンです。
NETWORK は、インスタンスの作成に使用されるネットワークです。形式は
projects/NETWORK_PROJECT_ID/global/networks/NETWORK_ID
にする必要があります。ここで使用するネットワーク ID は、サービス接続ポリシーで使用するネットワーク ID と一致する必要があります。それ以外の場合、create
オペレーションは失敗します。 詳しくは、ネットワーキングをご覧ください。NODE_TYPE は、選択したノードタイプです。次の値が利用できます。
shared-core-nano
standard-small
highmem-medium
highmem-xlarge
SHARD_COUNT によってインスタンス内のシャードの数が決定されます。シャード数によって、インスタンス データを保存するための合計メモリ容量が決定されます。インスタンス仕様の詳細については、インスタンスとノードの仕様をご覧ください。
IAM 認証の権限を付与する
IAM アクセス権を付与するには、IAM ロールを付与する手順に沿って、プリンシパルに roles/memorystore.dbConnectionUser
ロールを付与します。
デフォルトでは、プリンシパルに roles/memorystore.dbConnectionUser
ロールを付与すると、プリンシパルはプロジェクト内のすべてのインスタンスにアクセスできます。
インスタンスに対して制限付き IAM 管理者ロールを作成する
完全な IAM 管理者アクセス権を付与せずに、インスタンス接続の IAM 権限を変更できるロールを作成することもできます。これを行うには、roles/memorystore.dbConnectionUser
ロールの制限付き IAM 管理者を作成します。詳細については、制限付き IAM 管理者を作成するをご覧ください。
IAM 認証を使用するインスタンスに接続する
Valkey インスタンスと同じ承認済みネットワークを使用する Compute Engine VM がまだない場合は、作成してから、Linux VM の使用に関するクイックスタートに沿って接続します。
プロジェクトで Cloud Platform API スコープを有効にします。このアクセス スコープを有効にする方法については、サービス アカウントを接続してアクセス スコープを更新するをご覧ください。このスコープのベスト プラクティスの詳細については、スコープのベスト プラクティスをご覧ください。
プロジェクトで Memorystore for Valkey API を有効にします。
Valkey をインストールするの手順に沿って、
valkey-cli
を Compute Engine VM にインストールします。次のコマンドを実行して、IAM ユーザーのアクセス トークンを取得します。
gcloud auth print-access-token
インスタンスの検出エンドポイントに接続します。
valkey-cli -h NETWORK_ADDRESS -p PORT -a ACCESS_TOKEN -c
以下を置き換えます。
NETWORK_ADDRESS は、インスタンスのネットワーク アドレスです。ネットワーク アドレスを表示するには、インスタンス情報を表示するをご覧ください。
PORT はインスタンスのポート番号です。ポート番号を表示するには、インスタンス情報を表示するをご覧ください。
ACCESS_TOKEN は、前の手順で取得した IAM アクセス トークンです。
CLUSTER SHARDS
コマンドを実行して、ノード トポロジを表示します。ノードの IP アドレスとポート番号のいずれかをメモします。次のコマンドを実行して、選択したノードに接続します。
valkey-cli -h NODE_IP_ADDRESS -p NODE_PORT -a ACCESS_TOKEN -c
以下を置き換えます。
- NODE_IP_ADDRESS は、前のステップで確認したノードの IP アドレスです。
- NODE_PORT は、前のステップで確認したノードのポート番号です。
Valkey の
SET
とGET
のコマンドを実行して、インスタンスのノードに対する認証済み接続が確立されたことを確認します。Valkey インスタンスへの接続をテストしたら、Valkey インスタンスへの接続に使用した Compute Engine VM を削除することを検討してください。そうすることで、Cloud 請求先アカウントへの課金を回避できます。
次のコマンドを実行して valkey-cli を使用し、認証を行いインスタンスに接続します。変数は適切な値に置き換えます。
valkey-cli -h NETWORK_ADDRESS -p PORT -a ACCESS_TOKEN -c
以下を置き換えます。
NETWORK_ADDRESS は、インスタンスのネットワーク アドレスです。ネットワーク アドレスを表示するには、インスタンス情報を表示するをご覧ください。
PORT はインスタンスのポート番号です。ポート番号を表示するには、インスタンス情報を表示するをご覧ください。
ACCESS_TOKEN は、前の手順で取得した IAM アクセス トークンです。
Valkey の
SET
とGET
のコマンドを実行して、インスタンスに対する認証済み接続が確立されたことを確認します。Valkey インスタンスへの接続をテストしたら、Valkey インスタンスへの接続に使用した Compute Engine VM を削除することを検討してください。そうすることで、Cloud 請求先アカウントへの課金を回避できます。
アクセス トークンの取得を自動化する
アクセス トークンの有効期限は短いため、アクセス トークンは簡単にハードコードできません。そのため、アプリケーションでアクセス トークンの取得を自動化することをおすすめします。
(省略可)まだ作成していない場合は、アプリケーションのサービス アカウントを作成します(サービス アカウントの作成と管理を参照)。
gcloud iam service-accounts create SA_NAME \ --description="DESCRIPTION" \ --display-name="DISPLAY_NAME"
以下を置き換えます。
- SA_NAME はサービス アカウントの名前です。
- DESCRIPTION は、サービス アカウントの説明です(省略可能)。
- DISPLAY_NAME は、Google Cloud コンソールに表示するサービス アカウント名です。
サービス アカウントにプロジェクトに対する
memorystore.dbConnectionUser
権限を付与します。gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role="memorystore.dbConnectionUser"
以下を置き換えます。
- PROJECT_ID は、プロジェクト ID です。
- SA_NAME はサービス アカウントの名前です。
- ROLE_NAME はロール名です(
roles/compute.osLogin
など)。
指定されたサービス アカウントとしてアプリケーションを認証します。詳細については、サービス アカウントをご覧ください。
一般的なクライアント ライブラリを使用してアプリケーションを認証する方法を示すコードサンプルについては、クライアント ライブラリのコードサンプルをご覧ください。
IAM 認証を使用するインスタンスに接続するためのコードサンプル
IAM 認証を使用するインスタンスに接続するようにクライアント ライブラリを設定する方法を示す Valkey 互換のコードサンプルについては、IAM 認証と転送中の暗号化の両方のコードサンプルをご覧ください。
IAM 認証に関するエラー メッセージのトラブルシューティング
エラー メッセージ | 推奨される対処方法 | 説明 |
---|---|---|
|
Memorystore for Valkey サーバーに提供されたユーザー名とアクセス トークンを確認する | 指定されたユーザー名またはアクセス トークンが無効です。サポートされているユーザー名は「default」のみです。アプリケーションですでに「default」ユーザー名を使用している場合は、アクセス トークンが期限切れになっておらず、IAM 認証を使用するインスタンスに接続するの手順に沿って取得されていることを確認します。IAM 権限が最近変更された場合、反映されるまでに数分かかることがあります。 |
|
アプリケーションが Memorystore for Valkey サーバーに IAM アクセス トークンを提供するように構成されていることを確認する | アプリケーションが Memorystore for Valkey サーバーにアクセス トークンを提供していません。IAM 認証を使用するインスタンスに接続するの手順に沿って、アクセス トークンを提供するようにアプリケーションが構成されていることを確認します。 |
|
指数バックオフを使用して再試行する | IAM バックエンドが過負荷になり、割り当て超過エラーが Memorystore for Valkey サーバーに返されました。アプリケーションは、指数バックオフを使用してこのエラーの再試行を試み、接続障害の再発を防ぐ必要があります。 |
|
指数バックオフを使用して再試行する | IAM バックエンドが Memorystore for Valkey サーバーに一時的なエラーを返しました。アプリケーションは、指数バックオフを使用してこのエラーの再試行を試み、接続障害の再発を防ぐ必要があります。 |