起きたこと
久しぶりに 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/AWSEC2/latest/UserGuide/configure-ec2-ntp.html
「デプロイの再試行」で、無事通りました。