CloudFrontのデフォルトドメインからカスタムドメインへのリダイレクトしたい
このブログは、AWS S3での静的ウェブサイトホスティングと、コンテンツ配信を高速化するためのCloudFrontを利用した構成になっています。 CloudFrontを利用すると、以下のような形式のデフォルトドメインが自動的に割り当てられます。
dxxxxxxxxxxxxx.cloudfront.net
より多くのAWSサービスに触れるため、わざ わざ年間10$も払ってRoute53で独自ドメインuntilcoffeecools.com
も取得しています。
このカスタムドメインに301リダイレクトする設定が完了したため、その手順を残しておきます。
1. CloudFront Functionの作成
AWSのサービス一覧からCloudFrontを選択します。
Function
を押下し、Create Function
へと進みます。
Name
とDescription
は適当に入力し、Runtime
はデフォルトのままCreate Function
に進みます。
2. Developmentステージのコード保存
Build
タブを押下し、Development
を開きます。
次のソースをペーストし、ドメイン名を書き換えてSave changes
で保存します。
function handler(event) {
var request = event.request;
var headers = request.headers;
// CloudFrontの標準ドメインにアクセスした場合だけリダイレクト
if (headers.host && headers.host.value.endsWith('.cloudfront.net')) {
return {
statusCode: 301,
statusDescription: 'Moved Permanently',
headers: {
location: {
value: 'https://yourdomain.com' + request.uri
}
}
};
}
// 通常処理(リダイレクトしない)
return request;
}
3. Publishする
Test Function
でHTTPステータス:200が帰ってきたら問題ないです。
Publish
タブからPublish Function
を選択し、公開します。
4. Distributionsの設定
CloudFrontのメニューに戻り、Distributions
の中のBehaviors
を選択します。
Path pattern
:Default (*)
のレコードを選択してEdit
へと進みます。
スクロールダウンし、Function associations - optional
に次の内容を追加します。
(CloudFrontの基本的な設定は省略)
Viewer request
項目 | 値 |
---|---|
Function type | CloudFront Functions |
Function ARN / Name | 手順1で作成したCloudFront FunctionのARN |
5. 動作確認
4の内容をSave changes
で保存し、CloudFrontのデフォルトドメインにアクセスしてみます。
https://yourdomain.com
にリダイレクトされていればOKです!!
6. まとめ
細部にこそプロフェッショナルであれって偉い人が言ってました