今天,我们的 CodeDeploy 设置在其中一个实例中开始失败,并出现以下错误:
整体部署失败,原因是太多单个实例部署失败、可供部署的健康实例太少,或者部署组中的某些实例遇到问题。(错误代码:HEALTH_CONSTRAINTS)
检查两台服务器上的 /var/log/aws/codedeploy-agent/codedeploy-agent.log 后,其中一台出现以下错误:
2017-07-13 15:45:57 INFO [codedeploy-agent(10192)]: [Aws::CodeDeployCommand::Client 400 0.013838 0 retries] poll_host_command(host_identifier:"arn:aws:ec2:us-west-2:088736878764:instance/xxxx") Aws::CodeDeployCommand::Errors::UnrecognizedClientException The security token included in the request is invalid.
2017-07-13 15:45:57 ERROR [codedeploy-agent(10192)]: InstanceAgent::Plugins::CodeDeployPlugin::CommandPoller: Cannot reach InstanceService: Aws::CodeDeployCommand::Errors::UnrecognizedClientException - The security token included in the request is invalid.
如何解决这个问题?我不知道该从哪里开始。
此服务器上的唯一更改是:max_revisions: 2
在 codedeployagent.yml 中进行设置,重新启动 codedeploy-agent,然后删除(由于磁盘空间限制)/opt/codedeploy-agent/deployment-root/ 中日期为 2016 年的旧修订文件夹。
我记得手动删除修订版本(以 d-xxx 开头的修订版本)积极的修订文件夹(具有长哈希 ID 名称的文件夹)会给 CodeDeploy 带来大问题,唯一的解决方案是重新创建部署应用程序。但这里不可能出现这种情况,不是吗?
答案1
我已经发布了同样的问题https://forums.aws.amazon.com/thread.jspa?messageID=794706#794706,我会把这个留在这里,以防它出现在谷歌上。
它不起作用,因为我在 ~/.aws 中配置了一组凭证,并且无论出于什么原因,它开始干扰 CodeDeploy,即使这个配置已经存在 2 年多了并且运行良好。