AWS S3を使ったリダイレクトの方法
投稿日:
AWS S3上に置いていた静的コンテンツを部分的に別サーバー等に移設した際など
特定のパスへのアクセスを別サーバー等にリダイレクトする設定です。
対象のS3の
「プロパティ」>「Static website hosting」>「このバケットを使用してウェブサイトをホストする」
にリダイレクトルールという欄があるので、以下のように設定します。
この例では①〜③のリダイレクトルール(RoutingRule)を設定しています。
<RoutingRules>
<RoutingRule> ・・・①
<Condition>
<KeyPrefixEquals>kokojanai_dokoka.html</KeyPrefixEquals>
</Condition>
<Redirect>
<Protocol>https</Protocol>
<HostName>new-server.co.jp</HostName>
<ReplaceKeyWith>kokodayo.html</ReplaceKeyWith>
</Redirect>
</RoutingRule>
<RoutingRule> ・・・②
<Condition>
<HttpErrorCodeReturnedEquals>403</HttpErrorCodeReturnedEquals>
</Condition>
<Redirect>
<Protocol>https</Protocol>
<HostName>new-server.co.jp</HostName>
</Redirect>
</RoutingRule>
<RoutingRule> ・・・③
<Condition>
<HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
</Condition>
<Redirect>
<Protocol>https</Protocol>
<HostName>new-server.co.jp</HostName>
</Redirect>
</RoutingRule>
</RoutingRules>
①特定パスへのアクセス
特定のパスへアクセスがあった際にパスを書き換えてリダイレクトします。
S3から新サーバー等に移設した際にパスが変わった場合などに使えます。
設定する値は以下の通りです。
設定項目 | 設定値 | サンプル値 |
---|---|---|
KeyPrefixEquals | このパスにアクセスがあったらリダイレクトします。 | kokojanai_dokoka.html |
Protocol | リダイレクト先のプロトコルです | https |
HostName | リダイレクト先のホスト名です | new-server.co.jp |
ReplaceKeyWith | KeyPrefixEqualsの値をこの値で置き換えます。 | kokoday.html |
サンプルではS3にs3-sample.co.jpというDNSを割り振って使っていたとすると
https://s3-sample.co.jp/kokojanai_dokoka.html
へのアクセスは
https://new-server.co.jp/kokodayo.html
へリダイレクトされます。
②③ S3上に存在しないパスへのアクセス
S3上に存在しないパスへアクセスがあった場合に別サーバー等へ同パスのままリダイレクトします。
S3から新サーバー等に同パスのまま移設した際に使えます。
②と③はHttpErrorCodeReturnedEquals
以外は同じです。
設定項目 | 設定値 | サンプル値 |
---|---|---|
HttpErrorCodeReturnedEquals | S3の応答HTTPコードが何だったらリダイレクトするか | 403 および 404※ |
Protocol | リダイレクト先のプロトコルです | https |
HostName | リダイレクト先のホスト名です | new-server.co.jp |
※S3上に存在しないパスの場合404だけじゃなく403を返すパターンもあるようなので念の為両方書いています。
サンプルではS3にs3-sample.co.jpというDNSを割り振って使っていたとすると
https://s3-sample.co.jp/hoge.html
へのアクセスは
https://new-server.co.jp/hoge.html
へリダイレクトされます。