AWS Lambda でリソースベースのポリシーを使用して、AWS のサービスに許可を付与するにはどうすればよいですか?
最終更新日: 2021 年 9 月 27 日
AWS Lambda のリソースベースのポリシーを使用して、AWS のサービスに許可を付与したいと考えています。
簡単な説明
AWS Command Line Interface (AWS CLI) と Lambda で、リソースベースのポリシーを使用して AWS のサービスに許可を付与できます。詳細については、AWS Lambda のリソースベースのポリシーを使用するを参照してください。
解決方法
次の例では、EventBridge のための許可を追加し、Lambda 関数がリソースベースのポリシーを呼び出すことを検証します。
注意:
- AWS CLI コマンドの実行時にエラーが発生した場合は、ご利用中の AWS CLI の最新バージョンを使用していることを確認してください。
- your-event と your-function をお客様の変数に置き換え、your-region をお客様の AWS リージョンに置き換えます。
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 クォータを参照してください。