Amazon Web Services ブログ

CloudFront の継続的デプロイメントを使用して CDN の変更を安全に検証する

本稿は Joe Viggiano, Carl Johnson, Vishal Anand によるブログ Use CloudFront continuous deployment to safely validate CDN changes を翻訳したものです。翻訳はソリューションアーキテクト 森が担当しました。

Amazon CloudFront などのコンテンツ配信ネットワーク(CDN)は、多くの場合、ユーザーやデバイスがウェブサイトやアプリケーションに接続するためのフロントドアとなります。CDN の設定を変更すると、問題の原因を限定的にしか把握できないまま、完全な停止に至る可能性があります。CDN の設定変更のテストを提供するための既存のソリューションは、クライアントでカスタムヘッダーを注入したり、クライアントの DNS 設定を上書きしたり、別のテストドメインを実装する必要があります。このため大規模なテストは困難です。モバイルデバイス、パソコン、スマートテレビ、Amazon Fire TV など、様々な種類のクライアントをテストするために 、お客様はアプリケーションに複雑なフィーチャーフラグを組み込む必要があるかもしれません。このアプローチには拡張性がなく、導入された変更がワークロードに悪影響を及ぼさないように、本番環境のトラフィックの割合を制御する能力もありません。

新しい CloudFront の継続的デプロイメント

本日より CloudFront 継続的デプロイメントを使用して、ワークロード全体をコミットする前に、本番トラフィックの一部を使用してCloudFront 配信の変更を安全にテストおよび検証することができるようになりました。CI/CD パイプラインと簡単に統合し、ブルーグリーンまたはカナリアデプロイ戦略を使用して構成変更をデプロイすることができます。AWS コンソールAWS コマンドラインインターフェース(AWS CLI)AWS CloudFormation、または AWS SDK を使用すると、同じ代替ドメイン名を使用しながら既存のディストリビューションの新しいバージョンを作成し、バージョン間で共有するトラフィック割合を正確に制御できるようになりました。一般的なユースケースとしては、新しいオリジンの設定、キャッシュ設定の変更によるパフォーマンスへの影響の把握、新しい地域制限のテスト、Lambda@EdgeCloudFront Functions の新バージョンのテストなどが挙げられます。

テストが必要な場合、CloudFront はプロダクション用ディストリビューションと関連付けるステージング用ディストリビューションを作成できるようになりました。オリジンオリジングループキャッシュビヘイビアカスタムエラーレスポンスデフォルトルートオブジェクトログ地域制限など、ステージング用ディストリビューション内で変更可能な設定があり、将来的にはさらに追加される予定です。クライアント、アプリケーション、CloudFront からのテレメトリーにより、ステージング用ディストリビューションへの変更が、リクエストにどのような影響を及ぼしているかを把握することができます。テレメトリーによって悪影響が示された場合は、トラフィックをプロダクション用のディストリビューションに戻すだけでよいのです。テストが完了し、変更内容に確信が持てたら、ステージング用ディストリビューションをプロダクション環境に昇格させるのは簡単で、残りのプロダクション環境トラフィックを新しい構成にプッシュすることができます。プロダクションへの移行には、DNS の変更、ビューワー接続の切断は必要なく、キャッシュのロスはありません。

継続的展開ポリシーを使用して、ステージング用ディストリビューションにトラフィックを移行することができます。このポリシーでは、ヘッダーベースまたはウェイトベースの 2 つの方法のいずれかを使用できます。これらの設定を調べてみましょう。

ヘッダーベース

ステージング用ディストリビューションへのリダイレクトは、クライアントリクエストのヘッダーを検出することで行うことができます。この場合、クライアントは CloudFront への HTTP リクエストの一部として、定義済みのカスタムヘッダーを含める必要があります。この方法は、小規模なテストを行いたい制御された環境において、デバイスの数が少ない場合に有効です。

ウェイトベース

ウェイトベースは一般的にカナリアデプロイメントと呼ばれ、ステージング用ディストリビューションにプッシュする本番トラフィックのパーセンテージを定義することができます。この割合の値は最初は小さく、時間の経過とともに大きくすることができるので、アプリケーションやクライアントを変更することなく、大規模なテストをシームレスに実行できます。セッションスティッキーにより、ステージング用ディストリビューションにプッシュされたリクエストは、ビューアセッションが閉じるか、ステージング用ディストリビューションが削除または昇格されるまで継続されます。お客様は、既知のテストユーザーとデバイスからのヘッダーベースによって最初に変更を検証し、次にウェイトベースを使用して本番トラフィックを導入することを選択できます。

図1: ウェイトベースを使用して 10% のトラフィックをステージングに振り分ける例

最初のステージング用ディストリビューションを作成する

CloudFront の継続的デプロイメントとは何かを説明したところで、ウェイトベースでステージング用ディストリビューションを作成してみましょう。

CloudFront Management Console を起動し、継続的デプロイメントをテストしたいディストリビューションを選択します。そこから Create staging distribution ボタンを選択します。

図2:継続的なデプロイメントにより更新された CloudFront ディストリビューション

New staging distribution に説明(オプション)を入力し、次へを選択します。

図3:ステージング用ディストリビューションの新規作成

次に、Origin を含むステージング用ディストリビューションの設定を変更することができます。このチュートリアルでは、下にスクロールして次へを選択します。

図4:ステージング用ディストリビューションの設定

トラフィックポリシーの種類を選択します。ここでは Weight-based タイプを指定し、ステージング用ディストリビューションに、送信するトラフィックのパーセンテージを指定して次へを選択します。

図5:ステージング配信のトラフィックポリシーを指定

最後に設定を確認し Create staging distribution を選択します。

図6:新しいステージング用ディストリビューションの設定を確認

これでステージング用ディストリビューションが作成され、トラフィックを受け取る準備が整いました。

図7:新しく作成されたステージング用ディストリビューション

まとめ

このブログでは CloudFront の継続的デプロイメントで、ディストリビューションへの変更を安全かつ簡単に検証する方法を提供することを学びました。テストのためにトラフィックを誘導する方法と、最初のステージング用ディストリビューションをセットアップするためのコンソールによるステップバイステップの手順について確認しました。CloudFront Management Console にログインして、今すぐ試してみましょう。