デプロイ戦略の使用 - 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 CloudWatch アラームを監視する時間 AWS AppConfig を指定します。この間にアラームがトリガーされた場合、AWS AppConfig はデプロイをロールバックします。CloudWatch アラームに基づいて AWS AppConfig をロールバックするアクセス許可を設定する必要があります。詳細については、「(オプション) アラームに基づいてロールバックの権限を設定します。 CloudWatch 」を参照してください。

AWS AppConfig付属の事前定義済みの戦略を選択することも、独自の戦略を作成することもできます。

定義済みのデプロイ戦略

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

デプロイ戦略 説明

AppConfig.Linear: 6 分ごとに 20 パーセント

AWS 推奨:

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

この戦略は、AWS ベストプラクティスの実践に準拠しているため、本番環境でのデプロイに使用することをお勧めします。所要時間とベイク時間が長いため、デプロイの安全性をさらに重視する必要があります。

AppConfig.Canary10Percent20Minutes

AWS 推奨:

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

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

AppConfig.AllAtOnce

クイック:

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

AppConfig.Linear50PercentEvery30Seconds

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

この戦略では、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. デプロイ戦略 タブを選択し、デプロイ戦略の作成 を選択します。

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

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

  6. デプロイタイプ で、タイプを選択します。

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

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

  9. ベイク時間 には、デプロイの次のステップに進む前、またはデプロイを完了とみなす前に Amazon CloudWatch アラームをモニタリングする合計時間を分または時間単位で入力します。

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

  11. デプロイ戦略の作成 を選択します。

重要

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

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

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

以下の手順では、AWS CLI (Linux または Windows の場合) または AWS Tools for PowerShell を使用して AWS AppConfig デプロイ戦略を作成する方法について説明します。

デプロイ戦略をステップバイステップで作成するには
  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