S3
特になし 通常通り
publicアクセスとかは無し
Cloud Front
CNAMEなどの設定は省略
Origin設定
-
Restrict Bucket Access
をYes
に設定 -
Origin Access Identity
でCreate a New Identity
とすると、新規にオリジンアクセスアイデンティティが作成される -
Grant Read Permissions on Bucket
をYes, Update Bucket Policy
とすると、S3バケットのバケットポリシーが自動で更新される
Behavior設定
-
Restrict Viewer Access
をYes
にする -
Trusted Signers
でSelf
にチェック
カスタムPolicy
{
"Statement": [
{
"Resource": "https://hogehoge.com/*",
"Condition": {
"DateLessThan": {
"AWS:EpochTime": 1561417200
}
}
}
]
}
認証に必要なCookie
CloudFront-Policy
cat policy.json | openssl base64 | tr '+=/' '-_~'
CloudFront-Signature
cat policy.json | openssl sha1 -sign pk.pem | openssl base64 | tr '+=/' '-_~'
CloudFront-Expires
Epoch Time Format
CloudFront-Key-Pair-Id
Cloud Frontの認証キーID(ルートアカウントでしか作れない)
Reourceにワイルドカード使う場合は、カスタムポリシーを使う
CORS設定
Behaviors
にて、
Cache Based on Selected Request Headers
をWhitelist
Whitelist Headers
にOrigin``Access-Control-Request-Headers``Access-Control-Request-Method
をAdd
S3のアクセス権限にて
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>https://hogehoge.com</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
とかって感じで保存
Test
curl -H 'Cookie: CloudFront-Expires=1741360031; CloudFront-Policy=; CloudFront-Signature=; CloudFront-Key-Pair-Id=XXXXXX' https://hogehoge.com/hoge/sample.html