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-role
IAM 역할을 인스턴스 역할로 사용하여 설정됩니다 . 이 역할에는 다음과 같은 정책이 있습니다.
{
"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 버킷에 대한 액세스 권한을 부여하려면 무엇을 변경해야합니까?