AWS CodePipeline での AWS CodeDeploy でのデプロイでエラーになった場合のトラブル対応手順について解説します。
CI/CD のサンプルとしては他にも以下の記事があります。
CodeDeploy の解説です。
AWS CodeDeploy
【AWS】CodeDeployとAuto Scaling+ALBを組み合わせる環境の構築手順
【AWS】DevOps(CI/CD)の導入手順(Spring Tools、Git、CodePipeline、CodeCommit、CodeBuild、CodeDeploy)
【AWS】DevOps(CI/CD)の導入手順(CodePipeline、CodeCommit、CodeBuild、CodeDeploy)
【AWS】DevOps(CI/CD)の導入手順(Angular、Git、CodePipeline、CodeCommit、CodeBuild、CodeDeploy、Auto Scaling、ALB の組み合わせ)
CodeDeploy でデプロイした際によく見るエラー
CodeDeploy でデプロイした際に以下の画像のエラーをよく見ます。
このようなエラーを出力して失敗した場合はどこを調査すればいいのか?
=====================
The overall deployment failed because too many individual instances failed deployment,
too few healthy instances are available for deployment,
or some instances in your deployment group are experiencing problems.
=====================
Googleで翻訳すると特に参考にならないメッセージであることが分かります。
=====================
展開に失敗した個々のインスタンスが多すぎる、展開に使用できる正常なインスタンスが少なすぎる、または展開グループ内の一部のインスタンスで問題が発生しているため、全体的な展開が失敗しました。
=====================
しかし、このメッセージを読んだだけでは全く原因が分かりません。
そこで上記のエラーが出力された場合にどこを調査すればいいのかを以下に解説します。
codedeploy-agent プロセスが起動しているか確認する
まずは codedeploy-agent プロセスが起動しているか確認します。
Auto Scaling グループにて起動している EC2インスタンスにログインして ps コマンドで codedeploy-agent プロセスの起動確認をします。
■ps コマンドで codedeploy-agent の起動確認
[root@ip-10-0-12-63 codedeploy-agent]# ps -ef | grep codedeploy-agent | grep -v grep |
■service コマンドで codedeploy-agent の起動確認
[root@ip-10-0-10-234 ~]# service codedeploy-agent status |
起動していない場合は以下のように起動します。
■service コマンドで codedeploy-agent を起動する
[root@ip-10-0-12-63 codedeploy-agent]# service codedeploy-agent start [root@ip-10-0-12-63 codedeploy-agent]# |
以下のコマンドで codedeploy-agent を再起動できます。
■service コマンドで codedeploy-agent を再起動する
[root@ip-10-0-12-63 codedeploy-agent]# service codedeploy-agent restart [root@ip-10-0-12-63 codedeploy-agent]# |
/var/log/aws/codedeploy-agent/codedeploy-agent.log ログを確認する
次に /var/log/aws/codedeploy-agent/codedeploy-agent.log ログを確認します。
■service コマンドで codedeploy-agent を再起動する
[root@ip-10-0-12-63 codedeploy-agent]# tail -n 1000 /var/log/aws/codedeploy-agent/codedeploy-agent.log |
EC2 インスタンスがインターネットにアクセスできるか確認する
EC2 インスタンスがインターネットにアクセスできるか確認します。
EC2 インスタンスがインターネットにサクセス出来ないと /var/log/aws/codedeploy-agent/codedeploy-agent.log ログに以下のようなエラーが出力されます。
2021-10-09 06:21:24 ERROR [codedeploy-agent(3874)]: Error validating the SSL configuration: Invalid server certificate |
もし EC2 インスタンスがプライベートサブネットに配置されている場合は NATゲートウェイでインターネットにアクセスできるようにネットワークの設定をします。
EC2 インスタンスに割り当てたインスタンスプロファイル(IAMロール)が適切か確認する
EC2 インスタンスに割り当てたインスタンスプロファイル(IAMロール)が適切か確認します。
対象の EC2インスタンスを選択し「アクション」‐「セキュリティ」‐「IAM ロールを変更」を
適切な IAM ロール(インスタンスプロファイル)が適用されていることを確認します。
コメント