S3のパブリックアクセスブロックを有効にしたい時、S3コンテンツのアクセスはCloudFront経由でアクセスする必要があります。ここではその設定方法をまとめてみます。
概要
前提
Route 53のドメインが作成されていること。
手順
- S3バケット作成
- ディストリビューションの作成
- オリジン
- キャッシュビヘイビア
- 設定
S3バケット作成
ディストリビューションの作成
オリジン
- Origin domainは先ほど作ったAmazon S3バケットから選ぶ
- オリジンアクセスを「Lagacy access identities」にして、バケットポリシーを自動更新にする
オリジンアクセスアイデンティティがなければ、「新しいOAIを作成」で作る、それでS3バケットのバケットポリシーが更新される
{
"Version": "2008-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity AAAAAAAAAAA"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::sample/*"
}
]
}
キャッシュビヘイビア
ビューワープロトコルポリシーを設定
キャッシュキーとオリジンリクエスト
S3バケットのCORSの設定も必要です。
[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"GET"
],
"AllowedOrigins": [
"*"
],
"ExposeHeaders": []
}
]