Ich versuche, einige Dateien von S3 mithilfe der AWS CLI (1.8.7) beim Start mithilfe eines Benutzerdatenskripts auf eine EC2-Instanz herunterzuladen. Diese Instanz verfügt über ein IAM-Rollen- und Instanzprofil mit den entsprechenden Berechtigungen. Manchmal schlägt die CLI mit dem Fehler "Anmeldeinformationen können nicht gefunden werden" fehl. Es passiert oft (nicht jedes Mal), aber immer nach einem separaten S3-Befehl, der funktioniert hat. Hier ist die Ausgabe des Skripts:
++ 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
Irgendeine Idee, was das verursachen könnte?
Bearbeiten: Dies ist ein Amazon Linux-Server.
amazon-ec2
amazon-web-services
amazon-s3
aws-cli
cloud-init
Simon Paris
quelle
quelle
Antworten:
Ich hatte das gleiche Problem, kontaktierte sogar den Support und sie konnten keine Antwort geben. Das Exportieren von Anmeldeinformationen in Umgebungsvariablen funktioniert bei
aws s3 ...
Befehlen nicht. Sie müssen entweder dasaws configure
util verwenden oder eine~/.aws/config
Datei wie diese erstellen :Weitere Informationen finden Sie in der AWS-Dokumentation unter http://docs.aws.amazon.com/cli/latest/topic/config-vars.html
Ich habe nicht nur festgestellt, dass es beim EC2-Start über die Benutzerdaten überhaupt nicht mit den Umgebungsexporten ausgeführt werden konnte, sondern auch nach dem Start über die Befehlszeile auf einer vollständig bereitgestellten laufenden Instanz.
quelle