[新機能] Amazon CloudFrontがジオターゲティングに対応しました
はじめに
6/26のCloudFront大規模アップデートについて、本ブログでは以下の3つの記事で各機能をご紹介致しました。
- [新機能] Amazon CloudFrontでHostヘッダを転送する
- [新機能] Amazon CloudFrontでモバイル端末を判定できるようになりました
- [新機能] Amazon CloudFrontがCORSに対応しました
しかし、今回はまだまだたくさんのアップデートがあります。そこで今回はGeo Targeting(ジオターゲティング)に注目したいと思います!
新機能として追加されたこと
今回の新機能では、以下のカスタムヘッダが追加されました。
- CloudFront-Viewer-Country
このヘッダには、アクセス元の国を特定出来る国コードがセットされます。詳細な技術資料が見つかりませんでしたが、おそらくIPアドレスからマッピングしているのでしょう。この国コードをコンテンツで判断することで、応答するコンテンツを言語毎に変えたり、あるいはフィルタリングしてアクセスブロックしたりすることが出来るようになります!
設定してみる
設定はCloudFrontの「Behavior Settings」にある「Forward Headers」で行います。
動作を確認してみた
いくつかの地域をピックアップして動作を確認してみました。アクセス先のコンテンツは以下のPHPスクリプトでHTTPヘッダを出力しています。
<?php foreach (getallheaders() as $name => $value) { echo "$name: $value\n"; echo "<br>"; } ?>
アクセス元からはcurlコマンドを使い、無料Proxyサービスを経由してCloudFrontにアクセスしています。
curl --proxy-ntlm --proxy <PROXYのIPアドレス>:<PROXYのポート番号> http://xxxxxx.cloudfront.net/
動作確認結果
- アメリカ: "CloudFront-Viewer-Country: US"
- ロシア: "CloudFront-Viewer-Country: RU"
- インドネシア: "CloudFront-Viewer-Country: ID"
- モルディブ: "CloudFront-Viewer-Country: MD"
- スウェーデン: "CloudFront-Viewer-Country: SE"
- タイ: "CloudFront-Viewer-Country: TH"
- 中国: "CloudFront-Viewer-Country: CN"
- 台湾: "CloudFront-Viewer-Country: TW"
国別コードとして ISO 3166-1 Alpha-2がセットされています!
まとめ
国別コードを使うことでグローバルなWebサイトでアクセス元の言語によって応答コンテンツを分けることが出来るようになります。またアクセス解析においても有効的でしょう。様々な活用方法がありそうですね!