无法使用CodeDeploy部署代码

时间:2016-05-17 10:46:37

标签: ubuntu amazon-web-services amazon-s3 amazon-ec2 aws-code-deploy

我正在尝试使用CodeDeploy部署我的应用程序,但每次遇到Deployment Failed消息时附加的附加信息都说明:No hosts succeeded. (Error code: HEALTH_CONSTRAINTS)

我不明白这个的原因。以下是按顺序执行的步骤:

  • 我使用IAM角色启动了实例,该角色包含2个附加AmazonEC2FullAccessAmazonS3FullAccess的策略。后来的政策建议如下:

     {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "s3:*",
          "Resource": "*"
        }
      ]
    }
    
  • 从aws控制台启动实例时,我在高级部分中指定了以下内容:(选择文本)

    apt-get -y update
    apt-get -y install awscli
    apt-get -y install ruby2.0
    cd /home/ubuntu
    aws s3 cp s3://aws-codedeploy-us-west-2/latest/install . --region us-west-2
    chmod +x ./install
    ./install auto
    
  • 为了推送代码,我写道:

    aws deploy push --application-name CDTestApp --s3-location s3://codedeploy-test-bucket-pc/PC.zip --source PulsarCloud/
    
  • 要部署,我写道:

    aws deploy create-deployment --application-name CDTestApp --s3-location bucket=codedeploy-test-bucket-pc,key=PC.zip,bundleType
    zip,eTag="834db424710b1819b753444460dd361d" --deployment-group-name CDGroup 
    --deployment-config-name CodeDeployDefault.OneAtATime  --description 
    MyTestApplication
    
  • 我得到了deployment id作为回报。

  • 过了一段时间,部署就变成了失败!

  • appspec.yml:

    version: 0.0
    
    os: linux 
    
    files:
    - source: /sdk/js/index.html
      destination: /var/www/html
    
    hooks:
     BeforeInstall:
      - location: /installerassets/installer.sh
        timeout: 6000
        runas: root
    

这可能是什么原因?

当我登录机器并输入时:

sudo service codedeploy-agent status

我得到了:codedeploy-agent: unrecognized service

但后来我尝试使用步骤here重新安装它。该服务正在运行,但无法部署代码。

2 个答案:

答案 0 :(得分:2)

有几点要指出:

  • (仅用于完整性检查),发布的角色只有s3,但不是ec2?
  • codedeploy.amazonaws.com是否包含在角色的信任关系中?
  • 要安装代理,请使用sudo ./install auto

无法识别codedeploy-agent这一事实意味着未安装代理。这可能是因为没有使用sudo。

要解释您看到的错误代码:HEALTH_CONSTRAINT违反意味着使用默认的逐个部署配置。当第一个实例的部署失败时,违反了最小健康实例限制(即1),因此部署将失败。

答案 1 :(得分:0)

此外,在确认安装了codedeploy代理后,请确保
1. EC2实例有权从s3存储桶中获取数据,其中存在修订版本 2. Codedeploy服务角色也附有以下政策:

     {
       "Version": "2012-10-17",
       "Statement": [
         {
           "Effect": "Allow",
           "Action": [
             "ec2:DescribeInstances",
             "ec2:DescribeInstanceStatus",
             "tag:GetTags",
             "tag:GetResources"
           ],
           "Resource": "*"
         }
       ]
     }

3。正确标记EC2实例并在codedeploy中提供相同的键值对

相关问题