0

我試圖使用CodeDeploy部署我的應用程序,但每次遇到時,附帶說明的附加信息Deployment Failed消息:No hosts succeeded. (Error code: HEALTH_CONSTRAINTS)無法使用CodeDeploy部署代碼

我不明白這個原因。以下是順序執行的步驟:

  • 我啓動的實例與貼有AmazonEC2FullAccessAmazonS3FullAccess 2項政策的IAM角色。後來的政策建議如下:

    { 
        "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重新安裝。該服務正在運行,但無法部署代碼。

+0

是代理運行或不?你最後的幾個陳述不清楚。你有沒有'sudo service codedeploy-agent status'工作或沒有? –

回答

1

幾件事情要指出:

  • (只是爲了健全檢查的目的),作用僅發佈了S3,而不是EC2?
  • 是否將codedeploy.amazonaws.com包含在角色的信任關係中?
  • 要安裝代理,須藤./INSTALL汽車應使用

是codedeploy代理不承認這一事實意味着該代理沒有安裝。這可能是由於sudo沒有使用。

要解釋您看到的錯誤代碼:HEALTH_CONSTRAINT違規意味着使用默認的一個部署配置。當第一個實例的部署失敗時,最小健康實例限制(即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提供相同的鍵值對