ฉันมีแอพ AWS Elastic Beanstalk Rails ที่ฉันกำหนดค่าผ่านสคริปต์การตั้งค่าเพื่อดึงไฟล์จาก S3 bucket เมื่อฉันเริ่มแอปพลิเคชันฉันยังคงได้รับข้อผิดพลาดต่อไปนี้ในบันทึก ( เปลี่ยนชื่อถังเพื่อความปลอดภัย ):
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 bucket มีนโยบายต่อไปนี้:
{
"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 ของฉัน