※ 当ページには【広告/PR】を含む場合があります。
2020/04/21
2021/08/02
これまで個人的な趣向で、AWSのLambdaでRESTfulなAPIの構築しか念頭に入れていなかったので、S3バケットからテキストから画像などありとあらゆるリソースをAPIからGETでリソースをリクエストして、拡張子ごとに適切に中身を処理して…かなり面倒です。特にリソースが画像の場合は、base64形式でリレーしてあげねばならず、そんな無理にAPIに画像を引張ってきてもらわなくても、CloudFrontから直にS3を連れてきて貰えばいいよね?というのが今回のモチベーションです。ただ今回の記事のネタは、ネットで“CloudFront S3”で検索していただけたら、設定方法がたくさんヒットします。割と使い古されているネタですので、あくまで個人の備忘録&復習にどうぞ。
【AWS独習術】AWSをじっくり独学したい人のためのオススメ書籍&教材特集
図解即戦力 Amazon Web Servicesのしくみと技術がこれ1冊でしっかりわかる教科書 簡単なテスト環境準備
とりあえず適当な名前でS3バケットを作成し、jpeg画像(0.jpg)を突っ込んでおきます。ファイル構造…といえるほど大層なものではないですが、バケットのルートからは以下のように配置しておきます。
【AWS独習術】AWSをじっくり独学したい人のためのオススメ書籍&教材特集
図解即戦力 Amazon Web Servicesのしくみと技術がこれ1冊でしっかりわかる教科書 CloudFront 側の設定
今回の目標はブラウザ等でhttp://xxxxxxxxxxxx.cloudfront.net/article1/0.jpg
を表示できるようにする事です。それでは早速、CloudFrontのコンソールから新規作成してみます。まずはCloudFrontで新規ディストーションを作成します。Origin path には、今回アクセスしたい、S3バケットのオリジンを指定します。次に、以下のように選択肢を設定します。なお、'Grant Read Permission on Bucket'をNoにして、あとでS3のバケットポリシーを手動で設定しても良いのですが面倒な人間はYesにしとくことで、下の写真のように自動で更新してもらえます。自前のバケットポリシー更新前:CloudFrontの自動書き換え適用後:とりあえず、他の設定項目も多いですが、他はそのまま既定値にしといて、Createボタンをおしてこのディストリビューションを作成します。作成から体感15分ほどで、'Status'が'Deployed'に変わるまで待ちます。デプロイ後、サイドメニューから'Origin Access Identity'を覗くと、以下のように先ほど作成したディストリビューションに、新しいオリジンアクセスアイデンティティが発行されていれば成功です。では早速、このディストリビューションのDomain Nameを、ブラウザのアドレスにコピペしてみましょう。すると、CloudFrontのドメインからリソース画像にアクセスできます。
【AWS独習術】AWSをじっくり独学したい人のためのオススメ書籍&教材特集
図解即戦力 Amazon Web Servicesのしくみと技術がこれ1冊でしっかりわかる教科書 HTTPSでアクセスする
上の設定まででCloudFrontから十分アクセス可能ですが、できればSSL対応して使いたいです。そんな時に、デストリビューションのBehavior タグを以下のように編集してみます。そして再デプロイ後に、アクセスを試みると、キチンとhttpsでアクセスできていることがわかります。
【AWS独習術】AWSをじっくり独学したい人のためのオススメ書籍&教材特集
図解即戦力 Amazon Web Servicesのしくみと技術がこれ1冊でしっかりわかる教科書 参考
オリジンアクセスアイデンティティを使用して Amazon S3 コンテンツへのアクセスを制限する特定バケットに特定ディストリビューションのみからアクセスできるよう設定するCDP:Cache Distributionパターン