結論
CodeDeployなどログを直接確認できないサービスにおいては、その処理に関連するサービス、リソースのところに行き何か手がかりとなるものがないか探すのが良い!
事案
CodePiplineを実行しDeploy stageの段階に来たときに
Step 1. Deploying replacement task set
Deployment lifecycle events
がinstall
にてin progress
の状態で一生止まっていた
直接ログ確認などができずどうしたものかと悩んでいた
冷静に考えてみるとDeploying replacement task set
ということでタスクの切り替えを行なっている段階ということでタスク関連であると
そこで今回のデプロイで使用されているタスク定義を調べた
CodeDeploy > Deploy > Deployments > Deploy
画面にてRevision details
からRevisionの詳細画面にいくとappspec.yaml
を確認することができる
ここから使用されている当該バージョンタスク定義の詳細を見に行き設定がしっかりなされているかを確認した
今回の場合で言うとappspec.yaml
のTaskDefinition
はtaskdef.json
ファイルに記述したタスク定義となっているのでファイル内容に誤りがないかを確認した
基本的にtaskdef.json
はあらかじめ作成しておいたタスク定義をjson formatでコピーしたものであり修正箇所というとimage
プロパティを<IMAGE1_NAME>
にする箇所なのでそこのチェックをしたが誤りを見つけることはできなかった
次にタスクを実行させる場面に原因があると思いECS Serviceからタスク実行ログが見るのでそこの確認をしに行った
するとタスク実行停止イベントの山のように存在していた笑
停止されたタスクの停止理由の箇所を確認するとGreen DeploymentにてHealthcheckの設定が/healthcheck
となっていた
通常であればこれが普通の設定であるが今回テスト的に実行していたので/healthcheck
パスに何も設定しておらず/
しかレスポンスが返ってこない状況であった
今回の収穫としては、CodeDeployではCodeBuildのようなログを直接確認できるものはないのでDeployの各段階で行なっている処理に関連するサービス、リソースを確認していくことが重要であるという知見を得た