CodeDeploy
入力
Gitリポジトリとしては GitHub
ビルド済みのアーティファクトとしては S3
ルートの .appspec が設定ファイルとなる。
アプリケーションに関する設定であって、デプロイ対象とかをここに書くわけでは無い
デプロイ対象
EC2, AutoScaling Group, ECS, Lambda が対象。
また、オンプレミスサーバに対してもデプロイすることができる。
EC2, 他サーバにデプロイする時 CodeDeploy Agent をインストールしておく必要がある。
デプロイ戦略
In-Place
稼働中のやつを止めて更新する手順
ダウンタイムがある
ECS, Lambda には 更新 の概念がないので適用できない
Blue/Green
新しいのを作って入れ替える
ダウンタイムがない
フックイベント
https://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/reference-appspec-file-structure-hooks.html
ApplicationStop
DownloadBundle
BeforeInstall
AfterInstall と似てて、置き換えタスクセット作成前に実行される。
この時点のエラーにロールバックは不要。
AfterInstall
置き換えタスクセットが作成、ターゲットグループへの関連付け後に実行される。
ここでのフック関数の結果をもってロールバックするときに使える。
デプロイ戦略によってはここでのロールバックは不要。
ApplicationStart
ValidateService
デプロイイベントの最後に実行される。名前の通りの用途。
ここでロールバックするのもありだけど、ダウンタイムは必至という気がする。
BeforeAllowTraffic
ターゲットグループが置き換えタスクを始める前に実行される。
Lambda のデプロイについてはまだ旧バージョンが生きている。
AfterAllowTraffic
ターゲットグループが置き換えタスクを完了してトラフィック提供し始めた後に実行される。
外径監視がここから有効に働き出すイメージだろうか。
ここでロールバックするのもありだけど、ダウンタイムは必至という気がする。
デプロイID
ロールバック時のIDは新規に発行されたものになる
デプロイメントグループ
対象リソースにタグを付与して CodeDeploy がグループ認識できるようにする。
デプロイ・ロールバックなどを実施するタイミングを個別設定できる。