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?
Si se trata de acceso a cuentas cruzadas, verifique que no esté relacionado con los encabezados de ACL como se menciona aquí: /programming//a/34055538/1736679 (más información en este tema: https://github.com/aws/aws -cli / issues / 1674 )
También verifique dos veces el entorno / usuario desde el que se está ejecutando para ver si no hay claves anuladas (1AWS_ACCESS_KEY1, etc.) en
/etc/environment
o~/.aws/credentials
fuente