S3バケットのcurlアクセス(VPCE単位)を許可する
前提条件
- S3バケットに対してEC2のaws cliからはアクセスできるが、EC2からのcurlアクセスができないという場合(下記エラーメッセージのサンプル)の対処方法です。
An error occurred (AccessDenied) when calling the ListObjectsV2 operation: Access Denied
- IAMポリシー/ロールが適切であっても、aws cliしか効果がありません。curlなど別のコマンドでのアクセスに備える場合は、本記事に記載のようにS3バケットポリシーで対応します。
- EC2およびLambdaには、あらかじめ適切なIAMポリシー/ロールが割り当てられていることが前提です。IAMポリシーの書き方は、下記記事を参照ください。
- 今回は、S3バケットのバケットポリシーで対応しています。
設定方法(VPC Endpointを許可する)
- 以下、S3バケットのバケットポリシーに記載するサンプルです。"StringEquals"にS3に対するVPC Endpointのidを指定します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Access-to-specific-VPCE-only",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:List*",
"s3:Get*"
],
"Resource": "arn:aws:s3:::s3-bucket-name/*",
"Condition": {
"StringEquals": {
"aws:sourceVpce": "vpce-00aaaa1111bbbb222"
}
}
}
]
}