嘗試將 Amazon RDS Proxy 連接至 AWS Lambda 函數時,我收到下列錯誤訊息: 「Lambda 無法更新函數的執行角色」。如何解決此錯誤?
簡短說明
基於下列原因,Lambda 可能會傳回 Lambda 無法更新函數的執行角色錯誤:
- Lambda 執行角色具有多個與其相關聯的受信任實體。
- Lambda 函數的執行角色連接 10 個政策。
- 已登入 AWS Identity and Access Management (IAM) 的使用者沒有 "CreatePolicy" 和 "AttachRolePolicy" 權限。
解決方法
確認 Lambda 函數的執行角色只有一個與其相關聯的受信任實體
檢閱函數的執行角色,然後確認只有 Lambda 服務 (lambda.amazonaws.com) 可以擔任該角色。
**注意:**若要具有其他服務擔任的相同角色,請建立新角色並將那些服務設定為受信任實體。
驗證 Lambda 函數的執行角色沒有連接 10 個政策
檢閱函數的執行角色以確定是否連接 10 個政策。如果該角色的確連接 10 個政策,則
建立單一的自訂政策以取代現有的政策。
**注意:**如果執行角色連接了 10 個政策,則 Lambda 函數無法建立並連接必要的 RDS Proxy 政策至該角色。
範例 RDS Proxy 政策
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "rds-db:connect",
"Resource": "Proxy ARN"
}
]
}
確認已登入的 IAM 使用者擁有 "CreatePolicy" 和 "AttachRolePolicy" 權限
檢閱已紀錄 IAM 使用者的 IAM 政策,然後確認該政策包括 "CreatePolicy" 和 "AttachRolePolicy" 權限。如果使用者的政策不包括必要權限,請授予使用者 "CreatePolicy" 和 "AttachRolePolicy" 權限。
**注意:**如果已登入的 IAM 使用者沒有必要權限,Lambda 主控台即會顯示下列一或兩個錯誤:
- 「使用者 <user-arn> 未授權在 resource: policy 執行:iam:CreatePolicy <policy-name>」
- 「使用者 <user-arn> 未授權在 resource: role 執行:iam:AttachRolePolicy <role-name>」