wake-up-neo.net

Amazon ec2 Benutzerdaten, wie funktioniert das?

Wir starten Instanzen und greifen auf die von uns hinterlegten Benutzerdaten zu. Aber versteht jemand das Innere dieser Operation (von Amazon)? Wenn wir die Benutzerdaten übergeben, wann werden diese Daten an VM übertragen (ist dies eine Xen-Funktion) und wo werden sie gespeichert?

Ich dachte zuerst, es wurde als USER_DATA-Env-Var festgelegt, aber wir können es auch als Datei übergeben. Wo ist diese Datei gespeichert? Ist es für alle Instanzen allgemein oder variiert je nach AMI?

Dies ist an sich kein Problem, ich wollte nur wissen, wie Amazon dies tut.

Benutzerdaten-Screenshot: http://d.pr/GZlY

47
Devrim

Die Benutzerdaten stehen der Instanz mit einer einfachen HTTP-Anforderung unter dieser URL zur Verfügung:

http://169.254.169.254/latest/user-data

Amazon EC2 speichert diese Benutzerdaten nicht direkt in der Instanz, obwohl viele AMIs über Code verfügen, der die Instanz anweist, Benutzerdaten automatisch herunterzuladen und zu verarbeiten.

Siehe auch:

54
Eric Hammond

Ein einfaches Beispiel zum Verständnis aller: Wenn Sie die Datei /tmp/testfile.txt beim Start der Maschine erstellen möchten, können Sie diese beiden Zeilen einfach in das Feld User data einfügen.

#!/bin/bash
touch /tmp/testfile.txt

Denken Sie daran, den #!/bin/bash vor Ihren Befehlen oben anzuordnen.

Wenn Sie die Instanz ausführen (Linux AMI), können Sie den Inhalt des User data-Felds unter /var/lib/cloud/instance/user-data.txt sehen.

5
Avión

Es tut uns leid, eine solche alte Frage zu posten, aber dies scheint der beste Ort zu sein, um diese zusätzlichen Informationen zu veröffentlichen.

In den meisten AWS-Dokumenten werden Benutzerdaten als eine Eigenschaft beschrieben, in der Skript-Skripts für den Lebenszyklus des Instanzlebens gespeichert werden können. Dies ist das Zeug, das Sie nur ausführen möchten, wenn die Instanz zum ersten Mal gestartet wird.

Dies ist normalerweise der Fall, aber es gab mindestens eine weitere Person neben mir, die beim Neustart verschiedene Skripts ausführen wollte, um z. B. einen defekten Schlüssel oder etwas zu reparieren. Und raten Sie mal, was Sie mit Benutzerdaten tun können.

Hier ist der Code und der Link zum AWS-Dokument ...

Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0

--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"

#cloud-config
cloud_final_modules:
- [scripts-user, always]

--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"

#!/bin/bash
/bin/echo "Hello World." >> /tmp/sdksdfjsdlf
--//

Ich kann keine Dokumentation zu dieser Formatierung von Benutzerdaten finden, die dies zulässt. Ich habe es ausprobiert und es funktioniert. Ich habe versucht zu sehen, ob es bei jedem Start läuft und es funktioniert.

Wenn Sie der Meinung sind, dass Sie dies tun müssen, empfehle ich Ihnen ein Backup. Stellen Sie sicher, dass Sie über eine Kopie der ursprünglichen Benutzerdaten verfügen, und verwenden Sie den zur Suite gehörenden Code, und entfernen Sie den Code, wenn Sie die Instanz das nächste Mal anhalten (um das Skript nicht mehrfach auszuführen).

2
Les

AWS-Userdaten sind Befehle und Daten, die Sie einer Instanz beim Start zur Verfügung stellen können. Wenn Sie beispielsweise eine ec2-Instanz starten und das Docker auf der neu gestarteten ec2 installiert haben möchten, können Sie im userdata-Feld der aws ec2-Konfigurationsseite eine Reihe von bash-Befehlen angeben.

Anwendungsfall 

Hier ist ein gut erklärtes Beispiel für AWS-Userdaten mit - Video-Tutorial.

1
Ajeet Khan
#!/bin/bash
yum update -y
yum install httpd -y
echo "<html><h1>webpage 1(whatever you want, give the page name here)</h1></html>"
/var/www/html/index.html
service httpd start
chkconfig httpd on
0
mahwir