由于 "HEALTH_CONSTRAINTS",AWS 部署失败

AWS Deployment Failed due to "HEALTH_CONSTRAINTS"

我正在处理一个场景,我需要将代码从 GIT 存储库推送到 AWS 实例。为此,我使用了 AWS CodeDeploy 功能。但是在部署代码过程的最后一步,我收到以下错误。

Deployment Failed The overall deployment failed because too many individual instances failed deployment, too few healthy instances are available for deployment, or some instances in your deployment group are experiencing problems. (Error code: HEALTH_CONSTRAINTS)

您收到该错误的直接原因是 CodeDeploy 无法继续部署,因为太多的实例不健康。 "minimumHealthyHosts" 在确定确切数字方面发挥了作用。您可以检查该参数 [1][2].

话虽如此,一开始,将该值设置为较低(即几乎为 0)会更容易。或者 select "AllAtOnce" 部署配置。

[1] http://docs.aws.amazon.com/cli/latest/reference/deploy/get-deployment-config.html

[2] http://docs.aws.amazon.com/codedeploy/latest/userguide/host-health.html

如果 EC2 实例没有正确的 IAM 角色,您会看到此错误。使用策略 "AmazonEC2RoleforAWSCodeDeploy" 创建 IAM 角色。您无法将 IAM 角色添加到现有实例,因此您必须启动一个新实例。

还要确保您已经为正确的区域安装了 CodeDeploy 代理,例如us-east-1:

apt-get -y install awscli ruby2.0
aws s3 cp s3://aws-codedeploy-us-east-1/latest/install . --region us-east-1
chmod +x ./install
./install auto

http://docs.aws.amazon.com/codedeploy/latest/userguide/how-to-set-up-new-instance.html

如果我忘记将 CodeDeploy 代理安装到实例,我会反复从 CodeDeploy 工具中收到相同的错误。为了以防万一这里是文档的link:http://docs.aws.amazon.com/codedeploy/latest/userguide/how-to-run-agent-install.html

只是添加到@spro/@mathieu-m-gosselin 的回答中,即使 aws 现在允许 attach/replace 运行 实例上的 IAM 角色,但这还不够在这个用例中,您必须在 attach/replace 一个新的 IAM 角色后重启实例。