0

にEC2インスタンスから拒否された、しかし、私はそれを実行したとき、私はエラーを取得:AWS Codedployエージェントのアクセスは、私がCodedeploy Agentを設定しているS3

Error: HEALT_CONSTRAINTS 

さらに行くことによって、これはコードのエントリですEC2インスタンスからのログを展開:

InstanceAgent::Plugins::CodeDeployPlugin::CommandPoller: Cannot reach InstanceService: Aws::S3::Errors::AccessDenied - Access Denied 

私はバケツからシンプルwgetを行っているし、それが結果:

Connecting to s3-us-west-2.amazonaws.com (s3-us-west-2.amazonaws.com)|xxxxxxxxx|:443... connected. 
HTTP request sent, awaiting response... 403 Forbidden 

反対に、AWS cliを使用するとS3バケットに正しく到達できます。

EC2インスタンスはVPC上にあり、S3の完全なアクセス許可に関連付けられた役割を持ち、ファイアウォールのインバウンドおよびアウトバウンドの設定が正しいようです。したがって、明らかにhttpsからアクセスする際のアクセス許可に関連するものです。

質問:

  1. 資格情報コードの展開エージェントがその下で実行されますか?
  2. S3バケットにはどのような権限またはロールを設定する必要がありますか?
+0

あなたが(ないローカル)そのインスタンス上でCLIを使用する場合は、コードの展開バケットからオブジェクトをダウンロードすることができますか? –

+0

さて、私はよくチェックしましたが、EC2インスタンスのCLIを使ってオブジェクトをダウンロードできません。他のS3バケットから他のオブジェクトをダウンロードできますが、アーティファクトが存在するものからはダウンロードできません。 – Leonardo

答えて

0

CodeDeployは、「サービスロール」を使用してAWSリソースにアクセスします。 CodeDeployのAWSコンソールで、「サービスの役割」を探します。 CodeDeploy用に作成したIAMロールをアプリケーション設定に割り当てます。

CodeDeployのIAMロールを作成していない場合は、そのコードをCodeDeployアプリケーションに割り当てます。

0

S3からプルするときに、EC2インスタンスの資格情報(インスタンスロール)が使用されます。

明確にするために、CodeDeployが必要とするサービスロールはS3権限を必要としません。 ServiceRole CodeDeployニーズにより、CodeDeployはAutoScaling & EC2 APIを呼び出してインスタンスを記述することができ、CodeDeployはそのインスタンスへのデプロイ方法を認識します。

、S3のためのあなたのアクセス拒否の問題のために、あなたは

  • EC2インスタンス(s)はs3:Get*s3:List*(またはそれ以上の具体的な)アクセス権
  • を持っていることを役割を確認する必要があります2つのことがあるとされていること
  • 展開するS3バケットには、EC2インスタンスロールがオブジェクトを取得できるようにポリシーが添付されています。

権限のためのドキュメント:http://docs.aws.amazon.com/codedeploy/latest/userguide/instances-ec2-configure.html#instances-ec2-configure-2-verify-instance-profile-permissions

関連する問題