如何将 EC2 Windows 计算机的实例 ID 放入批处理变量中

如何将 EC2 Windows 计算机的实例 ID 放入批处理变量中

我有一个批处理文件,我想在启动 EC2 Windows AMI 时运行它。我想从该批处理文件运行的程序将 EC2 机器的实例 ID 作为参数。将该实例 ID 作为参数传递给该程序的最简单方法是什么?

亚马逊关于此主题的文档,我知道你应该向指定的 URL 发出 WGET 并解析响应。因此,提出这个问题的另一种方式可能是“如何将 HTTP 请求的内容作为 Windows 批处理文件中的参数传递给程序”

用伪代码来说,这就是我想要做的:

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

对于我该如何进行,有什么建议吗?

答案1

PowerShell 3.0 和调用 Web 请求

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

或者,如果您需要在批处理中生存,请使用 win32 二进制文件卷曲

或者根据您的用例,您可以使用 CloudFormation 在 API 调用期间获取 Instance-Id,并将其传递给 cf-init 进行引导动作为您的应用程序部署。

答案2

替代方案:也许你可以使用电源外壳在 Amazon 的 EC2 上。以下是一些入门链接:

答案3

Powershell 是实现此目的最简单的方法:

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

答案4

所以我找到了另一种方法:

$instanceId = Get-EC2InstanceMetadata -Path '/instance-id'

它看起来干净多了,结果也只是包含了你期望的“实例 ID”

相关内容