LoginSignup
10
7

More than 5 years have passed since last update.

S3でホスティングしているHTMLページへリダイレクトさせる(HTTPS対応込み)

Last updated at Posted at 2016-03-19

目的

サイト運営停止期間中、しばらく告知ページを実現したいといった要求に適う方法を書きます。

趣旨

https://test.xxx.jp のサブドメイン配下のページをすべて http://xxx.jp/ 直下のHTMLページにリダイレクトする。

手順

操作:S3

  1. バケットを作成する
    • バケット名 xxx.jp
    • 表示するHTMLファイルをアップロードしておく(ファイル名は index.html)。
  2. xxx.jpバケットの「プロパティ」から下記設定を保存する
    • アクセス許可
      • 被付与者を「全員」、「開く/ダウンロード」をチェック
      • ファイル参照可能にするため、バケットポリシーを編集 ※①バケットポリシー参照
    • 静的ウェブサイトホスティング
      • 「ホスティングを有効にする」を選択
      • インデクスドキュメント "index.html"
      • ルーティングルールを編集 ※②リダイレクトルール参照
  3. 運営サイトのサブドメインに応じたバケットを作成する
    • バケット名 test.xxx.jp
  4. test.xxx.jpバケットの「プロパティ」から下記設定を保存する
    • 「別のホスト名にすべてのリクエストをリダイレクトする」を選択
    • すべてのリクエストをリダイレクト "xxx.jp/index.html"

操作:Route53

  1. 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

  1. 該当ドメインのSSL証明書を IAM にCLI(※③コマンド参照)でアップロードする
  2. 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

  1. 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

10
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
7