2013-04-09 3 views
11

Beim Erstellen einer neuen AWS EC2-Instanz mithilfe der EC2-Befehlszeilen-API übergebe ich einige Benutzerdaten an eine neue Instanz.Wie überprüfe ich, ob meine Benutzerdaten an die EC2 Instanz übergeben werden oder nicht?

Nun, wie kam ich zu wissen, ob diese Benutzerdaten ausgeführt oder nicht?

Wie soll ich das überprüfen?

+0

Abhängig von der AMI, wenn sie Cloud init unterstützt, es wird ausgeführt. Wenn nicht, wird es über Metadatenanforderungen verfügbar sein und Sie müssen es von dort aus bearbeiten. – datasage

+0

@datasage: Ich benutze Cloud unterstützt AMI. – Pravin

Antwort

2

Debuggen von Benutzerdaten Skripte auf Amazon EC2 ist ein bisschen in der Tat peinlich, da es in der Regel keine Möglichkeit, aktiv in den Prozess anzuschließen, so dass man im Idealfall möchte Echtzeit-Zugriff auf Benutzerdaten Skript-Ausgabe gewinnen, wie zusammengefasst in Eric Hammond Artikel Logging user-data Script Output on EC2 Instances:

die jüngsten Ubuntu AMIs noch benutzerDatenSkript an die Konsole Ausgabe senden, so dass Sie sie aus der Ferne sehen können, aber es ist nicht mehr verfügbar in syslog auf der Instanz. Die Konsolenausgabe wird nur einige Minuten aktualisiert, nachdem die Instanz gestartet, neu gestartet oder beendet wurde, wodurch Sie warten müssen, bis die Ausgabe des Benutzerdatenskripts und nicht erfasst wird, die nach dem Snapshot ausgegeben werden kann .

auf Ihrem Setup Je Sie können die Protokolle zu einer Remote-Protokollfunktion wie Loggly sofort versenden möchten, aber immer diese früh genug installiert ist, kann offensichtlich Art ein Huhn/Ei-Problem sein (obwohl es funktioniert gut, wenn die AMI ist zufällig bereits so konfiguriert).

+0

Kann ich S3cms- und s3fs-Befehle als Teil von Benutzerdaten an E2-Instanz übergeben? – Pravin

+0

@ Pravin - Sicher, Benutzerdatenskripte sind gewöhnliche Shell-Skripte, d. H. Sie können grundsätzlich tun, was auch immer Sie in der Kommandozeile tun können. in einem lokalen Shell-Skript. Natürlich müssen Sie sicherstellen, dass Ihre Anforderungen wie "s3fs" auf der EC2-Instanz installiert sind, d. H. Entweder von der AMI bereitgestellt oder von Ihnen selbst aus dem Benutzerdatenskript bereitgestellt werden, bevor Sie diese wiederum verwenden. –

+0

: - Ich habe s3cmd auf AMI installiert und mit diesem vorkonfigurierten AMI erstelle ich neue Instanzen. Dazu übergebe ich Benutzerdaten wie Erstellen eines neuen Verzeichnisses für neue Instanz und Herunterladen von Dateien von S3. Aber dieses Skript erstellt nur Verzeichnis, nicht Dateien von S3 herunterlädt. Schauen Sie einfach folgende llink http://stackoverflow.com/questions/16130952/passing-s3cmd-commands-as-user-data-to-ec2 – Pravin

1

Haben Sie Ihren Benutzerdaten eine Datei in Ihrem EC2 das/tmp-Verzeichnis erstellen, um zu sehen, ob es funktioniert:

bob.txt:

#!/bin/sh 
echo 'Woot!' > /home/ec2-user/user-script-output.txt 

Dann starten Sie mit:

ec2-run-instances -f bob.txt -t t1.micro -g ServerPolicy ami-05cf5c6d -v

+0

kann ich s3cmd und s3fs Befehle als Benutzerdaten an die ec2-Instanz übergeben? – Pravin

+0

Ihre Skripte werden beim Start auf dem Remote-Rechner ausgeführt (zu Beginn der Phase), solange sie vorinstalliert und geladen sind. –

11

Sie können die folgenden Schritte überprüfen

  1. SSH auf Start EC2-Instanz
  2. prüfen Protokoll des Skripts Benutzerdaten in
    • /var/log/cloud-init.log und
    • /var/log/cloud-init-output.log

Sie alle Log der von Benutzerdaten Skript und es sehen können erstellt auch /etc/cloud Ordner.

4

Als Referenz können Sie überprüfen, ob die Benutzerdaten ausgeführt wurden, indem Sie das Systemprotokoll von der EC2-Konsole aus betrachten.Rechtsklick auf die Instanz - Instanz-Einstellungen - Get Systemprotokoll

enter image description here

Dieses ein modales Fenster mit den Systemprotokollen öffnen sollte

enter image description here