J'exécute une application web Django sur AWS Elastic Beanstalk qui a besoin de fichiers spécifiques pour s'exécuter (en fait, une nltk
corpus de mots vides). Comme les instances vont et viennent, j'ai copié le dossier nécessaire dans le seau S3 qui a été créé par mon elastic beanstalk et j'ai prévu d'ajouter une commande de copie utilisant awscli
à mon fichier de configuration elastic beanstalk. Mais je n'arrive pas à le faire fonctionner.
Les instances lancées par mon beanstalk devraient avoir un accès en lecture au seau S3 car c'est le seau créé automatiquement par beanstalk. Donc beanstalk a aussi créé un rôle IAM aws-elasticbeanstalk-ec2-role
qui est un profil d'instance qui est attaché à chaque instance qu'il lance. Ce rôle comprend le AWSElasticBeanstalkWebTier
qui semble accorder l'accès en lecture et en écriture au seau S3 :
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "BucketAccess",
"Action": [
"s3:Get*",
"s3:List*",
"s3:PutObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::elasticbeanstalk-*",
"arn:aws:s3:::elasticbeanstalk-*/*"
]
}
]
}
J'ai essayé d'ajouter la commande suivante à .ebextensions/my_app.config
:
commands:
01_copy_nltk_data:
command: aws s3 cp s3://<my_bucket>/nltk_data /usr/local/share/
Mais j'obtiens l'erreur suivante lorsque j'essaie de déployer même si je peux voir le dossier dans ma console S3
Command failed on instance. Return code: 1 Output: An error occurred (404) when calling the HeadObject operation: Key "nltk_data" does not exist
Des idées ?
Merci !