目的
サイト運営停止期間中、しばらく告知ページを実現したいといった要求に適う方法を書きます。
趣旨
https://test.xxx.jp のサブドメイン配下のページをすべて http://xxx.jp/ 直下のHTMLページにリダイレクトする。
手順
操作:S3
- バケットを作成する
- バケット名 xxx.jp
- 表示するHTMLファイルをアップロードしておく(ファイル名は index.html)。
- xxx.jpバケットの「プロパティ」から下記設定を保存する
- アクセス許可
- 被付与者を「全員」、「開く/ダウンロード」をチェック
- ファイル参照可能にするため、バケットポリシーを編集 ※①バケットポリシー参照
- 静的ウェブサイトホスティング
- 「ホスティングを有効にする」を選択
- インデクスドキュメント "index.html"
- ルーティングルールを編集 ※②リダイレクトルール参照
- 運営サイトのサブドメインに応じたバケットを作成する
- バケット名 test.xxx.jp
- test.xxx.jpバケットの「プロパティ」から下記設定を保存する
- 「別のホスト名にすべてのリクエストをリダイレクトする」を選択
- すべてのリクエストをリダイレクト "xxx.jp/index.html"
操作:Route53
- test.xxx.jp のサブドメインに、下記のようにCNAMEレコードを追加
CNAME
test.xxx.jp.s3-website-ap-northeast-1.amazonaws.com
ここまでの設定だけでも、http://test.xxx.jp (※https://ではなく) のサブドメイン配下のページをすべて http://xxx.jp/ 直下のHTMLページにリダイレクトされます。
【HTTPSサイトからのリダイレクトの場合は、下記対応も必要です】
操作:CloudFront
- 該当ドメインのSSL証明書を IAM にCLI(※③コマンド参照)でアップロードする
- CloudFront で distribution を作成する
- Origin Domain Name: 選択肢として表示される S3 bucket test.xxx.jp を指定せずに、 S3 website endpointを指定すること。(エンドポイント例:test.xxx.jp.s3-website-{region}.amazonaws.com)
- Origin Protocol Policy: HTTP Only
- Alternate Domain Names (CNAMEs): test.xxx.jp
- SSL Certificate: 項番 1. でアップロードした SSL 証明書を選択
CloudFrontの設定反映は15分ほどかかるので待ちます。
操作:Route53
- test.xxx.jp の CNAME を、割り当てられた CloudFront のホスト名(例:xyz123.cloudfront.net)に変更
※test.xxx.jp のAレコードで、エイリアスとしてCloudFront のホスト名を登録してもOK
以上です。
補足
①バケットポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::xxx.com/*"
]
}
]
}
②リダイレクトルール
<RoutingRules>
<RoutingRule>
<Condition>
<KeyPrefixEquals>index.html/</KeyPrefixEquals>
</Condition>
<Redirect>
<ReplaceKeyWith>index.html</ReplaceKeyWith>
</Redirect>
</RoutingRule>
</RoutingRules>
③コマンド
※コマンド実行前提として、awscliインストール済であること、awsクレデンシャルが設定済であること。
aws iam upload-server-certificate --server-certificate-name xxx-2016 ¥
--certificate-body file://server.crt ¥
--private-key file://server.key ¥
--certificate-chain file://ca.crt ¥
--path /cloudfront/xxx-jp/
参照URL:
公式サイト
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/HowDoIWebsiteConfiguration.html
Route53 + S3 を使った任意の URL へのリダイレクト
http://qiita.com/mzmttks/items/6ec434a9fde1ac37d84a
CloudFrontでHTTPS対応
https://blog.m4i.jp/2015/10/01/redirect-https-using-s3
AWS ELBの証明書を確認・削除する
http://qiita.com/key/items/e8005025d29c0dd893bd