設定方法
- s3をホスティングしたいドメイン名で作成する
- Route53でs3エイリアスレコードを作成し、s3のドメイン名と紐付ける
- s3のパブリックアクセスを許可してインターネット上に公開する
- プロパティ-静的ウェブサイトホスティングを有効にして、リダイレクトルールも設定する
- ブラウザやcurlでアクセスして動作をみてみる
ホスティングの設定
- インデックスドキュメント、エラードキュメントは指定するが、ファイル自体はなくても大丈夫
- s3のみの場合、httpでしかアクセスできないため、httpsも利用したい場合はCloudFrontを利用する必要がある
リダイレクトルール
メモ
- ホストするURLが
example.com
- https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/how-to-page-redirect.html
- 上記URLではXML形式で案内されているけど、いまはjsonで書かないといけないみたい
- 上のルールからConditionブロックをなめていき、ヒットしたらそのセクションのRedirectルールが発動
- ApacheのRedirect処理と同じ感じ
-
ReplaceKeyWith
とReplaceKeyPrefixWith
の設定に違いがあることにたどり着くまで半日かかりました、、、
各種設定値
Conditionブロック
- Condition
- ディレクトリ、ファイル、エラーコードを指定し、ヒットした場合にRedirect内のルールが処理される
- KeyPrefixEquals
-
/aaa
のようにリダイレクトしたいときのパス、ディレクトリを指定する
-
Redirectブロック
- Redirect
- Conditionとセットで設定
- HostName
- s3バケット内ではなくて、別のドメインへリダイレクトする場合に指定する
- Protocol
- リダイレクト後のプロトコルを指定する。 http or https
- ReplaceKeyWith
- 置き換えられるパス(クエリ)
- リクエストされたドメイン移行のクエリは破棄される
-
example.com/aaaaa
でリクエストが合った場合、https://vamdemicsystem.black/blog-and-news/
になる
- ReplaceKeyPrefixWith
- 置き換えられるパス(クエリ)
- リクエストされたドメイン移行のクエリは維持される
-
example.com/aaaaa
でリクエストが合った場合、https://vamdemicsystem.black/blog-and-news/aaaaa
になる
[
{
"Condition": {
"HttpErrorCodeReturnedEquals": "404"
},
"Redirect": {
"HostName": "vamdemicsystem.black",
"Protocol": "https",
"ReplaceKeyWith": "blog-and-news/"
}
}
]
複数のルールを書くとき
[
{
"Condition": {
"KeyPrefixEquals": "test/"
},
"Redirect": {
"HostName": "vamdemicsystem.black",
"Protocol": "https",
"ReplaceKeyWith": "blog-and-news/"
}
},
{
"Condition": {
"HttpErrorCodeReturnedEquals": "404"
},
"Redirect": {
"HostName": "vamdemicsystem.black",
"Protocol": "https",
"ReplaceKeyWith": "blog-and-news/"
}
}
]