S3+CloudFrontとの連携[3]
CloudFrontの設定
S3をオリジンサーバーとしたCloudFrontのディストリビューションの作成します。
ディストリビューションとは、ファイルのリクエストに対してどのオリジンサーバーからファイルを取得するかをCloudFrontに指示する設定です。
AWSマネジメントコンソールから、[CloudFront]をクリックします。
[Create Distribution]をクリックします。
[1]配信方法の選択
.htmlや.jsのファイルが配信の対象となるので、Webの[Get Started]をクリックします。
[2]オリジンの設定
CloudFrontから参照するS3のオリジン設定を行います。
[Origin Domain Name]をクリックすると、作成したS3のバケットが候補に表示されます。
ここでは、先ほどdist
ディレクトリのファイルをアップロードしたS3バケットを選択します。
次に、[Restrict Bucket Access]を"Yes"にします。
これは、特別なCloudFrontユーザーであるオリジンアクセスアイデンティティをディストリビューションに関連付ける設定です。
オリジンアクセスアイデンティティのみアクセスを許可するようにS3のバケットのポリシーを設定することで、ユーザーがAmazon S3 URLを使用してS3のオブジェクトにアクセスすることを制限することができます。
これらの設定を行うことで、CloudFrontの署名付きURLや署名付きCookieを使用して、限定したユーザーにのみコンテンツを配信したい場合に、ユーザーがAmazon S3 URLを使用して、Amazon S3オブジェクトに直接アクセスすることを制限することができます。
また、ユーザーがAmazon S3 URL使用して、直接S3上のオブジェクトにアクセスを行い、CloudFront側のアクセスログが不完全になることを防ぐことができます。
[Origin Access Identity]の"Create a New Identity"を選択し、新しいオリジンアクセスアイデンティティを作成します。
[Comment]に識別のためのコメントを入力します。
オリジンとなるS3バケットのポリシーをアップデートするため、[Grant Read Permissions on Bucket]の"Yes, Update Bucket Policy"を選択します。
既存のオリジンアクセスアイデンティティが存在する場合には、[Origin Access Identity]で"Use an Existing Identity"を選択して設定しても構いません。
[3]キャッシュ動作の設定
続いて、キャッシュ動作の設定を行います。
[Viewer Protocol Policy]を"Redirect HTTP to HTTPS"に設定します。
エッジロケーションのコンテンツへのアクセスがHTTPの場合、自動的にHTTPSにリダイレクトするようにします。
この設定を行うことで、HTTPにアクセスしてきたユーザーを自動的にHTTPSでの接続に誘導することができます。
また、[Object Caching]を"Customize"にし、[Maximum TTL][Default TTL]を"100"に設定します。
なお、今回Default TTLを"100"に設定しているのは、ハンズオンでコンテンツの更新と確認を頻繁に行うためです。
実際の運用においてDefault TTLを"100"に設定するのはCDNのメリットを活かすことができないため、アプリケーションの性質に基づいて値を変更してください。
[4]ディストリビューションの設定
最後に、ディストリビューションの設定です。
[Altanate Domain Names(CNAMEs)]にCloudFrontへのアクセスに用いるカスタムドメインを入力します。今回の場合は"www.example.com"となります。
[SSL Certificate]で"Custom SSL Certificate"を選択し、プルダウンから先ほどACMで作成したSSL証明書を選択します。
また、[Default Root Object]に"index.html"を入力し、ディストリビューションのルートURLへのリクエストに対して、index.html
を返すようにします。
全ての項目を設定した後、[Create Distribution]をクリックします。
一覧に作成したディストリビューションが表示されます。作成直後は[Status]が"In Progress"となります。
ディストリビューションの準備が完了したら、[Status]は"Deployed"に変わります。また、[Domain Name]の"xxx.cloudfront.net"形式のドメインはRoute53の設定で用いるので、メモしておくか確認できるようにしておきましょう。