2016-08-25 6 views
3

GIT 리포지토리에서 AWS 인스턴스로 코드를 푸시해야하는 시나리오에서 작업하고 있습니다. 이를 위해 AWS CodeDeploy 기능을 사용하고 있습니다. 그러나 코드를 배포하는 프로세스의 마지막 단계에서 아래 오류가 발생합니다. 너무 많은 개별 인스턴스 배포를 실패했기 때문에 실패"HEALTH_CONSTRAINTS"로 인해 AWS 배포가 실패했습니다

배포는 전체 배포도 몇 정상 인스턴스 배포에 사용할 수있는, 또는 배포 그룹의 일부의 경우는 문제가 발생, 실패했습니다. (오류 코드 : HEALTH_CONSTRAINTS) 너무 많은 경우는 건강에 해로운로 CodeDeploy 전개를 계속할 수 없을 때

답변

5

이 오류를 볼 수 있습니다. "AmazonEC2RoleforAWSCodeDeploy"정책을 사용하여 IAM 역할을 만듭니다. 기존 인스턴스에 IAM 역할을 추가 할 수 없으므로 새 인스턴스를 시작해야합니다.

또한 올바른 지역에 대한 CodeDeploy 에이전트를 설치했는지 확인하십시오. us-east-1을 위해 : 나는 반복적으로 CodeDeploy 도구에서 같은 오류가 발생

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

+2

이제 실행중인 인스턴스에 IAM 역할을 연결하거나 바꿀 수 있습니다. https://aws.amazon.com/blogs/security/easily-replace-or-attach-an-iam-role-to-an-existing-ec2 -instancers-using-the-ec2-console/ –

0

당신이 오류가 직접적인 이유입니다. "minimumHealthyHosts"는 정확한 숫자를 결정하는 데 중요한 역할을합니다. 해당 매개 변수 [1] [2]를 확인할 수 있습니다.

처음에, 그 값을 낮게 (즉, 거의 0으로) 설정하는 것이 더 쉽다는 것을 말 했으니 까. 또는 "AllAtOnce"배치 구성을 선택하십시오.

[1] http://docs.aws.amazon.com/cli/latest/reference/deploy/get-deployment-config.html

EC2 인스턴스가 올바른 IAM 역할이없는 경우 [2] http://docs.aws.amazon.com/codedeploy/latest/userguide/host-health.html

+0

안녕하세요. 캘빈, 빠른 응답을 보내 주셔서 감사합니다. 예 "AllAtOnce"배포 구성을 사용해 보았습니다. 하지만 여전히 위의 오류가 발생합니다. 또한 현재 인스턴스가 IAM 역할에 연결되어 있지 않습니다. 그래서 이것이 이유 중 하나 일 수 있습니까 ?? 그렇다면 어떻게 새로운 IAM 역할을 만들어이 인스턴스에 할당 할 수 있습니까? – user6380172

+0

예, EC2 인스턴스에는 s3 버켓을 읽을 수있는 권한이 있어야합니다 (아티팩트/패키지가 저장되어있는 경우). 우선, 버킷에 대한 관련 s3 : * 권한을 가진 IAM 정책을 작성하십시오. 그런 다음 역할을 만들고 (엔터티로 EC2 선택) 이전에 생성 한 정책을 할당하십시오. 그런 다음 새 EC2 시스템을 시작할 때 인스턴스 프로파일에 대한 역할을 지정하십시오. –

4

, 내가 인스턴스에 CodeDeploy 에이전트를 설치하는 것을 잊지합니다. 단지 여기에 문서에 대한 링크가 있습니다 : http://docs.aws.amazon.com/codedeploy/latest/userguide/how-to-run-agent-install.html

+0

[user data]를 설정하면 (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance- metadata.html # instancedata-add-user-data) 인스턴스를 만든 후에는 CodeDeploy 에이전트가 설치되지 않습니다. 인스턴스에 설치하려면 위의 지침을 따라야합니다. –

0

aws가 실행중인 인스턴스에 IAM 역할을 첨부/대체 할 수 있지만, @ spro/@ mathieu-m-gosselin의 답변에 추가하면됩니다. 이 사용 사례로는 충분하지 않으므로 새 IAM 역할을 연결/대체 한 후에 인스턴스를 다시 부팅해야합니다.