最近 CodeDeploy の検証をしていて,codedeploy-agent のエラーログに少しハマったので,メモ程度に残しておく.
Amazon Linux に codedeploy-agent をインストールする
公式ドキュメントに書いてある手順で,問題なくインストールできた.
$ wget https://aws-codedeploy-ap-northeast-1.s3.amazonaws.com/latest/install $ chmod +x ./install $ sudo ./install auto $ sudo service codedeploy-agent status The AWS CodeDeploy agent is running as PID 29095
IAM Role を割り当てる
CodeDeploy を使う場合,2種類の IAM Role を作る必要がある.今回は公式ドキュメントの通りに設定をした.
- CodeDeploy に割り当てる IAM Role
- EC2 に割り当てる IAM Role
エラーログ : Missing credentials
次に codedeploy-agent のログファイル /var/log/aws/codedeploy-agent/codedeploy-agent.log
を見ると,以下のようなエラーログがずっと出ていた.
2018-06-25 22:44:53 INFO [codedeploy-agent(8311)]: Version file found in /opt/codedeploy-agent/.version with agent version OFFICIAL_1.0-1.1518_rpm. 2018-06-25 22:44:53 ERROR [codedeploy-agent(8311)]: InstanceAgent::Plugins::CodeDeployPlugin::CommandPoller: Missing credentials - please check if this instance was started with an IAM instance profile 2018-06-25 22:46:23 INFO [codedeploy-agent(8311)]: Version file found in /opt/codedeploy-agent/.version with agent version OFFICIAL_1.0-1.1518_rpm. 2018-06-25 22:46:23 ERROR [codedeploy-agent(8311)]: InstanceAgent::Plugins::CodeDeployPlugin::CommandPoller: Missing credentials - please check if this instance was started with an IAM instance profile
Missing credentials - please check if this instance was started with an IAM instance profile
と出ているので,EC2 に割り当てた IAM Role 関連だなーと思ったけど,何度見直してもうまく割り当たっていて,最終的に codedeploy-agent を再起動したら解決した.ウッ!
$ sudo service codedeploy-agent restart
Restarting codedeploy-agent:
まとめ
今回インスタンスを起動してから IAM Role を割り当てたので,順番が良くなくて,無駄にハマってしまった.「IAM Role を後から割り当てる場合は codedeploy-agent を再起動する」と覚えておくと良さそう.引き続き CodeDeploy を検証するぞ!