Amazon S3 Domain | AWS Network
S3の静的ウェブサイトホスティングをRoute53のドメインで公開する
⚠️ セキュリティ上の注意:本手順はバケットポリシーで
"Principal": "*"を指定し、バケット内オブジェクトを誰でも読み取り可能にする構成です。
- 2023年4月以降、新規作成するS3バケットはデフォルトで「パブリックアクセスをすべてブロック」が有効になっています。本手順を実施する場合は、当該設定を意図的に無効化する必要があり、対象バケットに機密情報を置かないことを必ず確認してください。
- この構成はS3の静的ウェブサイトエンドポイントを直接使用するためHTTPS化ができません。HTTPSで公開したい場合や、より安全にオリジンを非公開のまま配信したい場合は、S3を非公開のままにしCloudFront+OAC(Origin Access Control)経由で配信する構成を推奨します。
操作
- S3でバケット作成
- Route53のAレコードへ設定
1. S3でバケット作成
S3でバケットを作成します。
独自ドメインでホストするときはホスト名と同じにします。
例)
- example.com => バケット名もexample.com
- s3.example.com => バケット名もs3.example.com
(1) アクセス許可 -> バケットポリシー変更
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::example.com/*"
}
]
}
※ Resourceのバケット名(上記ではexample.com)は実際のバケット名に置き換えること。
ウェブで公開を選択
2. Route53のAレコードへ設定
AレコードでAliasを選ぶとドロップダウンメニューからバケットのエンドポイントが選択できます。
AレコードのNameとバケット名を同じにしないとドロップダウンメニューで選択できません。
S3バケットの公開(バケットポリシーの汎用テンプレート)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::/*"
}
]
}
※ ``は実際のバケット名に置き換えること(arn:aws:s3::: に続けてバケット名を指定する)。
ref. https://awesome-linus.com/2020/02/04/s3-bucket-public-access/