6 votes

Comment copier un dossier depuis S3 vers une instance elastic beanstalk lors de la création de l'instance ?

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 !

5voto

kilgoretrout Points 1119

L'assistance AWS avait la réponse : mon nltk_data avait des sous-dossiers et des fichiers à l'intérieur, de sorte que le fichier aws s3 cp avait besoin de la commande --recursive option.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X