我正在尝试使用CodeDeploy部署我的应用程序,但每次遇到Deployment Failed
消息时附加的附加信息都说明:No hosts succeeded. (Error code: HEALTH_CONSTRAINTS)
。
我不明白这个的原因。以下是按顺序执行的步骤:
我使用IAM角色启动了实例,该角色包含2个附加AmazonEC2FullAccess
和AmazonS3FullAccess
的策略。后来的政策建议如下:
{
"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 :(得分:2)
有几点要指出:
无法识别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中提供相同的键值对