【AWS】 Lambda関数からS3バケットへのアクセスを許可するバケットポリシー

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

前提

リソースの名称は下記とする。

・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"
                    ]
                }
            }
        }
    ]
}