AWS S3を使って静的ウェブサイトホスティングをします
記事を書くきっかけ
AWS S3を使って静的ファイルを公開しようとしたところ403 Forbiddenになってしまった。
その解決方法が分かったので記事にしました。
ゴール
静的ウェブサイトをホスティングする。
バケットを作成する
マネジメントコンソールでS3のページを開いて、「バケットを作成」をクリックする。
バケット名を入力するのですが、こちらはユニークである必要があります。その他の設定はデフォルトのままで、右下の「バケットを作成」をクリックする。これでバケットを作成することができました。
S3へのファイルアップロード
念のため次のコマンドで先程作成したバケットを確認します。
aws s3 ls
アップロードしたいファイルが存在するディレクトリに移動して、次のコマンドを実行します。
aws s3 sync . s3://バケット名
マネジメントコンソールでファイルがアップロードされていることを確認できる。
S3の静的ウェブサイトホスティングを設定する
先程作成したバケットを選択し、プロパティをクリックする。
下の方までスクロールすると「静的ウェブサイトホスティング」が無効になっているので編集する。
静的ウェブサイトホスティングを有効にする。
ホスティングタイプは静的ウェブサイトをホストするを選択。
インデックスドキュメントはindex.htmlとしてその他の設定はそのままで「変更の保存」をクリックする。
以上の設定が反映されるとつぎのようなURLが表示される。
こちらのURLをクリックすると次のような画面が表示される。
S3で静的ウェブサイトをホスティングするにはアクセス許可の設定が必要になるようです。
上記のページに設定方法が記載されていました。
先程作成したバケットを選択して、アクセス許可をクリックする。
ブロックパブリックアクセス (バケット設定)という項目があるのでこちらの編集をクリックする。
次の画像のようにチェックを全て外した状態で変更の保存をクリックして、確認とする。
ウェブサイトアクセスのアクセス許可の設定に記載されているバケットポリシーをコピーして、作成したバケットのアクセス許可のバケットポリシーに貼り付ける。このときに、ResourceのBucket-Nameの部分は作成したバケット名に変更する。
以上で設定が完了したはずなので、プロパティから先程のURLにアクセスしてみると、次のように画面が表示されることを確認できた。
まとめ
AWS S3を使って静的ウェブサイトをホスティングすることができました!
Discussion