【AWS】 Lambda関数からS3バケットへのアクセスを許可するバケットポリシー
本記事では、Lambda関数からS3バケットへのアクセスを許可するバケットポリシーついて、具体例付きで解説します。

前提
リソースの名称は下記とする。
・Lambda関数:test-lambda-function
・Lambdaの実行ロール:test-execution-role
・S3バケット:test-bucket
また、今回はLambda以外のアクセスは拒否することとする。
説明
Lambda関数からS3バケットへアクセスする際に、Lambda 関数の実行ロールからバケットへのアクセスが許可されている必要がある。
そのため、下記のポリシーのCondition句のArnNotLike条件に、Lambda関数の実行ロールのARNを記載する。
実際のバケットポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyOtherThanLambda",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::test-bucket",
"arn:aws:s3:::test-bucket/*"
],
"Condition": {
"ArnNotLike": {
"aws:PrincipalArn": [
"arn:aws:iam::<Account ID>:role/test-execution-role",
"arn:aws:lambda:ap-northeast-1:<Account ID>:function:test-function"
]
}
}
}
]
}