J'ai une application AWS Elastic Beanstalk Rails que je configure via le script de configuration pour extraire certains fichiers d'un compartiment S3. Lorsque je démarre l'application, je reçois toujours l'erreur suivante dans les journaux (le nom du compartiment a été modifié pour des raisons de sécurité ):
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>
Fichier de configuration:
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
L'environnement Elastic Beanstalk est configuré avec le aws-elasticbeanstalk-ec2-role
rôle IAM comme rôle d'instance. Ce rôle a la politique suivante:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:Get*",
"s3:List*"
],
"Resource": "arn:aws:s3:::my.bucket/*"
}
]
}
Et le compartiment S3 a la stratégie suivante:
{
"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/*"
}
]
}
Que dois-je changer pour permettre à mes instances EC2 d'accéder à mon compartiment S3?
S'il s'agit d'un accès multi-comptes, vérifiez qu'il n'est pas lié aux en-têtes ACL comme mentionné ici: /programming//a/34055538/1736679 (plus d'informations dans ce fil de discussion: https://github.com/aws/aws -cli / issues / 1674 )
Vérifiez également l'environnement / l'utilisateur à partir duquel vous exécutez pour voir s'il n'y a pas de clés prioritaires (1AWS_ACCESS_KEY1, etc.) dans
/etc/environment
ou~/.aws/credentials
la source