最初に
S3にhtmlなどの資産をおき、CloudFrontで公開するという方法は一般的によく行われる方法。検索するとS3を公開する設定もよく見かけるが、S3を一般に公開せずに行う方がセキュリティ的に安心なので、Origin Access Identity(OAI)用いて設定する方法を自分の備忘録として、紹介する。 OAIについては、以下も参照ください。 docs.aws.amazon.com
AWSコンソール上での作業
CloudFrontのDistributionsの作成 Create Distribution→Get Startedの順にクリック

Origin Domain Nameを選択 S3のバケットが一覧となり、選択できる。
右下のCreate Distributionをクリック

Origin Access Identity(OAI)をCloudFrontのDistirbutionに紐づける Origin Domain Name and Pathの左側のチェックボックを選択し、Editをクリック

- Origin Access Identity(OAI)を新規に作る場合
Create a new Identityをクリックし、Commentはデフォルトのものでも構わないし、自分がわかりやすい名前を設定しても良い。 - すでにあるOrigin Access Identity(OAI)に紐づける場合
Use an Existing Identityをクリックし、Your Identitiesを選択。
- Origin Access Identity(OAI)を新規に作る場合
ブロックパブリックアクセスとバケットポリシーの修正
- S3のブロックパブリックアクセスとバケットポリシーを修正する。バケットポリシーは、以下のように設定する。Origin Access Identityは、Origin Access Identity で確認する。

{
"Version": "2012-10-17",
"Id": "Policy999999999999",
"Statement": [
{
"xxx": "xxxx"
},
{
"Sid": "2",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity ABCDEFG1234567"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::your-bucket-name/*"
}
]
}