⛳
AWSのS3バケットのキー一覧取得時に権限不足になる、、、
AWSのS3バケットのキー一覧取得時に権限不足になる
ListBucket
に対する権限とGetObject
に対する権限に加えて、arn:aws:s3:::${Bucket}
の権限が必要です。
おそらく、arn:aws:s3:::${Bucket}/*
とだけ記述している可能性があります。
SAM テンプレートファイルでは、以下のように記述します。
Resources:
MyBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: "🐶🐶🐶"
AccessControl: Private
VersioningConfiguration:
Status: Enabled
MyLambdaRole:
Type: AWS::IAM::Role
Properties:
RoleName: "🐙🐙🐙"
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service: lambda.amazonaws.com
Action: sts:AssumeRole
Policies:
- PolicyName: "🐬🐬🐬"
PolicyDocument:
Version: '2012-10-17'
Statement:
- Sid: "🐸🐸🐸"
Effect: Allow
Action:
- s3:GetObject
- s3:PutObject
- s3:DeleteObject
- s3:ListBucket
Resource: !Sub "arn:aws:s3:::${MyBucket}/*"
- Sid: "🙀🙀🙀"
Effect: Allow
Action:
- s3:ListBucket
Resource: !Sub "arn:aws:s3:::${MyBucket}"
なぜ
バケットそのものに対する権限がないと、キー一覧を取得できないからです。
arn:aws:s3:::${MyBucket}/*
では、オブジェクトに対する権限を与えているだけで、バケットそのものに対する権限は与えていないため、キー一覧を取得できません。
Discussion