EC2 IAM 역할에 S3 버킷에 대한 읽기 권한 부여


10

S3 버킷에서 일부 파일을 가져 오기 위해 구성 스크립트를 통해 구성하는 AWS Elastic Beanstalk Rails 앱이 있습니다. 응용 프로그램을 시작할 때 로그에 다음과 같은 오류가 계속 발생합니다 ( 보안을 위해 버킷 이름이 변경됨 ).

Failed to retrieve https://s3.amazonaws.com/my.bucket/bootstrap.sh: HTTP Error 403 : <?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied</Message>

구성 파일 :

packages:
  yum:
    git: []

files:
  /opt/elasticbeanstalk/hooks/appdeploy/pre/01a_bootstrap.sh:
    mode: "00755"
    owner: root
    group: root
    source: https://s3.amazonaws.com/my.bucket/bootstrap.sh

Elastic Beanstalk 환경은 aws-elasticbeanstalk-ec2-roleIAM 역할을 인스턴스 역할로 사용하여 설정됩니다 . 이 역할에는 다음과 같은 정책이 있습니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:Get*",
        "s3:List*"
      ],
      "Resource": "arn:aws:s3:::my.bucket/*"
    }
  ]
}

그리고 S3 버킷에는 다음과 같은 정책이 있습니다.

{
"Version": "2008-10-17",
"Statement": [
    {
        "Sid": "Stmt1371012493903",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::<account #>:role/aws-elasticbeanstalk-ec2-role"
        },
        "Action": [
            "s3:List*",
            "s3:Get*"
        ],
        "Resource": "arn:aws:s3:::my.bucket/*"
    }
]
}

EC2 인스턴스에 S3 버킷에 대한 액세스 권한을 부여하려면 무엇을 변경해야합니까?

답변:


6

EC2 인스턴스에서 인스턴스 메타 데이터의 임시 자격 증명도 검색해야합니다.

curl http://169.254.169.254/latest/meta-data/iam/security-credentials/<your-iam-role-name>

그런 다음 제공된 액세스 및 비밀 키를 사용하여 S3 버킷에 액세스해야합니다.


1
애플리케이션의 특정 언어에 대한 AWS SDK를 통해이 작업을 수행하는 경우 SDK에서 내부적으로 임시 자격 증명을 얻은 다음 특정 시간 간격에 따라 새로 고쳐야합니다.
whokares

2
S3 버킷에 액세스하기 위해 액세스 및 비밀 키를 어떻게 사용합니까? 예가 있습니까? 건배
셀린 아우 소 르트

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.