[新機能] Amazon CloudFrontがジオターゲティングに対応しました

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

6/26のCloudFront大規模アップデートについて、本ブログでは以下の3つの記事で各機能をご紹介致しました。

しかし、今回はまだまだたくさんのアップデートがあります。そこで今回はGeo Targeting(ジオターゲティング)に注目したいと思います!

新機能として追加されたこと

今回の新機能では、以下のカスタムヘッダが追加されました。

  • CloudFront-Viewer-Country

このヘッダには、アクセス元の国を特定出来る国コードがセットされます。詳細な技術資料が見つかりませんでしたが、おそらくIPアドレスからマッピングしているのでしょう。この国コードをコンテンツで判断することで、応答するコンテンツを言語毎に変えたり、あるいはフィルタリングしてアクセスブロックしたりすることが出来るようになります!

設定してみる

設定はCloudFrontの「Behavior Settings」にある「Forward Headers」で行います。

AWS_CloudFront_Management_Console

動作を確認してみた

いくつかの地域をピックアップして動作を確認してみました。アクセス先のコンテンツは以下の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サイトでアクセス元の言語によって応答コンテンツを分けることが出来るようになります。またアクセス解析においても有効的でしょう。様々な活用方法がありそうですね!