S3 静的ウェブサイトホスティングのドメインを別のAWSアカウントで管理する
こんにちは、菊池です。
今回も小ネタで。
Amazon S3の静的ウェブサイトホスティングを利用すると、EC2などのサーバなしに静的なウェブサイトを公開することが可能です。また、Route 53を使うことで、公開するサイトのドメイン名を取得・管理できます。
今回は、管理上、複数のAWSアカウントを使っているケースでの設定例を紹介します。以下のように、ドメイン管理をアカウントAで行い、他のアカウントのS3を使って公開するイメージです。
S3を公開する
まずは公開するS3バケットの準備です。なお、この手順では全てのユーザにバケットに保存するコンテンツを公開しています。意図しないファイルを保存したり、誤ったバケットを公開しないよう十分にご注意ください。
まずはバケットを作成します。
公開したいドメイン名(FQDN)をバケット名に指定します。(以下ではwww.xxxx.netを指定)
プロパティなどはそのままで、[作成]します。
続いて、静的ウェブサイトホスティングを有効化します。バケットのプロパティから[Static website hosting]を指定します。
ウェブサイトのホストを有効化し、インデックスドキュメント、エラードキュメントを指定します。リダイレクトも可能ですが、デフォルトのままにしてあります。
続いて、アクセス権の設定です。任意のユーザに公開するため、バケットポリシーでGetObject
権限を付与します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PublicReadGetObject", "Effect": "Allow", "Principal": "*", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::example-bucket/*" ] } ] }
設定できたら、バケットにインデックスドキュメントであるindex.htmlを配置します。
ここまでの設定で、S3の公開はされています。[Static website hosting]の設定画面にあった、エンドポイント:(バケット名).s3-website-ap-northeast-1.amazonaws.comにブラウザでアクセスすると、Webページが表示されます。
ドメイン名を設定する
ここまでで、ウェブサイトの公開ができました。目的のドメイン名でアクセスさせるため、Route 53でドメインを管理するアカウントにて操作します。
Route 53でドメインが取得したら、対象のHostedZoneの[Create Recode Set]からレコードを追加します。名前(今回はwww)を入力し、TypeにはAレコードを選択したら、Aliasを[Yes]とします。
ここで、公開対象のS3が同じアカウントに存在する場合には、[Alias Target]に選択肢として出てきます。しかし、今回は異なるアカウントなので、[Alias Target]を直接入力する必要があります。
そして、入力すべきパラメータは以下のドキュメントに記載があります。
東京リージョンのS3を指定したい場合には、s3-website-ap-northeast-1.amazonaws.com
と入力します。
登録したら、目的のドメイン名でアクセスしてみます。
先ほどと同じページが表示されればOKです!
まとめ
以上です。
改めてのS3 静的ウェブサイトホスティングの設定と、異なるアカウントでのドメインの設定でした。なお、静的ウェブサイトホスティングでS3を直接参照させる場合には、プロトコルはHTTPのみとなります。HTTPSを使う場合には、CloudFrontを使う方法がありますので、後日、紹介します。
最後に、繰り返しになりますが、くれぐれも、意図しないバケット/オブジェクトは公開しないように注意しましょう!