SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

サーバレスアーキテクチャによるアプリケーション開発実践入門

AWSサーバレスアーキテクチャでSPAを実装する(1)~SSLを経由してブラウザからLambda APIへアクセスするまでの下準備

サーバレスアーキテクチャによるアプリケーション開発実践入門 第2回

  • X ポスト
  • このエントリーをはてなブックマークに追加

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の設定で用いるので、メモしておくか確認できるようにしておきましょう。

次のページ
S3+CloudFrontとの連携[4]

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
サーバレスアーキテクチャによるアプリケーション開発実践入門連載記事一覧
この記事の著者

瀬筒 貴仁(セヅツ タカヒト)

 株式会社インキュビット R&D 統括マネージャー / みらい合同会社 代表社員 バージョン 1.0 から Ruby on Rails エンジニアとして活動する他、HTML/CSS/JavaScriptエンジニア、Webアプリケーション開発のUI/UX担当なども手がけています。現在はWEBと...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

三宅 暁(ミヤケ アキラ)

株式会社ウェルビー 開発部   フロントエンドを中心に、クラウドを用いた Web サービスのアーキテクチャ設計から継続的な開発の仕組み作りや実装まで行うプログラマ。 「目的を達成するためにより良い方法を」を念頭に、新しい考え方や技術を積極的に取り入れていくタイプです。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/10365 2017/10/11 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング