本頁面提供操作說明,說明如何使用 Memorystore for Redis Cluster 的 IAM 驗證功能執行常見工作。如要進一步瞭解這項功能,請參閱「關於 IAM 驗證」。
建立使用 IAM 驗證的執行個體
如要建立使用 IAM 驗證的 Memorystore for Redis Cluster 執行個體,請執行 create
指令:
gcloud redis clusters create INSTANCE_ID --region=REGION_ID --network=NETWORK --node-type=NODE_TYPE --shard-count=SHARD_COUNT --auth-mode=iam-auth
更改下列內容:
INSTANCE_ID 是要建立的 Memorystore for Redis Cluster 執行個體 ID。執行個體 ID 的長度必須介於 1 至 63 個字元之間,而且只能使用小寫英文字母、數字或連字號。但開頭必須是小寫英文字母,結尾則須為小寫英文字母或數字。
REGION_ID 是您希望執行個體所在的地區。
NETWORK 是用於建立執行個體的網路。格式必須為
projects/NETWORK_PROJECT_ID/global/networks/NETWORK_ID
。這裡使用的網路 ID 必須與服務連線政策使用的網路 ID 相符。否則create
作業會失敗。詳情請參閱「網路」。NODE_TYPE 是您選擇的節點類型。可接受的值如下:
redis-shared-core-nano
redis-standard-small
redis-highmem-medium
redis-highmem-xlarge
SHARD_COUNT 決定執行個體中的 shard 數量。資料分割數量會決定儲存叢集資料的總記憶體容量。如要進一步瞭解叢集規格,請參閱叢集和節點規格。
授予 IAM 驗證的權限
如要授予 IAM 存取權,請按照授予 IAM 角色的操作說明,將 roles/redis.dbConnectionUser
角色授予主體。
根據預設,授予主體 roles/redis.dbConnectionUser
角色後,主體就能存取專案中的所有執行個體。
為執行個體建立有限的 IAM 管理員角色
您可能想建立可修改執行個體連線 IAM 權限的角色,但不想授予完整的 IAM 管理員存取權。如要這麼做,請為 `roles/redis.dbConnectionUser
` 角色建立有限的 IAM 管理員。詳情請參閱「建立有限制的 IAM 管理員」。
連線至使用 IAM 驗證的執行個體
如果沒有與 Redis 叢集使用相同授權網路的 Compute Engine VM,請按照「快速入門導覽課程:使用 Linux VM」建立及連線至 VM。
為專案啟用 Cloud Platform API 範圍。如要進一步瞭解如何啟用這個存取權範圍,請參閱「附加服務帳戶並更新存取權範圍」。如要進一步瞭解這個範圍的最佳做法,請參閱「範圍最佳做法」。
為專案啟用 Memorystore for Redis API。
在 Compute Engine VM 上安裝 redis-cli,方法是在 Compute Engine SSH 終端機中執行下列指令:
sudo apt-get install redis-tools
執行下列指令,取得 IAM 使用者的存取權權杖:
gcloud auth print-access-token
連線至執行個體的探索端點:
redis-cli -h NETWORK_ADDRESS -p PORT -a ACCESS_TOKEN -c
更改下列內容:
執行
CLUSTER SHARDS
指令,查看叢集拓撲。記下其中一個節點的 IP 位址和通訊埠號碼。如要使用
redis-cli
驗證並連線至節點,請使用下列指令:redis-cli -h NODE_IP_ADDRESS -p NODE_PORT -a ACCESS_TOKEN -c
更改下列內容:
- NODE_IP_ADDRESS:您在上一步中找到的節點 IP 位址
- NODE_PORT:您在上一個步驟中找到的節點通訊埠號碼
- ACCESS_TOKEN:您在先前步驟中擷取的 IAM 存取權杖
如要確認您已通過節點的連線驗證,請執行 Redis
SET
和GET
指令。刪除用來連線至 Redis 叢集的 Compute Engine VM。以免 Cloud Billing 帳戶產生費用。
自動擷取存取權杖
(選用) 如果您還沒有帳戶,請為應用程式建立服務帳戶 (請參閱「建立及管理服務帳戶」)。
gcloud iam service-accounts create SA_NAME \ --description="DESCRIPTION" \ --display-name="DISPLAY_NAME"
更改下列內容:
- SA_NAME 是服務帳戶的名稱。
- DESCRIPTION 是服務帳戶的選填說明。
- DISPLAY_NAME 是要顯示在Google Cloud 控制台的服務帳戶名稱。
在專案中授予服務帳戶
redis.dbConnectionUser
權限。gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role="ROLE_NAME"
更改下列內容:
- PROJECT_ID:專案 ID
- SA_NAME:服務帳戶名稱
- ROLE_NAME:角色名稱,例如
redis.dbConnectionUser
連線至採用 IAM 驗證機制的執行個體時,可使用的程式碼範例
您可以查看程式碼範例,瞭解如何使用熱門的用戶端程式庫驗證應用程式。此外,您也可以瞭解如何使用這個程式碼範例,連線至採用 IAM 驗證機制的執行個體。
排解 IAM 驗證的錯誤訊息
錯誤訊息 | 建議做法 | 說明 |
---|---|---|
|
確認提供給 Memorystore for Redis Cluster 伺服器的使用者名稱和存取權杖 | 提供的使用者名稱或存取權杖無效。系統只支援「default」這個使用者名稱。如果應用程式已使用「預設」使用者名稱,請確認存取權杖未過期,且是按照「連線至使用 IAM 驗證的執行個體」中的操作說明擷取。如果 IAM 權限最近才變更,可能需要幾分鐘才會生效。 |
|
確認應用程式已設定為向 Memorystore for Redis Cluster 伺服器提供 IAM 存取權杖 | 應用程式未提供存取權杖給 Memorystore for Redis Cluster 伺服器。按照「連線至使用 IAM 驗證的執行個體」一文中的操作說明,確認應用程式已設定為提供存取權杖。 |
|
以指數輪詢方式重試 | IAM 後端過載,並向 Memorystore for Redis Cluster 伺服器傳回配額超出錯誤。應用程式應嘗試以指數輪詢方式重試,避免連線進一步失敗。 |
|
以指數輪詢方式重試 | IAM 後端將暫時性錯誤傳回給 Memorystore for Redis Cluster 伺服器。應用程式應嘗試以指數輪詢方式重試,避免連線進一步失敗。 |