Ich habe eine Batch-Datei, die ich beim Start eines EC2 Windows AMI ausführen möchte. Das Programm, das ich aus dieser Batchdatei ausführen möchte, verwendet die Instanz-ID des EC2-Computers als Parameter. Was ist der einfachste Weg, um diese Instanz-ID als Argument an dieses Programm zu übergeben?
Aus der Dokumentation von Amazon zu diesem Thema geht hervor , dass Sie ein WGET an eine bestimmte URL senden und die Antwort analysieren sollen. Eine alternative Art, diese Frage zu formulieren, könnte sein: "Wie übergebe ich den Inhalt einer HTTP-Anforderung als Argument in einer Windows-Batchdatei an ein Programm?"
Im Pseudocode möchte ich Folgendes tun:
set ID = GET http://169.254.169.254/2008-08-08/meta-data/instance-id
myprogram.exe /instanceID=%ID%
Irgendwelche Vorschläge, wie ich vorgehen könnte?
quelle
$instanceId = (Invoke-WebRequest -Uri http://169.254.169.254/latest/meta-data/instance-id).Content
Alternative: Vielleicht können Sie dies mit PowerShell auf Amazon EC2 tun . Hier sind einige Links zum Starten:
quelle
Powershell wäre der einfachste Weg, dies zu tun:
$ webclient = neues Objekt System.Net.WebClient
$ myip = $ webclient.DownloadString (" http://169.254.169.254/latest/meta-data/local-ipv4 ")
myprogram.exe / instanceID = $ myip
quelle
quelle
wget
Es gibt keine Option, um den Inhalt der heruntergeladenen Datei auf dem Bildschirm auszugeben (oder zumindest die Version, die ich hier nicht habe), daher müssen Sie trotzdem eine temporäre Datei verwenden. Was Sie dann tun können, ist Folgendes:set /p
fordert normalerweise zu etwas auf und wir leiten den Inhalt der Datei hier einfach um. Dies setzt voraus, dass die Instanz-ID das einzige ist, was in dieser Datei enthalten ist. Sie können ein bisschen mehr Spaß beim Parsen von Text haben, wenn Sie verwenden,for /f
aber für ein einfaches "Setzen Sie die erste Zeile dieser Datei in eine Variable"set /p
reicht aus.quelle
wget --help
aber es funktioniert, ja. Es tut uns leid.