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

上次更新日期:2021 年 9 月 27 日

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

簡短描述

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

解決方案

下列範例新增 Amazon CloudWatch 事件的權限,並驗證 Lambda 函數是否會叫用以資源為基礎的政策。

注意:

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

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

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 函數沒有設定以資源為基礎的政策。

為 CloudWatch 事件新增權限

執行 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 配額


此文章是否有幫助?


您是否需要帳單或技術支援?