他アカウントのLambdaからS3バケットのアクセスを許可する

2019-08-10

前提条件

  • S3バケットに対して自アカウントのLambdaはアクセスできるが、他アカウントのLambdaはアクセスができないという場合の対処方法です。
  • 他アカウントのLambdaには、あらかじめ適切なIAMポリシー/ロールが割り当てられていることが前提です。IAMポリシーの書き方は、下記記事を参照ください。
  • 今回は、S3バケットのバケットポリシーで対応しています。
  • 本記事に記載のバケットポリシー以外に、S3バケットに他アカウントからのアクセスを許可するためのいくつかの設定があります。下記記事を参考にしてください。

設定方法

  • 以下、S3バケットのバケットポリシーに記載するサンプルです。”Principal”にLambdaに適用するロールを指定します。”111111111111″は、S3バケットのアカウントではなく、Lambdaが配置されている他アカウントの番号です。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Access-to-specific-lambda-only",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111111111111:role/niikawa-lmd-role01"
            },
            "Action": [
                "s3:List*",
                "s3:Get*"
            ],
            "Resource": "arn:aws:s3:::s3-bucket-name/*"
        }
    ]
}