Closed1

【DOP】CodeDeploy EC2のデプロイの設定について

kenryokenryo

https://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/deployment-configurations.html
https://qiita.com/yuuulf/items/1a0a458f46700ec42612
https://qiita.com/hojishi/items/1b5ab7fe96f4a03c4ead#oneatatime-で最後の1台のデプロイ失敗は無視される

概要

CodeDeployでEC2にデプロイする際に選択できるデプロイ設定は以下の3つがあります。

  • CodeDeployDefault.AllAtOnce
  • CodeDeployDefault.HalfAtATime
  • CodeDeployDefault.OneAtATime

また、デプロイタイプは以下2つを選択できます。

  • インプレース
    • 既存インスタンスにデプロイする。デプロイ中ダウンタイムが発生する。
  • Blue/Green
    • 既存環境を複製し、そこにデプロイする。ダウンタイムが発生しない。
    • 複製環境にデプロイ完了後、トラフィックの向き先を既存から複製に切り替える。

それぞれの組み合わせによってデプロイの仕方が異なります。

CodeDeployDefault.AllAtOnce

インプレースの場合

一度に多くのインスタンスにデプロイを試みます。
複数あるインスタンスの内、1つでもデプロイに成功すると全体のデプロイ結果はSucceededになります。
複数あるインスタンスの内、全て失敗するとFailedになります。

Blue/Greenの場合

複製環境へのデプロイはインプレースと同様に行われます。
トラフィックの向き先変更は、一度に全てのインスタンスに対して行われます。
複数あるインスタンスの内、1つでもトラフィック先変更に成功すると全体のデプロイ結果はSucceededになります。
複数あるインスタンスの内、全て失敗するとFailedになります。

CodeDeployDefault.HalfAtATime

インプレースの場合

一度に最大半分のインスタンスにデプロイを試みます。端数がある場合切り捨てられます。
デプロイ全体で半分のインスタンスへのデプロイに成功するとSucceededになります。
それ未満の場合、Failedになります。

Blue/Greenの場合

複製環境へのデプロイはインプレースと同様に行われます。
トラフィックの向き先変更は、一度に最大半分のインスタンスに対して行われます。
全体インスタンスの内、半分以上トラフィック先変更に成功すると全体のデプロイ結果はSucceededになります。
それ未満の場合、Failedになります。

CodeDeployDefault.OneAtATime

インプレースの場合

一度に一つのインスタンスにデプロイを試みます。
複数あるインスタンスの内、最後の1つを除く全インスタンスへのデプロイに成功するとSucceededになります。(最後のインスタンスへのデプロイに失敗しても、残りが全て成功すればSucceededになります)
最後の1つを除くインスタンスの内1つでもデプロイに失敗した場合、Failedになります。

Blue/Greenの場合

複製環境へのデプロイはインプレースと同様に行われます。
トラフィックの向き先変更は、一度に一つのインスタンスに対して行われます。
複数あるインスタンスの内、最後の1つを除く全インスタンスへのトラフィック先変更に成功すると全体のデプロイ結果はSucceededになります。
最後の1つを除くインスタンスの内1つでも失敗した場合、Failedになります。

このスクラップは2022/01/22にクローズされました