自分用メモ。
以前書いたShaka Packagerを使った配信環境を構築してみるにあたって、CDNを介した環境を作ってみたいと思った。
Shaka Packagerを使った配信環境はEC2で構築してみようと思ったので、オリジンはS3で、EdgeとしてCloud Frontを使ってみることに。
Cloud Frontを介したほうが安いのか、S3のみを使ったほうが安いかは調べてない。
やりたいこと
S3へのコンテンツへのアクセスをCloud Frontからのアクセスに限定して、S3のオブジェクトへの直接のアクセス (XXXX.s3-ap-northeast-1.amazonaws.com のURLでのアクセス) をさせないこともついでにやろうと思った、なぜか。
色々ドキュメントを探したところ、端的に書いていたのはこのページだった。
https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html
以下のページから辿った。
https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html
バケットの設定
バケットの「アクセス権限」 > 「ブロックパブリックアクセス」について。
今回、パブリックアクセスは許可しないので、全部ブロック(「パブリックアクセスを全てブロック」が「オン」の状態)で良い。
Cloud Frontの設定
- 先にDistributionを作成していたので、作成済みのDistributionを選択し「Origins and Origin Groups」タブを選択。
- 「Origins」のセクションで「Create Origin」ボタンを押下
- 表示された画面で、「Origin Domain Name」にて作成済みのバケットのドメインを選択する。自動でOrigin IDが入るので、それは編集しない。
- 「Restrict Bucket Access」でYesを選択する。
- 後の項目はヘルプでも読みながら選択・入力すれば迷うことはない。
ちなみに、 「Grant Read Permissions on Bucket」で「Yes, Update Bucket Policy」を選んでおくと、バケットの「バケットポリシー」にOAIを使ったポリシーが勝手に更新されてくれた。
動作確認
バケットに適当なファイルを置いて、以下を確認した。
- S3のバケットのURLでファイルにアクセス → アクセスできないこと
- Cloud FrontのURLでファイルにアクセス → アクセスできること
- S3のバケットのURLでルートフォルダにアクセス → アクセスできないこと
- Cloud FrontのURLでルートフォルダにアクセス → アクセスできないこと
感想
EC2は以前から開発環境として使っていたけど、初めてそれ以外を使ってみた。
AWSを知っている人はすごいんだなと思った。