如何將以資源為基礎的政策與 AWS Lambda 結合使用來授予對 AWS 服務的許可?

2 分的閱讀內容
0

我想要對 AWS Lambda 使用以資源為基礎的政策來授予對 AWS 服務的許可?

簡短描述

您可以搭配使用 AWS Command Line Interface (AWS CLI) 和 Lambda,來使用以資源為基礎的政策授與 AWS 服務的許可。如需詳細資訊,請參閱將資源型政策用於 AWS Lambda

解決方案

下列範例新增 EventBridge 的權限,並驗證 Lambda 函數是否會叫用資源型政策。

備註:

確認 Lambda 函數沒有已設定的資源政策

某些 AWS 服務 (例如 EventBridge) 會為 Lambda 函數建立資源型政策。使用類似下列內容的 AWS CLI 命令 get-policy,確認資源型政策沒有 EventBridge 的權限:

aws lambda get-policy --region your-region --function-name your-function

An error occurred (ResourceNotFoundException) when calling the GetPolicy operation: The resource you requested does not exist.

此錯誤會確認 Lambda 函數並未設定資源型政策。

新增 EventBridge 的許可

執行 AWS CLI 命令 add-permission 以叫用類似下列內容的 Lambda 函數:

aws lambda add-permission --region your-region --function-name your-function --statement-id "your-event-permission" --action "lambda:InvokeFunction" --principal "events.amazonaws.com" --source-arn "arn:aws:events:your-region:xxxxxxxxxxxxx:rule/your-event"

{
    "Statement": "{\"Sid\":\"your-event-permission\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"events.amazonaws.com\"},\"Action\":\"lambda:InvokeFunction\",\"Resource\":\"arn:aws:lambda:your-region:xxxxxxxxxxxxx:function:your-function\",\"Condition\":{\"ArnLike\":{\"AWS:SourceArn\":\"arn:aws:events:your-region:xxxxxxxxxxxxx:rule/your-event\"}}}"
}

確認 Lambda 函數以資源為基礎政策的權限

再次執行 AWS CLI 命令 get-policy,如下所示:

aws lambda get-policy --region your-region --function-name your-function

{
  "Version": "2012-10-17",
  "Id": "default",
  "Statement": [
    {
      "Sid": "your-event-permission",
      "Effect": "Allow",
      "Principal": {
        "Service": "events.amazonaws.com"
      },
      "Action": "lambda:InvokeFunction",
      "Resource": "arn:aws:lambda:your-region:xxxxxxxxxxxxx:function:your-function",
      "Condition": {
        "ArnLike": {
          "AWS:SourceArn": "arn:aws:events:your-region:xxxxxxxxxxxxx:rule/your-event"
        }
      }
    }
  ]
}

(選擇性) 移除 Lambda 函數資源型政策的權限

如果您不再需要 AWS 服務來觸發 Lambda 函數,則可以執行類似下列內容的 AWS CLI 命令 remove-permission

aws lambda remove-permission --region your-region --function-name your-function --statement-id "your-event-permission"

注意: Lambda 函數以資源為基礎的政策配額是 20 KB。如需詳細資訊,請參閱 Lambda 配額


相關資訊

如何解決來自 Lambda 的錯誤「最終政策大小大於限值」?

AWS 官方
AWS 官方已更新 3 年前