2016-08-25 12 views
3

GITリポジトリからAWSインスタンスにコードをプッシュする必要があるシナリオを作成しています。これを実現するには、AWS CodeDeployの機能を使用しています。しかし、コードを展開するプロセスの最後のステップで、私は以下のエラーを受け取ります。"HEALTH_CONSTRAINTS"のためにAWSのデプロイメントが失敗する

展開があまりにも多くの個々のインスタンスは、展開を失敗したため、全体的な展開が失敗した を失敗した、あまりにもいくつかの正常なインスタンスは、展開のために入手可能であるか、またはデプロイメントグループのいくつかの例では、問題が発生しています。 (エラーコード:HEALTH_CONSTRAINTS)

答えて

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 -inst-by-using-the-ec2-console/ –

0

エラーが発生した直後の理由は、CodeDeployがあまりにも多くのインスタンスが不健全であるため、展開を続行できない場合です。 「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ロールには接続されていません。だからこれが理由の1つになることができますか?もしそうなら、新しい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-home.html)を設定すると、 metadata.html#instancedata-add-user-data)インスタンスを作成した後、CodeDeployエージェントはインストールされません。上記の指示に従ってインスタンスにインストールする必要があります。 –

0

awsは実行中のインスタンスにIAMロールをアタッチ/置き換えることができますが、@ spro/@ mathieu-m-gosselinの答えに追加するだけです。この使用例では十分ではありません。新しいIAMロールをアタッチ/置換した後にインスタンスを再起動する必要があります。

関連する問題