Amazon Web Services ブログ

AWS AppConfig を使用したアプリケーション構成設定の安全なデプロイ

数年前、私たちは、従来のコードデプロイよりも迅速に設定を変更でき、コードの変更と同じ運用上の精査を可能にする内部サービスの必要性を特定しました。そのため、このニーズに対応するツールを構築し、AWS、Retail、Kindle、Alexa のほとんどのチームがこの設定デプロイシステムを使用して、数分かかったものを数秒で動的に変更します。コードとは別に設定の変更のみをデプロイできるため、設定を使用するアプリケーションやサービスを再起動する必要がなく、変更がすぐに有効になります。このサービスは、Amazon および AWS 内で 1 日に数千回使用されています。

顧客から寄せられる一般的な質問は、私たちのようにサービスを運営する方法に関するものです。そのため、この内部ツールを利用して、顧客が使用できるように外部化することにしました。本日は、AWS Systems Manager の機能である AWS AppConfig を発表しました。AWS AppConfig を使用すると、Amazon Elastic Compute Cloud (EC2) インスタンス、コンテナ、およびサーバーレスアプリケーションと機能でホストされるあらゆるサイズのアプリケーションで、コードに関係なく、アプリケーション設定の変更を迅速にデプロイすることができます。

API またはコンソールを使用して設定を作成および更新できます。また、定義済みのスキーマテンプレートまたは AWS Lambda 関数を使用して、デプロイする前に変更を検証できます。AWS AppConfig には、設定変更のデプロイをモニタリングし、問題が発生した場合に以前の設定にロールバックするための自動化された安全コントロールも含まれています。設定の更新のデプロイは、実行中のアプリケーションですぐに利用できます。このアプリケーションは、シンプルな API を使用して、利用可能な最新の設定を定期的にポーリングおよび取得します。

AWS AppConfig を使用したアプリケーション構成設定の管理
AWS AppConfig を使用すると、アプリケーションの構成設定を作成および管理するプロセスが簡単になります。最初にアプリケーションを作成し、そのアプリケーションに対して 1 つ以上の環境設定プロファイル、およびデプロイ戦略を定義します。環境は、ベータ環境や本番環境などの論理的なデプロイグループを表します。または、ウェブ、モバイル、バックエンドコンポーネントなどのアプリケーションのサブコンポーネントである場合もあります。環境ごとに Amazon CloudWatch アラームを設定できます。これは AWS AppConfig によってモニタリングされ、デプロイ中にアラームが発生した場合にロールバックをトリガーします。設定プロファイルは、デプロイする設定データのソースと、デプロイ前に設定データが正しいことを確認するオプションの検証を定義します。デプロイ戦略は、デプロイの実行方法を定義します。

開始するには、AWS Systems Manager ダッシュボードに移動し、ナビゲーションパネルから AppConfig を選択します。設定データを作成をクリックすると、アプリケーションの名前とオプションの説明を指定するページに移動し、必要に応じてアプリケーションにタグを適用することもできます。

アプリケーションを作成すると、環境タブと設定プロファイルタブのあるページに移動します。アプリケーションの本番環境をターゲットとする環境を作成するところから始めましょう。環境タブを選択した状態で、環境を作成をクリックします。表示されたページで、環境に名前を付けてから、モニターCloudwatch アラームのロールバックを有効にするを選択します。次に、AWS AppConfig がデプロイ中に選択したアラームを監視できるようにする IAM ロールを提供し、追加をクリックします。ロールに必要な権限の詳細については、こちらをご覧ください。

次に、設定プロファイルをセットアップします。アプリケーションの詳細ビューに戻り、設定プロファイルタブを選択して、設定プロファイルを作成をクリックします。必要な最初の詳細は、AWS AppConfig が設定にアクセスすると想定する場合の設定の名前とサービスロールです。新しいロールを作成するか、既存のロールを選択することができます。

次へをクリックして、デプロイする設定データのソースを選択します。Systems Manager ドキュメント、またはパラメータストアのパラメータから選択できます。このチュートリアルでは、true に設定して、このサンプルアプリケーションのユーザーに対して関連する機能を有効にするパラメータを選択します。

次に、オプションで 1 つ以上の検証をプロファイルに追加できるため、AWS AppConfig は、更新された設定をデプロイしようとしたときの値が正しく、アプリケーションエラーが発生しないことを確認できます。ここでは、JSON スキーマを使用するため、構文チェックを使用しています。検証、セマンティックチェックを実行するコードを実行する場合、Lambda 関数を設定します。スキーマを入力したら、設定プロファイルを作成をクリックしてプロセスを完了します。

ロールアウトを管理するデプロイ戦略を設定するために、もう 1 つのタスクが残っています。これを行うには、AWS AppConfig ダッシュボードからデプロイ戦略タブを選択し、デプロイ戦略を作成をクリックします。ここで、AWS AppConfig が一度にアプリケーションをホストするインスタンスの 5 分の 1 (20%) にデプロイされるようにする戦略を設定しました。モニタリングはデプロイ中に実行され、すべてのデプロイが完了すると「ベイク」時間が発生します。デプロイ中およびベイク時間中に問題が発生すると、環境に関連するアラームがトリガーされ、ロールバックが発生します。戦略に設定できるオプションの詳細については、こちらをご覧ください。デプロイ戦略を作成をクリックすると、この手順が完了し、デプロイ中に戦略を選択できるようになります。

アプリケーション用に設定された環境と設定プロファイル、および適切なデプロイ戦略があれば、それぞれをさらに追加できます。デプロイを開始する準備ができました。設定プロファイルに移動して、デプロイを開始をクリックします。

デプロイする環境、デプロイする設定変更を含むパラメータのバージョン、デプロイ戦略を選択し、オプションの説明を入力できます。選択したパラメータのバージョンは 2 です。パラメータのバージョン 1 の値は { “featureX”: false } です。パラメータのバージョン 2 の値は { “featureX”: true } であり、デプロイされると、ユーザーに対してすぐに関連機能を有効にします。

デプロイを開始をクリックすると、検証およびデプロイプロセスが開始されます。パラメータのバージョン 2 の値が有効であることがわかっているため、検証後にデプロイが続行されます。ターゲットがデプロイを利用できるようになると、次の設定のポーリングで、ターゲットは更新された設定を受け取り、featureX に関連付けられた新しい機能がユーザーに対して安全かつ有効になります。

この投稿では、機能の切り替えに関する非常にシンプルなエクスペリエンスを紹介し、タイムリーなロールアウトが必要な機能 (新製品の発売や発表など) をすぐに有効にできるようにしました。ただし、AWS AppConfig はさまざまなユースケースに使用できます。ここに考慮すべき例がいくつかあります。

  • A/Bテスト: アプリケーションのどのバージョンからより多くの収益を得られるかについて実験を行います。
  • ユーザーメンバーシップ: プレミアムサブスクライバーがアプリケーションの有料コンテンツにアクセスできるようにします。

AWS AppConfig からデプロイを受け取るターゲットは、Systems Manager Agent で設定します。他の Systems Manager 機能に必要な AWS Identity and Access Management (IAM) インスタンスプロファイルを持っている必要はありません。これにより、管理下にあるインスタンスと管理下にないインスタンスで AWS AppConfig を使用できます。AWS AppConfig の詳細については、ユーザーガイドをご覧ください。料金情報についてはこちらでご覧いただけます。AWS AppConfig は現在、すべての商用 AWS リージョンのお客様にご利用いただけます。

— Steve