AWS CodeDeploy
ユーザーガイド (API バージョン 2014-10-06)

CodeDeploy でデプロイ設定を使用する

デプロイ設定とは、デプロイ中に CodeDeploy が使用する一連のルール、成功条件、および失敗条件です。これらのルールと条件は、デプロイ先が EC2/オンプレミス compute platform であるか AWS Lambda compute platform であるかによって異なります。

EC2/オンプレミスコンピューティングプラットフォームのデプロイ設定

EC2/オンプレミス compute platform にデプロイする場合、デプロイ設定により、最小限の正常なホストの値の使用を通じて、デプロイ中の任意の時点で利用できる必要があるインスタンスの数または割合 (%) を指定します。

AWS により提供される 3 つの定義済みのデプロイ設定の一つを使用するか、またはカスタムデプロイ設定を作成できます。デプロイ設定に指定しない場合、CodeDeploy は、CodeDeployDefault.OneAtATime デプロイ設定を使用します。

CodeDeploy がデプロイ時にインスタンスのヘルス状態をモニタリングおよび評価する方法の詳細については、「インスタンスの状態」を参照してください。AWS アカウントに登録済みのデプロイ設定の一覧を表示するには、「デプロイ設定の詳細の表示」を参照してください。

EC2/オンプレミスコンピューティングプラットフォームの事前定義されたデプロイ設定

次の表は、定義済みのデプロイ設定を一覧表示します。

デプロイ設定 説明
CodeDeployDefault.AllAtOnce

インプレースデプロイ:

一度に可能な限り多くのインスタンスへアプリケーションリビジョンをデプロイするよう試みます。アプリケーションリビジョンが 1 つ以上のインスタンスにデプロイされる場合、デプロイ全体のステータスは Succeeded として表示されます。アプリケーションリビジョンがいずれのインスタンスにもデプロイされない場合、デプロイ全体のステータスは Failed として表示されます。9 つのインスタンスの例を使い、CodeDeployDefault.AllAtOnce は、一度に 9 つのインスタンスすべてにデプロイするよう試みます。インスタンスへのデプロイが 1 つでも成功すると、デプロイ全体は成功します。9 つすべてのインスタンスへのデプロイが失敗した場合に限り失敗します。

Blue/Green デプロイ

  • 置き換え先環境へのデプロイ: インプレースデプロイの CodeDeployDefault.AllAtOnce と同じデプロイルールに従います。

  • トラフィックの再ルーティング: 置き換え先環境のすべてのインスタンスに一度にトラフィックをルーティングします。トラフィックが少なくとも 1 つのインスタンスに正常に再ルーティングされた場合が成功です。すべてのインスタンスへの再ルーティングが失敗した時点で失敗です。

CodeDeployDefault.HalfAtATime

インプレースデプロイ:

一度に最大半分のインスタンスにデプロイします (端数は切り捨てられます)。デプロイ全体は、アプリケーションリビジョンが少なくとも半分のインスタンスにデプロイされた場合は成功です (端数は切り捨てられます)。それ以外の場合、デプロイは失敗です。9 つのインスタンスの例では、4 つまでのインスタンスに同時にデプロイされます。デプロイ全体は 5 つ以上のインスタンスへのデプロイが成功した場合は成功です。それ以外の場合、デプロイは失敗です。

Blue/Green デプロイ

  • 置き換え先環境へのデプロイ: インプレースデプロイの CodeDeployDefault.HalfAtATime と同じデプロイルールに従います。

  • トラフィックの再ルーティング: 置き換え先環境の最大半分のインスタンスに一度にトラフィックをルーティングします。少なくとも半分のインスタンスへの再ルーティングが成功した場合が成功です。それ以外の場合は失敗です。

CodeDeployDefault.OneAtATime

インプレースデプロイ:

一度に 1 つのインスタンスにのみアプリケーションリビジョンをデプロイします。

複数のインスタンスを含むデプロイグループの場合。

  • デプロイ全体はアプリケーションリビジョンがすべてのインスタンスへデプロイされた場合、成功します。このルールの例外は、最後のインスタンスへのデプロイが失敗した場合に、デプロイ全体が成功することです。これは CodeDeploy が一度に 1 つのインスタンスのみ CodeDeployDefault.OneAtATime 設定でオフラインにするためです。

  • デプロイ全体はアプリケーションリビジョンが最後のインスタンス以外へのデプロイに失敗すると、ただちに失敗します。

  • 9 つのインスタンスを使用する例では、1 つのインスタンスに同時にデプロイされます。最初の 8 つのインスタンスへのデプロイが成功すると、デプロイ全体は成功します。最初の 8 つのインスタンスのいずれかへのデプロイが失敗すると、デプロイ全体は失敗します。

1 つのインスタンスのみを含むデプロイグループでは、1 つのインスタンスへのデプロイが成功した場合にのみ、デプロイは全体は成功します。

Blue/Green デプロイ

  • 置き換え先環境へのデプロイ: インプレースデプロイの CodeDeployDefault.OneAtATime と同じデプロイルールに従います。

  • トラフィックの再ルーティング: 置き換え先環境で一度に 1 つのインスタンスにトラフィックをルーティングします。トラフィックがすべての置き換え先インスタンスに正常に再ルーティングされた場合が成功です。最初に再ルーティングが失敗した時点で失敗です。このルールの例外は、最後のインスタンスが登録に失敗しても、デプロイ全体が成功することです。

Amazon ECS コンピューティングプラットフォームのデプロイ設定

Amazon ECS compute platform にデプロイする場合、デプロイ設定は更新された Amazon ECS コンテナにトラフィックが移行される方法を指定します。Amazon ECS デプロイは 1 つのデプロイ設定をサポートします。

デプロイ設定 説明

CodeDeployDefault.ECSAllAtOnce

すべてのトラフィックは、更新された Amazon ECS コンテナに一度に移行します。

AWS Lambda コンピューティングプラットフォームのデプロイ設定

AWS Lambda compute platform にデプロイする場合、デプロイ設定により、アプリケーションで Lambda 関数の新しいバージョンにトラフィックが移行される方法が指定されます。

デプロイ中にトラフィックを移行できる 3 つの方法があります。

  • Canary: トラフィックは 2 回の増分で移行されます。残りのトラフィックが 2 回目の増分で移行される前に、最初の増分および間隔で更新された Lambda 関数のバージョンに移行されるトラフィックの割合 (%) を分単位で指定する、事前定義された Canary オプションから選択できます。

  • 線形: トラフィックは、毎回同じ間隔 (分) の等しい増分で移行します。増分ごとに移行するトラフィックの割合 (%) と、増分間の間隔 (分) を指定する、事前定義済み線形オプションから選択できます。

  • All-at-once: トラフィックはすべて、元の Lambda 関数から最新バージョンの Lambda 関数に一度に移行されます。

独自の Canary または線形のデプロイ設定を作成することもできます。

AWS Lambda コンピューティングプラットフォームの事前定義されたデプロイ設定

次の表に、AWS Lambda のデプロイで利用できる事前定義された設定を一覧表示します。

デプロイ設定 説明

CodeDeployDefault.LambdaCanary10Percent5Minutes

最初の増分でトラフィックの 10 パーセントを移行します。残りの 90 パーセントは 5 分後にデプロイされます。

CodeDeployDefault.LambdaCanary10Percent10Minutes

最初の増分でトラフィックの 10 パーセントを移行します。残りの 90 パーセントは 10 分後にデプロイされます。

CodeDeployDefault.LambdaCanary10Percent15Minutes

最初の増分でトラフィックの 10 パーセントを移行します。残りの 90 パーセントは 15 分後にデプロイされます。

CodeDeployDefault.LambdaCanary10Percent30Minutes

最初の増分でトラフィックの 10 パーセントを移行します。残りの 90 パーセントは 30 分後にデプロイされます。

CodeDeployDefault.LambdaLinear10PercentEvery1Minute

すべてのトラフィックが移行されるまで、毎分トラフィックの 10 パーセントを移行します。

CodeDeployDefault.LambdaLinear10PercentEvery2Minutes

すべてのトラフィックが移行されるまで、2 分ごとにトラフィックの 10 パーセントを移行します。

CodeDeployDefault.LambdaLinear10PercentEvery3Minutes

すべてのトラフィックが移行されるまで、3 分ごとにトラフィックの 10 パーセントを移行します。

CodeDeployDefault.LambdaLinear10PercentEvery10Minutes すべてのトラフィックが移行されるまで、10 分ごとにトラフィックの 10 パーセントを移行します。
CodeDeployDefault.LambdaAllAtOnce

すべてのトラフィックは、更新された Lambda 関数に一度に移行します。

トピック