0

을 S3하는 EC2 인스턴스에서 거부 : 더 진행하여AWS Codedploy 에이전트 액세스 내가 그것을 실행할 때, 나는 오류 얻을, 나는 Codedeploy 에이전트를 설정 한

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

이 (로컬이 아닌) 당신이 코드 배포 버킷에서 객체를 다운로드 할 수 있습니까? –

+0

글쎄, 내가 잘 확인했습니다, 나는 EC2 인스턴스에서 CLI를 사용하여 개체를 다운로드 할 수 없습니다. 다른 S3 버킷에서 다른 객체를 다운로드 할 수 있지만 가공물이없는 것은 아닙니다. – Leonardo

답변

0

CodeDeploy는 "서비스 역할"을 사용하여 AWS 자원에 액세스합니다. CodeDeploy 용 AWS 콘솔에서 "서비스 역할"을 찾습니다. 응용 프로그램 설정에서 CodeDeploy에 대해 만든 IAM 역할을 할당합니다.

CodeDeploy에 대한 IAM 역할을 만들지 않은 경우 CodeDeploy 응용 프로그램에 할당하십시오.

0

EC2 인스턴스의 자격 증명 (인스턴스 역할)은 S3에서 가져올 때 사용됩니다.

분명히하기 위해 CodeDeploy가 필요로하는 서비스 역할에는 S3 권한이 필요하지 않습니다. ServiceRole CodeDeploy는 CodeDeploy가 AutoScaling & EC2 API를 호출하여 인스턴스를 설명함으로써 CodeDeploy가 인스턴스에 배포하는 방법을 알고 있도록합니다.

, S3에 대한 AccessDenied 문제를 들어,

  • EC2 인스턴스 (들) s3:Get*s3:List* (또는보다 구체적인) 권한
  • 을 가지고 역할을 확인해야 할 2 가지가 말했다되고 그건
  • 배포하려는 S3 버킷에는 EC2 인스턴스 역할이 객체를 가져올 수있는 정책이 첨부되어 있습니다. 권한에 대한

문서 : 해당 인스턴스에서 CLI를 사용하는 경우 http://docs.aws.amazon.com/codedeploy/latest/userguide/instances-ec2-configure.html#instances-ec2-configure-2-verify-instance-profile-permissions