デプロイメント戦略への取り組み - AWS AppConfig

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

デプロイメント戦略への取り組み

デプロイ戦略を使うと、数分または数時間かけて変更を本番環境にゆっくりとリリースできます。AWS AppConfig デプロイ戦略は設定デプロイの次の重要な側面を定義します。

設定 説明

デプロイタイプ

デプロイの種類は、設定のデプロイ方法またはロールアウト方法を定義します。AWS AppConfig は、線形および指数デプロイタイプをサポートしています。

  • 線形: このタイプの場合、AWS AppConfig は、デプロイ全体に均等に分散される増加係数の増分によってデプロイを処理します。以下は、20% の直線的成長を実現した 10 時間のデプロイのタイムラインの例です。

    経過時間 デプロイの進捗状況

    0 時間

    0%

    2 時間

    20%

    4 時間

    40%

    6 時間

    60%

    8 時間

    80%

    10 時間

    100%

  • 指数: このタイプの場合、AWS AppConfig は次の式を使用してデプロイを指数的に処理します。G*(2^N)。この式で、G はユーザーによって指定されたステップパーセンテージで、N は設定がすべてのターゲットにデプロイされるまでのステップ数です。たとえば、増加係数に 2 を指定すると、次のように構成がロールアウトされます。

    2*(2^0) 2*(2^1) 2*(2^2)

    デプロイは、ターゲットの 2%、ターゲットの 4%、ターゲットの 8%、のようにロールアウトされ、設定がすべてのターゲットにデプロイされるまで続行されます。

ステップパーセンテージ (増加係数)

この設定では、デプロイの各ステップでターゲットとする発信者の割合を指定します。

注記

SDK および AWS AppConfig API リファレンス では、step percentagegrowth factor と呼んでいます。

デプロイ時間

この設定では、AWS AppConfig がホストにデプロイする時間の合計を指定します。これはタイムアウト値ではありません。これは、デプロイが間隔を置いて処理される時間枠です。

ベイク時間

この設定では、構成がターゲットの 100% にデプロイされた後、デプロイが完了したと見なされるまでに Amazon AWS AppConfig CloudWatch アラームを監視する時間を指定します。この間にアラームがトリガーされた場合、AWS AppConfig はデプロイをロールバックします。AWS AppConfig CloudWatch アラームに基づいてロールバックする権限を設定する必要があります。詳細については、「(オプション)CloudWatch アラームに基づいてロールバックのアクセス許可の設定」を参照してください。

AWS AppConfig付属の事前定義されたストラテジーを選択することも、独自のストラテジーを作成することもできます。

定義済みのデプロイ戦略

AWS AppConfig には、構成をすばやく展開するために役立つ定義済みのデプロイ戦略が含まれています。設定をデプロイするときには、独自の戦略を作成する代わりに、次のいずれかを選択できます。

デプロイ戦略 説明

AppConfig.リニアPercentEvery:20 6 分

AWS推奨:

この戦略では、30 分のデプロイでは 6 分ごとに全ターゲットの 20% に設定がデプロイされます。システムは Amazon CloudWatch のアラームを 30 分間モニタリングします。この時間内にアラームが受信されなければ、デプロイは完了です。この間にアラームがトリガーされた場合、AWS AppConfig はデプロイをロールバックします。

AWSこの戦略はベストプラクティスに沿っており、持続時間とベイク時間が長いためデプロイの安全性にさらに重点が置かれているため、本番環境へのデプロイにはこの戦略を使用することをおすすめします。

AppConfig.Canary 10 パーセント 20 分

AWSおすすめ:

この戦略では、20 分間にわたって 10% の増加係数を使用し、デプロイを指数関数的に処理します。システムは 10 CloudWatch 分間アラームを監視します。この時間内にアラームが受信されなければ、デプロイは完了です。この間にアラームがトリガーされた場合、AWS AppConfig はデプロイをロールバックします。

この戦略は、設定のデプロイに関する AWS のベストプラクティスに沿っているため、本稼働環境のデプロイに使用することをお勧めします。

AppConfig.AllAtOnce

クイック:

この戦略では、すべてのターゲットにただちに設定をデプロイします。システムは 10 CloudWatch 分間アラームを監視します。この時間内にアラームが受信されなければ、デプロイは完了です。この間にアラームがトリガーされた場合、AWS AppConfig はデプロイをロールバックします。

AppConfig.50 PercentEvery-30 秒リニア

テスト/デモンストレーション:

この戦略では、30 秒ごとに設定をすべてのターゲットの半分にデプロイし、1 分間のデプロイを行います。システムは Amazon CloudWatch のアラームを 1 分間監視します。この時間内にアラームが受信されなければ、デプロイは完了です。この間にアラームがトリガーされた場合、AWS AppConfig はデプロイをロールバックします。

この戦略では、継続時間と処理時間が短いため、テストまたはデモンストレーションの目的でのみ使用することをお勧めします。

デプロイ戦略の作成

最大 20 のデプロイ戦略を作成できます。設定をデプロイするときに、アプリケーションおよび環境に最適なデプロイ戦略を選択できます。

AWS AppConfig デプロイ戦略の作成 (コンソール)

AWS Systems Manager コンソールを使用して AWS AppConfig デプロイ戦略を作成するには、次の手順に従います。

デプロイ戦略を作成するには
  1. AWS Systems Manager コンソール (https://console.aws.amazon.com/systems-manager/appconfig/) を開きます。

  2. ナビゲーションペインで、[AWS AppConfig] を選択します。

  3. [Deployment Strategies (デプロイ戦略)] タブを選択し、[Create deployment strategy (デプロイ戦略の作成)] を選択します。

  4. [Name (名前)] に、デプロイ戦略の名前を入力します。

  5. [Description (説明)] に、デプロイ戦略に関する情報を入力します。

  6. [Deployment type (デプロイタイプ)] で、タイプを選択します。

  7. [Step percentage (ステップパーセンテージ)] で、デプロイの各ステップでターゲットとする発信者の割合を選択します。

  8. [Deployment time (デプロイ時間)] に、デプロイの合計期間を分または時間単位で入力します。

  9. Bake time には、デプロイの次のステップに進む前、またはデプロイが完了したと見なす前に Amazon CloudWatch アラームを監視する合計時間を分単位または時間単位で入力します。

  10. [Tags (タグ)] セクションで、キーとオプションの値を入力します。1 つのリソースに対して最大 50 個のタグを指定できます。

  11. [Create deployment strategy (デプロイ戦略の作成)] を選択します。

重要

の設定プロファイルを作成した場合はAWS CodePipeline、 CodePipeline AWS AppConfigデプロイプロバイダーとして指定するパイプラインを作成する必要があります構成のデプロイ を実行する必要はありません。ただし、「API を直接呼び出して設定を取得する」で説明されているように、アプリケーション設定の更新を受け取るようにクライアントを設定する必要があります。ユーザーAWS AppConfig をデプロイプロバイダーとして指定するパイプラインの作成については、「AWS CodePipeline ユーザーガイド」の「チュートリアル: AWS AppConfig をデプロイプロバイダーとして使用するパイプラインを作成する」を参照してください。

構成のデプロイ に進みます。

AWS AppConfigデプロイ戦略の作成 (コマンドライン)

以下の手順では、AWS CLI (Linux または Windows) の使用方法、AWS AppConfigまたはデプロイメントストラテジーの作成方法について説明します。AWS Tools for PowerShell

デプロイ戦略をステップバイステップで作成するには
  1. AWS CLI を開きます。

  2. 以下のコマンドを実行して、デプロイ戦略を作成します。

    Linux
    aws appconfig create-deployment-strategy \ --name A_name_for_the_deployment_strategy \ --description A_description_of_the_deployment_strategy \ --deployment-duration-in-minutes Total_amount_of_time_for_a_deployment_to_last \ --final-bake-time-in-minutes Amount_of_time_AWS AppConfig_monitors_for_alarms_before_considering_the_deployment_to_be_complete \ --growth-factor The_percentage_of_targets_to_receive_a_deployed_configuration_during_each_interval \ --growth-type The_linear_or_exponential_algorithm_used_to_define_how_percentage_grows_over_time \ --replicate-to To_save_the_deployment_strategy_to_a_Systems_Manager_(SSM)_document \ --tags User_defined_key_value_pair_metadata_of_the_deployment_strategy
    Windows
    aws appconfig create-deployment-strategy ^ --name A_name_for_the_deployment_strategy ^ --description A_description_of_the_deployment_strategy ^ --deployment-duration-in-minutes Total_amount_of_time_for_a_deployment_to_last ^ --final-bake-time-in-minutes Amount_of_time_AWS AppConfig_monitors_for_alarms_before_considering_the_deployment_to_be_complete ^ --growth-factor The_percentage_of_targets_to_receive_a_deployed_configuration_during_each_interval ^ --growth-type The_linear_or_exponential_algorithm_used_to_define_how_percentage_grows_over_time ^ --name A_name_for_the_deployment_strategy ^ --replicate-to To_save_the_deployment_strategy_to_a_Systems_Manager_(SSM)_document ^ --tags User_defined_key_value_pair_metadata_of_the_deployment_strategy
    PowerShell
    New-APPCDeploymentStrategy ` --Name A_name_for_the_deployment_strategy ` --Description A_description_of_the_deployment_strategy ` --DeploymentDurationInMinutes Total_amount_of_time_for_a_deployment_to_last ` --FinalBakeTimeInMinutes Amount_of_time_AWS AppConfig_monitors_for_alarms_before_considering_the_deployment_to_be_complete ` --GrowthFactor The_percentage_of_targets_to_receive_a_deployed_configuration_during_each_interval ` --GrowthType The_linear_or_exponential_algorithm_used_to_define_how_percentage_grows_over_time ` --ReplicateTo To_save_the_deployment_strategy_to_a_Systems_Manager_(SSM)_document ` --Tag Hashtable_type_User_defined_key_value_pair_metadata_of_the_deployment_strategy

    システムが以下のような情報を返します。

    Linux
    {
       "Id": "Id of the deployment strategy",
       "Name": "Name of the deployment strategy",
       "Description": "Description of the deployment strategy",
       "DeploymentDurationInMinutes": "Total amount of time the deployment lasted",
       "GrowthType": "The linear or exponential algorithm used to define how percentage grew over time",
       "GrowthFactor": "The percentage of targets that received a deployed configuration during each interval",  
       "FinalBakeTimeInMinutes": "The amount of time AWS AppConfig monitored for alarms before considering the deployment to be complete",
       "ReplicateTo": "The Systems Manager (SSM) document where the deployment strategy is saved"
    }
    Windows
    {
       "Id": "Id of the deployment strategy",
       "Name": "Name of the deployment strategy",
       "Description": "Description of the deployment strategy",
       "DeploymentDurationInMinutes": "Total amount of time the deployment lasted",
       "GrowthType": "The linear or exponential algorithm used to define how percentage grew over time",
       "GrowthFactor": "The percentage of targets that received a deployed configuration during each interval",  
       "FinalBakeTimeInMinutes": "The amount of time AWS AppConfig monitored for alarms before considering the deployment to be complete",
       "ReplicateTo": "The Systems Manager (SSM) document where the deployment strategy is saved"
    }
    PowerShell
    ContentLength               : Runtime of the command
    DeploymentDurationInMinutes : Total amount of time the deployment lasted
    Description                 : Description of the deployment strategy
    FinalBakeTimeInMinutes      : The amount of time AWS AppConfig monitored for alarms before considering the deployment to be complete
    GrowthFactor                : The percentage of targets that received a deployed configuration during each interval
    GrowthType                  : The linear or exponential algorithm used to define how percentage grew over time
    HttpStatusCode              : HTTP Status of the runtime
    Id                          : The deployment strategy ID
    Name                        : Name of the deployment strategy
    ReplicateTo                 : The Systems Manager (SSM) document where the deployment strategy is saved
    ResponseMetadata            : Runtime Metadata