S3とCloudFrontの組み合わせについて
CloudFrontはコンテンツ配信元となるEC2、S3のコンテンツを高速に配信する仕組みです。例えばS3にある画像・動画をCloudFrontを利用して世界各地にあるエッジサーバにキャッシュさせます。エンドユーザが利用する際に、近くに配置されているエッジサーバから配信されるようになり高速のコンテンツ配信ができます。CDN(Contents Delivery Network)の機能を実装できます。
課題
S3に置いた画像を配信しているサイトがあったとして、サイトに埋め込まれている画像がなくてエラー画像をリダイレクトしたい場合はあると思います。今回は、指定した画像がなかった場合に、エラー画像を表示する設定(S3の設定)と、そのリダイレクト設定をCloudFrontに反映させる方法を書きます。
S3の設定
S3のStatic Website Hostingを有効して、[Edit Redirection Rules]でリダイレクトの設定をします。今回は、リダイレクト設定の詳細は省きます。
リダイレクト設定の公式ドキュメント
注意点
※正規表現が使えないので、リダイレクト設定が長くなることもあります。
※ルールティングルールの要素で[KeyPrefixEquals]オブジェクトキー名のプレフィックス(接頭)に対するリクエストのリダイレクトができるが、拡張子などの接尾に対するリクエストはできないっぽい。
CloudFrontの設定
CloudFrontで「ディストリビューション(配布設定)」を作成しますが、[Origin Domain Name]でオリジンサーバを選択する際に、ドロップダウンリストでS3を選択するとリダイレクト設定が有効になりません。
任意のオリジンサーバを記載することできますので、S3のStatic Website HostingにあるEndpointを記載します。
実際にS3のリダイレクトルールが反映されているか検証します。
参考URL
めちゃめちゃ勉強になりました。ありがとうございます!!
Amazon S3 + CloudFrontによるYumリポジトリにリダイレクトルールを適用する
http://dev.classmethod.jp/cloud/yum-repo-s3cf-redirect/
CDP:Cache Distributionパターン
http://aws.clouddesignpattern.org/index.php/CDP:Cache_Distribution%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3