翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
CodeDeploy インスタンスの状態
CodeDeploy はデプロイグループのインスタンスのヘルスステータスをモニタリングします。正常なインスタンスの数が、デプロイ中にデプロイグループに指定された正常なインスタンスの最小数を下回ると、デプロイが失敗します。たとえば、インスタンスの 85% がデプロイ中に正常な状態を維持する必要があり、デプロイグループに 10 個のインスタンスが含まれている場合、1 つのインスタンスへのデプロイが失敗したときであっても、デプロイ全体が失敗します。これは、1 つのインスタンスがオフラインになり、最新のアプリケーションリビジョンをインストールできるようになった時点で、正常に使用できるインスタンス数は既に 90% に低下しているためです。失敗したインスタンスと別のオフラインインスタンスは、正常で利用可能な 80% のみであることを意味します。CodeDeploy は全体的なデプロイに失敗します。
デプロイ全体が成功するには、以下が満たされている必要があります。
-
CodeDeploy は、デプロイの各インスタンスにデプロイできる。
-
少なくとも 1 つのインスタンスへのデプロイに成功する。つまり、デプロイ全体が成功するには、最小限の正常なホストの値が 0 の場合であっても、少なくとも 1 つ以上のインスタンスへのデプロイに成功する必要があります (1 つ以上のインスタンスが正常)。
正常なインスタンスに必要な最小数は、デプロイ設定の一部として定義されます。
Blue/Green デプロイ中に、デプロイ設定と最小限の正常なホストの値は、元の環境ではなく置き換え先環境のインスタンスに適用されます。ただし、元の環境のインスタンスがロードバランサーから登録解除されている場合、1 つの元のインスタンスが正常な登録解除に失敗したときであっても、全体的なデプロイは失敗とマークされます。
CodeDeploy は、正常なホストの最小数を持つ 3 つのデフォルトのデプロイ設定を提供します。
デフォルトのデプロイ設定名 | 事前定義された最小限の正常なホストの値 |
---|---|
CodeDeployDefault.OneAtATime | 99% |
CodeDeployDefault.HalfAtATime | 50% |
CodeDeployDefault.AllAtOnce | 0 |
デフォルトのデプロイ設定の詳細は、「CodeDeploy でデプロイ設定を使用する」で参照できます。
CodeDeploy でカスタムデプロイ設定を作成して、独自の最小限の正常なホストの値を定義できます。これらの値は、次のオペレーションを使用して整数または割合 (%) として定義できます。
-
として
minimum-healthy-hosts
あなたが使うときdeployment-configを作成するコマンドのAWS CLI。 -
として
Value
のMinimumHealthyHostsCodeDeploy API のデータ型。 -
AWS CloudFormation テンプレートで AWS::CodeDeploy::DeploymentConfig を使用する場合は
MinimumHealthyHosts
。
[Health status](ヘルスステータス)
CodeDeploy は各インスタンスに 2 つのヘルスステータス値を割り当てます。リビジョンの状態そしてインスタンスの状態。
- リビジョンの状態
-
リビジョンの状態は、現在インスタンスにインストールされているアプリケーションリビジョンに基づきます。以下のステータス値があります。
-
現在: インスタンスにインストールされているリビジョンは、デプロイグループの前回成功したデプロイのリビジョンと一致します。
-
旧: インスタンスにインストールされているリビジョンは、アプリケーションの以前のバージョンと一致します。
-
不明: アプリケーションリビジョンはインスタンスに正常にインストールされていません。
-
- インスタンスの状態
-
インスタンスの状態は、インスタンスへのデプロイが成功したかどうかに基づきます。以下の値があります。
-
正常な: インスタンスへの前回のデプロイは成功しました。
-
非正常な: インスタンスにリビジョンのデプロイの試みが失敗したか、リビジョンがインスタンスにデプロイされていません。
-
CodeDeploy はリビジョンの状態とインスタンスの状態を使用して、次の順序でデプロイグループのインスタンスへのデプロイをスケジュールします。
-
インスタンスの状態が Unhealthy。
-
リビジョンの状態が Unknown。
-
リビジョンの状態が Old。
-
リビジョンの状態が Current。
デプロイ全体が成功すると、リビジョンは更新され、デプロイグループのヘルスステータスの値が更新されて、最新のデプロイを反映します。
-
デプロイに成功したすべての最新のインスタンスは current のままになります。それ以外の場合は、unknown になります。
-
デプロイに成功したすべての古いインスタンスまたは不明なインスタンスは current になります。それ以外の場合は、old または unknown のままになります。
-
デプロイに成功したすべての正常なインスタンスは healthy のままになります。それ以外の場合は、unhealthy になります。
-
デプロイに成功したすべての異常なインスタンスは healthy になります。それ以外の場合は、unhealthy のままになります。
全体的なデプロイが失敗するか、停止している場合:
-
CodeDeploy がアプリケーションリビジョンのデプロイを試みた各インスタンスでは、そのインスタンスのデプロイの試みが成功したか失敗したかによって、そのインスタンスの状態が healthy または unhealthy に設定されています。
-
CodeDeploy がアプリケーションリビジョンのデプロイを試みなかった各インスタンスは、インスタンスのヘルス値を維持します。
-
デプロイグループのリビジョンに変更はありません。
正常なインスタンスの最小数およびデプロイ数
CodeDeploy では、2 つの主な目的で、デプロイに対して正常なインスタンスの最小数を指定できます。
-
全体的なデプロイの成功または失敗を判断する。アプリケーションリビジョンが少なくとも最小数の正常なインスタンスに正しくデプロイされた場合、デプロイは成功します。
-
デプロイが続行するためにデプロイ中に正常である必要があるインスタンス数を決定する。
デプロイグループの正常なインスタンスの最小数は、インスタンス数、または合計インスタンス数の割合 (%) として指定できます。割合 (%) を指定する場合、CodeDeploy は割合 (%) を同等のインスタンス数に変換し、端数がある場合は切り上げます。
CodeDeploy はデプロイプロセス中にデプロイグループのインスタンスのヘルスステータスを追跡し、デプロイの指定された正常なインスタンスの最小数を使用して、デプロイを続行するかどうか判断します。基本的な原則は、デプロイによって、正常なインスタンスの数が、指定した最小数を下回ってはならないということです。このルールの 1 つの例外は、デプロイグループの正常なインスタンスの数が、指定した最小数より最初から少ない場合です。その場合、デプロイプロセスによってそれ以上正常なインスタンスの数が減ることはありません。
CodeDeploy は現在停止状態にあるものも含めて、デプロイグループのすべてのインスタンスにデプロイを試みます。最小限の正常なホストの計算では、停止中のインスタンスは失敗したインスタンスと同じ影響を与えます。停止中のインスタンスが多すぎるために失敗したデプロイを解決するには、インスタンスを再起動するか、タグを変更してデプロイグループから除外します。
CodeDeploy は、アプリケーションリビジョンをデプロイグループの異常なインスタンスにデプロイするよう試みて、デプロイプロセスを開始します。デプロイに成功するたびに、CodeDeploy はインスタンスのヘルスステータスを「正常」に変更し、それをデプロイグループの正常なインスタンスに追加します。CodeDeploy は正常なインスタンスの現在の数と正常なインスタンスの指定された最小数を比較します。
-
正常なインスタンスの数が、正常なインスタンスの指定された最小数以下である場合、CodeDeploy はデプロイをキャンセルし、より多くのデプロイによって正常なインスタンスの数が減らないようにします。
-
正常なインスタンスの数が指定された正常なインスタンスの最小数よりも少なくとも 1 つ大きい場合、CodeDeploy はアプリケーションリビジョンを正常なインスタンスの元のセットにデプロイします。
正常なインスタンスへのデプロイが失敗した場合、CodeDeploy はそのインスタンスのヘルスステータスを unhealthy に変更します。デプロイが進行するにつれて、CodeDeploy は正常なインスタンスの現在の数を更新し、正常なインスタンスの指定された最小数と比較します。デプロイプロセスのある時点で、正常なインスタンスの数が指定された最小数にまで減った場合、CodeDeploy はデプロイを停止します。この方法により、次のデプロイが失敗し、正常なインスタンスの数が指定された最小数を下回ることを回避できます。
指定する正常なインスタンスの最小数が、デプロイグループの合計インスタンス数より少ないことを確認します。割合 (%) の値を指定する場合、切り上げられることを覚えておいてください。それ以外の場合、デプロイが開始すると、正常なインスタンスの数は正常なインスタンスの指定された最小数以下となり、CodeDeploy はデプロイ全体を直ちに失敗します。
CodeDeploy は、指定された正常なインスタンスの最小数および正常なインスタンスの実際の数を使用して、複数のインスタンスにアプリケーションリビジョンをデプロイするかどうかと、その方法を決定します。デフォルトでは、CodeDeploy は正常なインスタンスの数が、正常なインスタンスの指定された最小数を下回るリスクなく、できるだけ多くのインスタンスにアプリケーションリビジョンをデプロイします。以下はその例です。
-
デプロイグループに 10 個のインスタンスがあり、最小の正常なインスタンス数を 9 に設定した場合、CodeDeploy は一度に 1 つのインスタンスをデプロイします。
-
デプロイグループに 10 個のインスタンスがあり、最小の正常なインスタンス数を 0 に設定した場合、CodeDeploy は同時に各インスタンスにデプロイします。
例
次の例では、10 個のインスタンスがあるデプロイグループを前提としています。
- 正常なインスタンスの最小数: 95%
-
CodeDeploy は正常なインスタンスの最小数を 10 個のインスタンスに切り上げます。これは正常なインスタンスの数と等しくなります。全体的なデプロイは、いずれのインスタンスにもリビジョンをデプロイすることなく、直ちに失敗します。
- 正常なインスタンスの最小数: 9
-
CodeDeploy は一度に 1 個のインスタンスにリビジョンをデプロイします。いずれかのインスタンスへのデプロイが失敗した場合、正常なインスタンスの数は正常なインスタンスの最小数に等しくなるため、CodeDeploy はデプロイ全体を直ちに失敗します。このルールの例外は、最後のインスタンスが失敗した場合でも、デプロイは引き続き成功することです。
CodeDeploy は、一度に 1 個のインスタンスずつ、デプロイが失敗するか、デプロイ全体が完了するまで、デプロイを続行します。10 のデプロイすべてに成功した場合、デプロイグループには 10 個の正常なインスタンスが含まれます。
- 正常なインスタンスの最小数: 8
-
CodeDeploy は一度に 2 個のインスタンスにリビジョンをデプロイします。これらのうち 2 つのデプロイが失敗した場合、CodeDeploy はデプロイ全体を直ちに失敗します。このルールの例外は、最後のインスタンスが 2 番目に失敗した場合でも、デプロイは成功することです。
- 正常なインスタンスの最小数: 0
-
CodeDeploy はデプロイグループ全体に一度にリビジョンをデプロイします。デプロイ全体が成功するには、インスタンスに対して、少なくとも 1 つ以上のデプロイが成功する必要があります。正常なインスタンスが 0 の場合、デプロイは失敗します。これは、デプロイ全体を成功としてマークするには、正常なインスタンスの最小値が 0 であっても、デプロイ全体の完了時に 1 つ以上のインスタンスが正常であることが要件であるためです。