AWS Lambda でリソースベースのポリシーを使用して、AWS のサービスに許可を付与するにはどうすればよいですか?

所要時間2分
0

AWS Lambda のリソースベースのポリシーを使用して、AWS のサービスに許可を付与したいと考えています。

簡単な説明

AWS Command Line Interface (AWS CLI) と Lambda で、リソースベースのポリシーを使用して AWS のサービスに許可を付与できます。詳細については、AWS Lambda のリソースベースのポリシーを使用するを参照してください。

解決方法

次の例では、EventBridge のための許可を追加し、Lambda 関数がリソースベースのポリシーを呼び出すことを検証します。

注意:

Lambda 関数にリソースポリシーが設定されていないことを確認する

EventBridge などの一部の AWS のサービスは、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 の「The final policy size is bigger than the limit」エラーを解決する方法を教えてください

AWS公式
AWS公式更新しました 3年前
コメントはありません