Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
如何解決 Lambda 函數「KMS 例外狀況」權限錯誤?
我的 AWS Lambda 函式傳回了「KMS 例外狀況」、「您無權執行」或「不允許存取 KMS」錯誤。
解決方法
根據錯誤訊息更新您的 AWS Identity and Access Management (IAM) 身分的 AWS Key Management Service (KMS) 權限。如果 AWS KMS key 和 IAM 角色屬於不同的 AWS 帳戶,則必須同時更新 IAM 政策和 AWS KMS key 政策。
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
解決「KMS 例外狀況: UnrecognizedClientExceptionKMS 訊息」錯誤
當 Lambda 函式的執行角色遭到刪除,然後使用相同的名稱但不同的主體重新建立時,就會發生以下錯誤:
「呼叫調用 API 動作失敗,並顯示以下訊息: Lambda 無法解密環境變數,因為 KMS 存取遭拒。請檢查該函式的 AWS KMS key 設定。KMS 例外狀況: UnrecognizedClientExceptionKMS 訊息: 請求中包含的安全權杖無效。」
若要解決該錯誤,您必須重設函式執行角色的 AWS KMS 授權:
**注意:**建立和更新 Lambda 函式的 IAM 使用者必須擁有使用 AWS KMS key 的權限。
- 若要取得函式目前執行角色和 AWS KMS key 的 Amazon Resource Name (ARN),請執行下列 get-function-configuration 命令:
**注意:**將 yourFunctionName 替換為您的函式名稱。aws lambda get-function-configuration --function-name your-function-name - 若要重設 AWS KMS 授權,請執行下列其中一項操作:
若要將函式的執行角色更新為不同的暫存值,請執行下列 update-function-configuration 命令:
**注意:**將 temporaryValue 替換為暫存執行角色 ARN。aws lambda update-function-configuration --function-name yourFunctionName --role temporaryValue
若要將函式的執行角色更新回原始執行角色,請執行下列 update-function-configuration 命令:
**注意:**將 originalValue 替換為原始執行角色 ARN。aws lambda update-function-configuration --function-name yourFunctionName --role originalValue
-或-
若要將函式的 AWS KMS key 更新為不同的暫存值,請執行以下 update-function-configuration 命令:
**注意:**將 temporaryValue 替換為暫存 AWS KMS key ARN。若要使用預設服務金鑰,請將 kms-key-arn 參數設為 ""。aws lambda update-function-configuration --function-name yourFunctionName --kms-key-arn temporaryValue
若要將函式的 AWS KMS key 更新回原始 AWS KMS key ARN,請執行下列 update-function-configuration 命令:
**注意:**將 originalValue 替換為原始 AWS KMS key ARN。aws lambda update-function-configuration --function-name yourFunctionName --kms-key-arn originalValue
解決「KMS 例外狀況: AccessDeniedException KMS 訊息」錯誤
以下錯誤表示您的 IAM 身分沒有執行 kms:Decrypt API 動作所需的權限:
「Lambda 無法解密您的環境變數,因為 KMS 存取遭拒。請檢查您的 KMS 權限。KMS 例外狀況: AccessDeniedException KMS 訊息: 密文對應的客戶主金鑰不存在、在此區域中不存在,或者您沒有存取權。」
若要解決該錯誤,請將下列政策陳述式新增至您的 IAM 使用者或角色:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "your-KMS-key-arn" } ] }
**注意:**將 your-KMS-key-arn 替換為您的 AWS KMS key ARN。
如需指示,請參閱新增權限給使用者 (主控台)。
若要解決「您無權執行」錯誤
以下錯誤表示您的 IAM 身分沒有存取 AWS KMS key 所需的權限:
「您無權執行:kms:Encrypt。」
「您無權執行:kms:CreateGrant。」
「使用者:user-arn 無權對資源:* 執行:kms:ListAliases,並明確拒絕。」
**注意:**如果您使用預設金鑰政策,則您的 IAM 身分或函數的執行角色不需要 AWS KMS 權限。
若要解決這些類型的錯誤,請確認您的 IAM 使用者或角色是否具有執行下列 AWS KMS API 動作所需的權限:
如需指示,請參閱新增權限給使用者 (主控台)。
授與存取客戶自管 AWS KMS key 所需權限的 IAM 政策陳述式範例
{ "Version": "2012-10-17", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:CreateGrant" ], "Resource": "your-kms-key-arn" }, { "Sid": "statement2", "Effect": "Allow", "Action": "kms:ListAliases", "Resource": "*" } ] }
注意:****資源值必須為 "*"。kms:ListAliases 動作不支援低階權限。另外,請確認將 "your-kms-key-arn" 替換為您的 AWS KMS key ARN。
若要解決「不允許存取 KMS」錯誤
下列錯誤表示 IAM 實體沒有取得 AWS Secrets Manager 密碼的權限:
「不允許存取 KMS (服務: AWSSecretsManager;狀態代碼: 400;錯誤代碼: AccessDeniedException;請求 ID: 123a4bcd-56e7-89fg-hij0-1kl2m3456n78)」
確定您的 IAM 使用者或角色具有執行下列 AWS KMS API 動作所需的權限:
如需詳細資訊,請參閱如何解決在嘗試擷取加密的 Secret Manager 密碼後,出現 AWS KMS key 存取錯誤?
相關資訊
相關內容
- 已提問 3 個月前
- 已提問 1 年前
AWS 官方已更新 1 年前
