inu

今まで普通に動いてたはずの CodeDeploy が失敗するようになった時のトラブルシュート

起きたこと

CodeDeploy agent was not able to receive the lifecycle event. Check the CodeDeploy agent logs on your host and make sure the agent is running and can connect to the CodeDeploy server.

久しぶりに CodeDeploy で EC2 インスタンスへのデプロイを実行したら、動かなくなっていた。 UnknownError じゃね〜んだよ。

EC2 インスタンス上の CodeDeploy エージェントは動いている。

$ sudo service codedeploy-agent status
The AWS CodeDeploy agent is running as PID 596

が、ログを確認したらエラーが出ていた。

$ sudo vi /var/log/aws/codedeploy-agent/codedeploy-agent.log
2025-04-08 22:22:57 ERROR [codedeploy-agent(6286)]: InstanceAgent::Plugins::CodeDeployPlugin::CommandPoller: Cannot reach InstanceService: Aws::CodeDeployCommand::Errors::InvalidSignatureException - Signature not yet current: 20250408T132257Z is still later than 20250408T131010Z (20250408T130510Z + 5 min.)

原因

CodeDeploy では、オペレーションを実行するために正確な時間の参照が必要です。インスタンスの日時が正しく設定されていない場合は、デプロイリクエストの署名と一致しないことがあり、その場合は CodeDeploy によってリクエストが却下されます。

https://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/troubleshooting-ec2-instances.html#troubleshooting-instance-time-failures

というわけで、原因はインスタンスの時計が合っていないことでした。

解決方法

このあたりを見つつ時計合わせを行う。 https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/configure-ec2-ntp.html

「デプロイの再試行」で、無事通りました。