Tengo una aplicación AWS Elastic Beanstalk Rails que estoy configurando a través del script de configuración para extraer algunos archivos de un bucket de S3. Cuando inicio la aplicación, sigo recibiendo el siguiente error en los registros (el nombre del depósito se ha cambiado por seguridad ):
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>
Archivo de configuración:
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
El entorno de Elastic Beanstalk se configura con el aws-elasticbeanstalk-ec2-role
rol de IAM como su rol de instancia. Este rol tiene la siguiente política:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:Get*",
"s3:List*"
],
"Resource": "arn:aws:s3:::my.bucket/*"
}
]
}
Y el cubo S3 tiene la siguiente política:
{
"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/*"
}
]
}
¿Qué necesito cambiar para dar acceso a mis instancias EC2 a mi depósito S3?