Amazon CloudFrontによるコンテンツ配信(originのs3にアクセス制限を付ける編)【cloudpack 大阪 BLOG】
前回はどこからでも参照可能なs3バケットをオリジンにしました。
そのため、s3から直接画像を取得することも可能でした。
今回は、CloudFrontからのみアクセスするように制限を掛けたいと思います。
イメージは以下です。
今回も、画像ファイルのみをCloudFrontより取得するようにします。
s3に画像をアップロード
バケットを作って、画像ファイルをアップロードします。
マネジメントコンソールにて、s3にバケットを作成して、画像をアップロードします。
今回は、バケットポリシーを設定しません。
なので、この時点では画像にアクセスできません。
CloudFrontの設定
ディストリビューションは前回使ったものを使います。
まずは、Originを作成します。
Origin Domain Nameは新たに作ったポリシーなしのバケットを選択します。
選択後、Restrict Bucket Accessの選択オプションボタンが現れます。
「Yes」を選びましょう。
未生成の場合は、Identifyを生成します。作成済みの場合は使い回しOKです。
Grant Read Permissions on Bucketは、「Yes, Update Bucket Policy」を選びます。
すると、自動的にs3のバケットに以下のようなポリシーが追加されます。
※すでに何らかのバケットポリシーを設定していた場合、追加されません。
{
"Version": "2008-10-17", "Id": "PolicyForCloudFrontPrivateContent", "Statement": [ { "Sid": "1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity <Access ID>" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::<backet名>/*" } ] }
これで、s3にCloudFrontからアクセス可能なポリシーが追加されました。
次に、追加したOriginに対応するBehaviorを追加します。
Patternは取り敢えず、「*」としておきます。
以上で、s3への直アクセスを禁止した、s3オブジェクトのCloudFront配信が可能となりました。