LoginSignup
19
17

More than 5 years have passed since last update.

【AWS CodeDeploy】AWS CodeDeployでのデプロイに失敗する。【Error code: HEALTH_CONSTRAINTS】

Last updated at Posted at 2018-11-15

【事象】

デプロイメントパイプラインをAWSのサービスで作っていた際に、AWS CodeDeployでのデプロイに失敗して辛かった話。

【解決】

デプロイ対象のEC2に、IAMロールが足りていなかったので付け足したらうまくいった。

【詳細】

デプロイに失敗し、下記のようなエラーがでた。

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. (Error code: HEALTH_CONSTRAINTS
https://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/error-codes.html?icmpid=docs_acd_console#ecode_health_constraints

AWSのエラーメッセージは、都度都度ドキュメントに飛ばしてくれるのでありがたいですね~。
エラーメッセージは、なんかFailしたことくらいしかわかりませんが、エラーコードもURLも確認できました。
これならすんなりいけるはず。さて、URL先を見てみます。

Error code: HEALTH_CONSTRAINTS
https://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/error-codes.html?icmpid=docs_acd_console#ecode_health_constraints

デプロイに失敗した個別のインスタンスが多すぎる、デプロイに使用できる正常なインスタンスが少なすぎる、またはデプロイグループの一部のインスタンスで問題が発生しているため、全体的なデプロイが失敗しました。

(´ω`) 和訳しただけかと、その問題を言ってくれと....。

ここから、AppSpec File、時間ずれ、エンコード、ファイルのパーミッション等々、調べていったものの
何れも自体には問題ない模様...。
→AWSのサービスそのものの問題から、お叱りを頂いているのかもしれません。

あーっ!お客様!困ります!あーっ!!

エラーメッセージの Error code: HEALTH_CONSTRAINTS からドキュメントを読んでみましょう。

AWS CodeDeploy デプロイのログデータの表示
https://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/deployments-view-logs.html

なにやらAWS CodeDeployは、エージェント型だけあって、ログを保持してくれている模様です。
ていうか、CloudWatchってここ読んでんだ。へぇ~。

実際に実機の codedeploy-agent のログを確認してみると、きっちりエラーが出ていました。
※codedeploy-agent のログファイルは、 /var/log/aws/codedeploy-agent/codedeploy-agent.log がデフォです。

# tail -F /var/log/aws/codedeploy-agent/codedeploy-agent.log
ERROR [codedeploy-agent(8311)]: InstanceAgent::Plugins::CodeDeployPlugin::CommandPoller: Missing credentials - please check if this instance was started with an IAM instance profile

僕は癖で使っているのですが、 `tail` の `-F` 便利ですよ~。
ファイル上書きにも対応できるので、再現性テストの際には `-F` をおすすめしたく...。

さてさて、内容としては、「IAMの設定とかをきっちり見なさい」と出ていました。
EC2のIAMの設定を見てみると、必要な権限をEC2にアタッチしていなかったことが判明しました。
→IAM ロールを対象のEC2にアタッチ → codedeploy-agentをrestart → 再デプロイ → 無事 SUCESS!!!!

ありがたきドキュメント集

・IAM ロールのアタッチ
 Amazon EC2 の IAM ロール
 IAM ロールをインスタンスにアタッチする
 https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#attach-iam-role

・必要なポリシー等が書かれたドキュメント
 AWS CodeDeploy でアイデンティティベースのポリシー (IAM ポリシー) を使用する
 AWS CodeDeploy での AWS 管理 (事前定義) ポリシー
 https://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/auth-and-access-control-iam-identity-based-access-control.html

参考

『続・終物語』が2018年秋より、全国劇場にてイベント上映
https://www.monogatari-series.com/news/?article_id=45902
ついに公開ですね~。
常に半年先のアニメ事情を知っておく というのもキャリア形成上大事ですね。

AppSpec File の構造
https://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/reference-appspec-file-structure.html

AWS CodeDeploy での AWS 管理 (事前定義) ポリシー
https://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/auth-and-access-control-iam-identity-based-access-control.html

19
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
17