J'essaie de télécharger certains fichiers de S3 vers une instance EC2 à l'aide de l'AWS CLI (1.8.7) au démarrage à l'aide d'un script de données utilisateur. Cette instance a un profil de rôle et d'instance IAM avec les autorisations appropriées. Parfois, la CLI échouera avec l'erreur "Impossible de localiser les informations d'identification". Cela arrive souvent (pas à chaque fois), mais toujours après une commande S3 distincte, qui a fonctionné. Voici la sortie du script:
++ date +%r
03:24:10 AM
++ aws s3 cp s3://non-public-bucket-1/15mb-zip-file.zip ./15mb-zip-file.zip
Completed 1 of 1 part(s) with 1 file(s) remaining^Mdownload: s3://non-public-bucket-1/15mb-zip-file.zip to 15mb-zip-file.zip
++ date +%r
03:24:14 AM
++ unzip 15mb-zip-file.zip
# Snip
++ date +%r
03:26:01 AM
++ curl http://169.254.169.254/latest/meta-data/instance-id
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 10 100 10 0 0 13831 0 --:--:-- --:--:-- --:--:-- 10000
i-12345678++ date +%r
03:26:01 AM
++ aws s3 cp s3://non-public-bucket-2/my-small-text-file.json ./output.json
download failed: s3://non-public-bucket-2/my-small-text-file.json to output.json Unable to locate credentials
++ date +%r
03:26:34 AM
Une idée de ce qui pourrait causer cela?
Edit: il s'agit d'un serveur Amazon Linux.
amazon-ec2
amazon-web-services
amazon-s3
aws-cli
cloud-init
Simon Paris
la source
la source
Réponses:
J'ai eu le même problème, j'ai même contacté le support et ils n'ont pas pu répondre. L'exportation des informations d'identification vers des variables d'environnement ne fonctionne pas pour les
aws s3 ...
commandes. Vous devez soit utiliser l'aws configure
utilitaire soit créer un~/.aws/config
fichier comme celui-ci:Veuillez consulter la documentation AWS à l' adresse http://docs.aws.amazon.com/cli/latest/topic/config-vars.html
Non seulement je l'ai trouvé ne pas s'exécuter du tout avec les exportations d'environnement au lancement d'EC2 via les données utilisateur, mais aussi après le lancement à partir de la ligne de commande sur une instance en cours d'exécution entièrement déployée.
la source