Tôi có một ứng dụng AWS Elastic Beanstalk Rails mà tôi đang định cấu hình thông qua tập lệnh cấu hình để lấy một số tệp từ nhóm S3. Khi tôi khởi động ứng dụng, tôi tiếp tục nhận được lỗi sau trong nhật ký ( tên nhóm đã được thay đổi để bảo mật ):
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>
Tập tin cấu hình:
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
Môi trường đàn hồi Beanstalk được thiết lập với aws-elasticbeanstalk-ec2-role
vai trò IAM là vai trò thể hiện của nó. Vai trò này có chính sách sau:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:Get*",
"s3:List*"
],
"Resource": "arn:aws:s3:::my.bucket/*"
}
]
}
Và nhóm S3 có chính sách sau:
{
"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/*"
}
]
}
Tôi cần thay đổi gì để cung cấp cho các phiên bản EC2 của tôi quyền truy cập vào nhóm S3 của tôi?