本頁面提供 Memorystore for Valkey 的 IAM 驗證功能常見工作相關說明。如要進一步瞭解這項功能,請參閱「關於身分與存取權管理 (IAM) 驗證」。
使用 IAM 驗證功能建立執行個體
如要為使用 IAM 驗證的 Valkey 例項建立 Memorystore,請執行 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建立及連線至 VM。
如要連線至執行個體,您必須為專案啟用下列存取權範圍和 API:
Cloud Platform API 範圍。如需啟用這個範圍的操作說明,請參閱「連結服務帳戶並更新存取範圍」一文。如要瞭解此存取權範圍的最佳做法,請參閱「範圍最佳做法」。
Memorystore for Valkey API。如要取得啟用 API 的連結,請按一下下方按鈕:
Memorystore for Valkey
請按照「安裝 Valkey」中的操作說明,在 Compute Engine VM 上安裝
valkey-cli
。執行下列指令,為 IAM 使用者取得存取權權杖:
gcloud auth print-access-token
連線至執行個體的探索端點:
valkey-cli -h NETWORK_ADDRESS -p PORT -a ACCESS_TOKEN -c
更改下列內容:
執行
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 Billing 帳戶收取費用。
請執行下列指令,使用 valkey-cli 驗證並連線至執行個體,並將變數替換為適當的值:
valkey-cli -h NETWORK_ADDRESS -p PORT -a ACCESS_TOKEN -c
更改下列內容:
執行 Valkey
SET
和GET
指令,確認您已與執行個體建立已驗證的連線。測試與 Valkey 執行個體的連線後,建議您考慮刪除用來連線至 Valkey 執行個體的 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 控制台中的服務帳戶名稱。
授予服務帳戶專案的
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 驗證機制的執行個體的程式碼範例
如要查看 Valkey 相容的程式碼範例,瞭解如何設定用戶端程式庫,以便連線至採用 IAM 驗證機制的執行個體,請參閱「IAM 驗證和傳輸中加密的程式碼範例」。
排解 IAM 驗證錯誤訊息
錯誤訊息 | 建議做法 | 說明 |
---|---|---|
|
確認提供給 Memorystore for Valkey 伺服器的使用者名稱和存取權杖 | 您提供的使用者名稱或存取權杖無效。系統僅支援「default」這個使用者名稱。如果應用程式已使用「預設」使用者名稱,請確認存取權存證未過期,並按照「連線至使用 IAM 驗證的執行個體」一文中的操作說明擷取存證。如果 IAM 權限最近才變更,可能需要幾分鐘的時間才能全面生效。 |
|
確認應用程式已設定為向 Memorystore for Valokey 伺服器提供 IAM 存取權權杖 | 應用程式未提供 Memorystore for Valkey 伺服器的存取權杖。請按照「連線至使用 IAM 驗證的執行個體」一文中的指示,確認應用程式已設定為提供存取權權杖。 |
|
以指數輪詢方式重試 | IAM 後端超載,並傳回超出配額的錯誤訊息給 Memorystore for Valkey 伺服器。應用程式應嘗試以指數輪詢重試此錯誤,以免發生更多連線失敗。 |
|
以指數輪詢方式重試 | IAM 後端傳回暫時性錯誤給 Memorystore for Valkey 伺服器。應用程式應嘗試以指數輪詢重試此錯誤,以免發生更多連線失敗。 |