Saya memiliki aplikasi AWS Elastic Beanstalk Rails yang saya konfigurasi melalui skrip konfigurasi untuk menarik beberapa file dari bucket S3. Ketika saya memulai aplikasi, saya terus menerima kesalahan berikut dalam log ( nama bucket telah diubah untuk keamanan ):
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>
File konfigurasi:
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
Lingkungan Elastic Beanstalk diatur dengan aws-elasticbeanstalk-ec2-role
peran IAM sebagai peran instance. Peran ini memiliki kebijakan berikut:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:Get*",
"s3:List*"
],
"Resource": "arn:aws:s3:::my.bucket/*"
}
]
}
Dan bucket S3 memiliki kebijakan berikut:
{
"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/*"
}
]
}
Apa yang harus saya ubah untuk memberikan instance EC2 saya akses ke bucket S3 saya?
Jika akses lintas akun, periksa itu tidak terkait dengan header ACL seperti yang disebutkan di sini: https://stackoverflow.com/a/34055538/1736679 (info lebih lanjut di utas masalah ini: https://github.com/aws/aws -cli / issues / 1674 )
Periksa juga lingkungan / pengguna tempat Anda menjalankan untuk melihat apakah tidak ada Tombol utama (1AWS_ACCESS_KEY1, dll) di
/etc/environment
atau~/.aws/credentials
sumber