Ich habe eine Benutzerdatenskriptdatei, wenn ich eine EC2-Instanz von einem AMI-Image aus starte. Das Skript verwendet AWS, aber ich erhalte den Befehl "aws: Befehl nicht gefunden". Die AWS-CLI wird als Teil der AMI installiert (ich kann sie verwenden, sobald die Instanz aktiv ist), aber aus irgendeinem Grund kann das Skript sie nicht finden.

Vermisse ich etwas Gibt es eine Chance, dass das Benutzerdatenskript ausgeführt wird, bevor das Bild geladen wird (ich kann es kaum glauben)? Vielleicht ist die Variable path env zu diesem Zeitpunkt nicht festgelegt?

Vielen Dank,

3
Lior Ohana 28 Dez. 2015 im 19:40

2 Antworten

Beste Antwort

jede Möglichkeit, dass das Benutzerdatenskript ausgeführt wird, bevor das Bild geladen wird

Nein, sicher nicht. Es ist ein Dienst auf diesem Image, der das Skript ausführt.

Möglicherweise ist die Variable path env zu diesem Zeitpunkt nicht festgelegt

Dies ist höchstwahrscheinlich das Problem. Die Skripte werden als root und nicht als ec2-user ausgeführt und haben keinen Zugriff auf den Pfad, den Sie möglicherweise in Ihrem ec2-user Konto konfiguriert haben. Was passiert, wenn Sie versuchen, /usr/bin/aws anstelle von nur aws anzugeben?

4
Mark B 28 Dez. 2015 im 18:25

Sie können aws cli installieren und Umgebungsvariablen mit Ihren Anmeldeinformationen einrichten. Im Benutzerdatenskript können Sie beispielsweise Folgendes schreiben:

#!/bin/bash
apt-get install -y awscli
export AWS_ACCESS_KEY_ID=your_access_key_id_here
export AWS_SECRET_ACCESS_KEY=your_secret_access_key_here
aws cp s3://test-bucket/something /local/directory/

Wenn Sie ein CentOS-basiertes AMI verwenden, müssen Sie die Zeile apt-get für yum ändern, und das Paket heißt aws-cli anstelle von awscli.

0
cserpell 23 Juni 2020 im 04:57