S3とCloudFrontで静的サイトをHTTPS公開

はじめに

こんにちは。はじめまして、katoです。

まだAWSに慣れていないので比較的簡単なものから理解を深めようと思い、S3とCloudFrontを使用して静的サイトを作成していきます。

Amazon S3は、HTMLや画像などのファイルを保存できるストレージサービスです。

Amazon CloudFrontは、S3などに置いたコンテンツを高速に配信するためのサービスです。

今回はS3に保存したファイルをCloudFront経由で表示できるようにしました。

S3の作成

バケット名を記入しバケットを作成します。

一般的な設定

項目 設定内容
バケットタイプ 汎用
バケット名前空間 グローバル名前空間
バケット名 xpower-s3-bucket

バケットのブロックパブリックアクセス設定

パブリックアクセスがすべてをブロックにチェックマークが ついていることを確認しバケットを作成します。

作成が完了したら以下の画面が表示されます。

htmlの作成

バケットに置くhtmlの作成をします。 今回はhelloworld.htmlを作成し以下の内容を記述します。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8" />
  <title>Hello World</title>
</head>
<body>
  <h1>helloworld</h1>
</body>
</html>

作成できたら、バケットにアップロードします。 アップロードできていることを確認します。

CloudFrontの作成

CloudFrontのディストリビューションを作成します。

今回は無料のプランで実施します。

ステップ2では名前の入力をしNext

ステップ3のOriginに先ほど作成したS3をBrowse S3から設定します。

他の設定はデフォルトのまま作成します。

デフォルトルートオブジェクトが未設定の場合、CloudFrontのURLにアクセスした際にAccessDeniedが表示されることになります。 一般の設定の編集から作成したhtmlファイルを設定します。

HTTPSで表示確認する

ディストリビューションドメイン名をコピーしてブラウザで開いて確認します。 また、https://ディストリビューションドメイン名になっていることを確認します。

まとめ

今回は、S3とCloudFrontを使用して静的サイトを作成し、httpsで表示を確認することができました。

S3のファイルを直接公開するのではなく、CloudFront経由で表示するという流れを理解できたのが良かったです。

CloudFrontの設定では、デフォルトルートオブジェクトにHTMLファイル名を指定する必要がある点で少しつまずきました。