読者です 読者をやめる 読者になる 読者になる

らくがきちょう

なんとなく

AWS でリダイレクトを Metadata で実現する

AWS の S3 を Static website hosting で公開している場合、リダイレクトを実現するには Redirection rules を使うのが一般的かも知れません。Redirection rules 設定には「アクセスされたプロトコル(HTTP or HTTPS)を見分けて、リダイレクト先のプロトコルを変更する」ということは出来ないように思います。そもそも現状の S3 単体の静的ホスティングには「HTTP のみ」という制限があるので、S3 単体で使っている場合には不便が無いかも知れません。しかし、CloudFront の Origin に S3 を指定している場合は「HTTP でアクセスされた場合は HTTP へリダイレクト」「HTTPS でアクセスされた場合は HTTPS へリダイレクト」と、アクセスされたプロトコルを見分けてリダイレクト先を変更したいかも知れません。こういった場合は(Redirection rules では無く)S3 Object の Meatadata を使ってリダイレクトを実現することが可能です。

GUI から設定する

MetadataGUI から設定するには Management Console へログインし、リダイレクトを設定したい S3 Object へアクセスします。そこから Metadata をクリックします。

f:id:sig9:20170315233756p:plain

Add Metadata して Website-Redirect-Location という Key を追加し、Value にはリダイレクト先 URL を設定します。

f:id:sig9:20170315233804p:plain

CLI から設定する

CLI から以下のパラメータでリダイレクトを設定する場合について考えます。

意味
BUCKET-NAME S3 Bucket 名を指定する
REDIRECT/FROM.html リダイレクト元 URL
/REDIRECT-TO.html リダイレクト先 URL

具体的には以下のように実行します。

aws s3api put-object --acl public-read --bucket BUCKET-NAME --key "REDIRECT/FROM.html" --website-redirect-location "/REDIRECT-TO.html"