2016-08-04 50 views
3

我已經根據本文AWS代碼部署+ =到位桶失敗(錯誤代碼HEALTH_CONSTRAINTS)

https://aws.amazon.com/tw/blogs/apn/announcing-atlassian-bitbucket-support-for-aws-codedeploy/

這裏設置的一切是我的ENV:

實例(自由層與亞馬遜linux)
- apache 2.4安裝

安全組
- 只有22(只有我的IP可以訪問)和80端口被打開

iptables的停止

2角色設置
- 一個用於連接S3 < - >到位桶 (附自定義策略)
- 一個角色是部署組 (附AWSCodeDeployRole政策)

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Sid": "", 
     "Effect": "Allow", 
     "Principal": { 
     "Service": "codedeploy.amazonaws.com" 
     }, 
     "Action": "sts:AssumeRole" 
    } 
    ] 
} 

腳本試圖部署是
https://s3.amazonaws.com/aws-codedeploy-us-east-1/samples/latest/SampleApp_Linux.zip

權限 在/ var/WWW/*由EC2用戶755許可

代理 服務codedeploy代理狀態資= AWS CodeDeploy代理正在以PID運行7200

線索: 我的s3存儲桶中有一些zip文件會上傳用於每個部署。

錯誤代碼:HEALTH_CONSTRAINTS

任何人有一個想法是什麼部署的原因失敗?

update1我用iam配置文件重新啓動實例後,可以部署應用程序。但它仍然是失敗的,當我點擊查看事件,還有數如下:

Error CodeScriptFailed 
Script Namescripts/install_dependencies 
MessageScript at specified location: scripts/install_dependencies run as user root failed with exit code 1 
Log TailLifecycleEvent - BeforeInstall 
Script - scripts/install_dependencies 
[stdout]Loaded plugins: priorities, update-motd, upgrade-helper 
[stdout]Resolving Dependencies 
[stdout]--> Running transaction check 
[stdout]---> Package httpd.x86_64 0:2.2.31-1.8.amzn1 will be installed 
[stdout]--> Processing Dependency: httpd-tools = 2.2.31-1.8.amzn1 for package: httpd-2.2.31-1.8.amzn1.x86_64 
[stdout]--> Processing Dependency: apr-util-ldap for package: httpd-2.2.31-1.8.amzn1.x86_64 
[stdout]--> Running transaction check 
[stdout]---> Package apr-util-ldap.x86_64 0:1.4.1-4.17.amzn1 will be installed 
[stdout]---> Package httpd-tools.x86_64 0:2.2.31-1.8.amzn1 will be installed 
[stdout]--> Processing Conflict: httpd24-2.4.23-1.66.amzn1.x86_64 conflicts httpd < 2.4.23 
[stdout]--> Processing Conflict: httpd24-tools-2.4.23-1.66.amzn1.x86_64 conflicts httpd-tools < 2.4.23 
[stdout]--> Finished Dependency Resolution 
[stderr]Error: httpd24-tools conflicts with httpd-tools-2.2.31-1.8.amzn1.x86_64 
[stderr]Error: httpd24 conflicts with httpd-2.2.31-1.8.amzn1.x86_64 
[stdout] You could try using --skip-broken to work around the problem 
[stdout] You could try running: rpm -Va --nofiles --nodigest 

任何人有什麼問題?

回答

0

這取決於您的部署配置,但基本上有一個或多個部署失敗。

HEALTH_CONSTRAINTS:部署失敗太多的實例是 成功部署實例健康限制範圍內指定

http://docs.aws.amazon.com/codedeploy/latest/APIReference/API_ErrorInformation.html

檢查deployment configuration settings。部署的整體失敗/成功基於這些設置。嘗試CodeDeployDefault.AllAtOnce,然後根據需要撥入。

此外,仔細檢查AWS CodeDeploy Instance Health設置,尤其是minimum-healthy-hosts

2

錯誤代碼HEALTH_CONSTRAINTS意味着更多的情況下失敗比預期的,這是由部署配置定義的。

有關部署失敗的原因的詳細信息,請在部署控制檯https://region.console.aws.amazon.com/codedeploy/home?region=region#/deployments上單擊失敗的deploymentID,然後重定向到包含指定部署中包含的所有實例的部署詳細信息頁面,以及每行包含實例的生命週期事件。然後點擊ViewEvents,如果有View Logs鏈接,你可以看到這個實例部署失敗的原因。

如果控制檯沒有足夠的信息來滿足您的需要,那麼實例上的日誌可以在less /var/log/aws/codedeploy-agent/codedeploy-agent.log中找到。它包含最近部署的日誌。

+0

我找到在日誌中的錯誤:InstanceAgent ::插件:: CodeDeployPlugin :: CommandPoller:缺少憑據 - 請檢查是否這種情況下啓動與IAM實例配置文件 – hkguile

+0

這將做到這一點也。你的部署沒有成功,因爲你沒有權限部署給他們...他們都失敗了。 –

0

看起來您要求安裝在您的appspec.yaml文件和您的httpd24-tools服務中的某個依賴關係存在衝突。

[stderr]Error: httpd24-tools conflicts with httpd-tools-2.2.31-1.8.amzn1.x86_64 
[stderr]Error: httpd24 conflicts with httpd-2.2.31-1.8.amzn1.x86_64 
[stdout] You could try using --skip-broken to work around the problem 

因此,試圖解決依賴安裝問題。您可以嘗試在ec2上手動安裝依賴關係,並找到解決此衝突的解決方案,並在解決此問題時將解決方案帶入您的appspec.yaml文件並通過代碼部署安裝依賴關係。

1

發生這種情況是因爲codeDeploy通過點擊實例來檢查ec2實例的健康狀況。在部署之前,您需要在實例下運行bash腳本,並檢查腳本是否正常工作。 httpd服務必須啓動。重新啓動實例。

#!/bin/bash 
    sudo su 
    yum update -y 
    yum install httpd -y 
    yum install ruby 
    yum install aws-cli 
    cd ~ 
    aws s3 cp s3://aws-codedeploy-us-east-1/latest/install . --region us-east-1 
    chmod +x ./install 
    ./install auto 
    echo 'hello world' > /var/www/html/index.html 
    hostname >> /var/www/html/index.html 
    chkconfig httpd on 
    service httpd start