AWS CodeDeploy のエラーと解決策:セキュリティトークンの期限切れ問題
AWS CodeDeploy を試していた際、最初のステップですら実行されず、AWS コンソールには「デプロイできなかった」と表示されていました。問題の詳細を確認するために、EC2 インスタンスにログインして codedeploy-agent
のログを確認しました。
エラーログ
以下のエラーメッセージが codedeploy-agent
のログに繰り返し出力されていました。
$ tail -f /var/log/aws/codedeploy-agent/codedeploy-agent.log
2024-10-05T10:59:04 ERROR [codedeploy-agent(19926)]: InstanceAgent::Plugins::CodeDeployPlugin::CommandPoller: Error polling for host commands: Aws::CodeDeployCommand::Errors::UnrecognizedClientException - The security token included in the request is invalid.
どうやら AWS にアクセスするためのセキュリティトークンが無効になっているようです。続いて、以下のエラーも発生していました。
2024-10-05T16:50:06 INFO [codedeploy-agent(19926)]: [Aws::CodeDeployCommand::Client 400 2.16029 3 retries] poll_host_command(host_identifier:"arn:aws:ec2:ap-northeast-1:326141484871:instance/i-0f73b74490d872733") Aws::CodeDeployCommand::Errors::ExpiredTokenException The security token included in the request is expired
このエラーは、セキュリティトークンの期限が切れていたことを示しています。
試した解決策
以下の対応を試しました。
-
codedeploy-agent の再インストール
- エラーメッセージは変わらず、問題は解決しませんでした。
-
IAM ロールのデタッチと再アタッチ
- この手順を実施したところ、エラーメッセージが消え、デプロイが成功しました。
考察
正確な原因は特定できませんでしたが、EC2 インスタンス上で codedeploy-agent
が利用するセキュリティトークンが不正(または期限切れ)となった場合、IAM ロールのデタッチと再アタッチが有効な解決策になる可能性があります。同様の問題に直面した際には、この方法を試してみると良いかもしれません。