【问题标题】:AWS Deployment Failed due to "HEALTH_CONSTRAINTS"由于“HEALTH_CONSTRAINTS”,AWS 部署失败
【发布时间】:2017-01-01 18:18:02
【问题描述】:

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

部署失败 整体部署失败,因为太多单个实例部署失败,可用于部署的健康实例太少,或者部署组中的某些实例遇到问题。 (错误代码:HEALTH_CONSTRAINTS)

【问题讨论】:

    标签: git amazon-web-services amazon-ec2 aws-code-deploy


    【解决方案1】:

    如果 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

    【讨论】:

    • 您现在可以在正在运行的实例上附加/替换 IAM 角色:aws.amazon.com/blogs/security/…
    • 来自下面的答案:只是为了添加到 @spro/@mathieu-m-gosselin 的答案中,即使 aws 现在允许在正在运行的实例上附加/替换 IAM 角色,但它不是对于这个用例来说已经足够了,您必须在附加/替换新的 IAM 角色后重新启动实例。分享
    【解决方案2】:

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

    【讨论】:

    • 顺便提一下,如果您在创建实例后设置user data,则不会安装 CodeDeploy 代理。您必须按照上述说明将其安装到您的实例。
    【解决方案3】:

    只是为了添加到@spro/@mathieu-m-gosselin 的答案,即使 aws 现在允许在正在运行的实例上附加/替换 IAM 角色,但对于这个用例来说还不够,您必须重新启动附加/替换新 IAM 角色后的实例。

    【讨论】:

    • 这绝对应该是答案的一部分。
    【解决方案4】:

    您收到该错误的直接原因是 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

    【讨论】:

    • 您好 Calvin,非常感谢您的快速回复。是的,我尝试过使用“AllAtOnce”部署配置。但我仍然收到上述错误。此外,当前实例未连接到任何 IAM 角色。那么这可能是原因之一吗?如果是这样,我们如何创建新的 IAM 角色并将其分配给此实例。
    • 是的,EC2 实例必须有权读取 s3 存储桶(如果您的工件/包存储在那里)。首先,创建一个对您的存储桶具有相关 s3:* 权限的 IAM 策略。然后,创建角色(选择 EC2 作为实体)并分配之前创建的策略。接下来,在您启动新的 EC2 机器时指定实例配置文件的角色。
    猜你喜欢
    • 1970-01-01
    • 2016-12-10
    • 2020-04-29
    • 2021-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-26
    相关资源
    最近更新 更多