我正在开发一个场景,我需要将代码从GIT存储库推送到AWS Instance。为实现这一目标,我使用的是 AWS CodeDeploy 功能。但是在部署代码的过程的最后一步,我收到以下错误。
部署失败 整体部署失败,因为太多单个实例部署失败,可用于部署的健康实例太少,或者部署组中的某些实例遇到问题。 (错误代码:HEALTH_CONSTRAINTS)
答案 0 :(得分:7)
如果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
答案 1 :(得分:5)
如果忘记将CodeDeploy代理安装到实例,我会反复从CodeDeploy工具中获取相同的错误。以防这里是文档的链接:http://docs.aws.amazon.com/codedeploy/latest/userguide/how-to-run-agent-install.html
答案 2 :(得分:2)
只是添加到@spro / @ mathieu-m-gosselin的答案,即使aws现在允许在正在运行的实例上附加/替换IAM角色但是对于这个用例是不够的,你必须重新启动附加/替换新的IAM角色后的实例。
答案 3 :(得分:0)
您收到该错误的直接原因是CodeDeploy无法继续部署,因为太多实例不健康。 “minimumHealthyHosts”在确定确切数量方面发挥了作用。您可以检查参数[1] [2]。
尽管如此,首先,将该值设置为低(即几乎为0)会更容易。或者选择“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