AWS CLI löst beim zweiten Ausführen "Anmeldeinformationen können nicht gefunden werden" aus

9

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.

Simon Paris
quelle
Haben Sie versucht, eine Verzögerung von 10 Sekunden zu setzen, bevor Sie versuchen, die Dateien abzurufen? Möglicherweise sind die IAM-Anmeldeinformationen noch nicht vorhanden, wenn der Befehl zum ersten Mal ausgeführt wird.
EEAA
Ich habe genau das gleiche Problem mit Ubuntu 16.04 LTS.
Sj26

Antworten:

3

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 das aws configureutil verwenden oder eine ~/.aws/configDatei wie diese erstellen :

[default]
aws_access_key_id=foo
aws_secret_access_key=bar
region=us-west-2

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.

Steven K7FAQ
quelle