I have a batch file that I'd like to run on startup of an EC2 Windows AMI. The program I'd like to run from that batch file takes the instance-id of the EC2 machine as a parameter. What is the simplest way to get that Instance ID passed as an argument to that program?

From Amazon's Documentation on the subject, I see that you're supposed to issue a WGET to a specified URL and parse the response. So an alternate way of phrasing this question might be "How do I pass the contents of a HTTP request to a program as an argument in a Windows batch file"

In pseudocode, this is what I'd like to do:

set ID = GET http://169.254.169.254/2008-08-08/meta-data/instance-id
myprogram.exe /instanceID=%ID%

Any suggestions on how I might proceed?

link|improve this question

33% accept rate
feedback

3 Answers

Alternative: maybe you could do this using PowerShell on Amazon's EC2. Here are some links to start:

link|improve this answer
Alternatives are always good. Thanks for that! – Jason Kester Jun 2 '09 at 13:54
feedback

Powershell would be the easiest way to do this:

$webclient = new-object System.Net.WebClient
$myip = $webclient.DownloadString("http://169.254.169.254/latest/meta-data/local-ipv4")
myprogram.exe /instanceID=$myip

link|improve this answer
feedback

wget doesn't have an option to output the contents of the downloaded file to screen (or at least the version I have here doesn't), so you have to use a temporary file anyway. What you can do then is the following:

wget -O "instance-id" "http://169.254.169.254/2008-08-08/meta-data/instance-id"
set /p ID=< instance-id

set /p usually prompts for something and we just redirect the file's contents here. This assumes that the instance ID is the only thing that's in that file. You can have a little more fun with parsing text when using for /f but for a simple "put the first line of that file into a variable" set /p suffices.

link|improve this answer
Does wget -O - http://... not output the file to standard out? – David North Dec 19 '09 at 10:00
Ah, drat. Wasn't written into wget --help but it works, yes. Sorry. – Joey Jan 5 '10 at 19:00
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.