Como obter o id de instância de uma máquina Windows EC2 em uma variável em lote

5

Eu tenho um arquivo em lote que gostaria de executar na inicialização de uma AMI do Windows do EC2. O programa que eu gostaria de executar a partir desse arquivo em lote leva o ID da instância da máquina EC2 como um parâmetro. Qual é a maneira mais simples de obter essa ID de instância passada como um argumento para esse programa?

De Documentação da Amazon sobre o assunto , Vejo que você deve enviar um WGET para um URL especificado e analisar a resposta. Portanto, uma maneira alternativa de formular essa pergunta pode ser "Como faço para passar o conteúdo de uma solicitação HTTP para um programa como um argumento em um arquivo em lotes do Windows"

No pseudocódigo, é isso que eu gostaria de fazer:

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

Alguma sugestão sobre como devo proceder?

    
por Jason Kester 02.06.2009 / 14:19

5 respostas

5

PowerShell 3.0 e Invoke-WebRequest :

PS> $instanceId = Invoke-WebRequest -Uri http://169.254.169.254/latest/meta-data/instance-id

Ou se você precisar sobreviver em lote, use um binário win32 curl .

Ou, com base no seu caso de uso, você poderia usar o CloudFormation para obter o Id da instância durante a chamada da API e passá-lo para o cf-init para um bootstrap action para a implantação de seu aplicativo.

    
por 30.04.2013 / 07:40
3

Alternativa: talvez você possa fazer isso usando o PowerShell no EC2 da Amazon. Aqui estão alguns links para começar:

por 02.06.2009 / 14:44
2

O Powershell seria a maneira mais fácil de fazer isso:

$ webclient = new-object System.Net.WebClient
$ myip = $ webclient.DownloadString (" link ")
myprogram.exe / instanceID = $ myip

    
por 19.12.2009 / 08:05
1
$wc = New-Object System.Net.WebClient;
$instanceIdResult = $wc.DownloadString("http://169.254.169.254/latest/meta-data/instance-id")
Write-Host $instanceIdResult
    
por 30.04.2013 / 07:08
0

wget não tem uma opção para mostrar o conteúdo do arquivo baixado para a tela (ou pelo menos a versão que eu tenho aqui não tem), então você tem que usar um arquivo temporário de qualquer maneira. O que você pode fazer então é o seguinte:

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

set /p geralmente solicita algo e apenas redirecionamos o conteúdo do arquivo aqui. Isso pressupõe que o ID da instância é a única coisa que está nesse arquivo. Você pode se divertir um pouco mais com a análise de texto ao usar for /f , mas para um simples "colocar a primeira linha desse arquivo em uma variável" set /p é suficiente.

    
por 19.12.2009 / 10:18