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

Jas*_*ter 9 windows batch-file amazon-ec2

我有一个批处理文件,我想在 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%
Run Code Online (Sandbox Code Playgroud)

关于我如何进行的任何建议?

sql*_*der 7

PowerShell 3.0 和Invoke-WebRequest

PS> $instanceId = Invoke-WebRequest -Uri http://169.254.169.254/latest/meta-data/instance-id
Run Code Online (Sandbox Code Playgroud)

或者,如果您需要批量生存,请使用curl的 win32 二进制文件。

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

  • 这将返回一个 webresponse - 为了获得实际的 id - 你可能想要使用:`$instanceId = (Invoke-WebRequest -Uri http://169.254.169.254/latest/meta-data/instance-id).Content` (3认同)

spl*_*tne 3

替代方案:也许您可以在 Amazon EC2 上使用PowerShell来完成此操作。以下是一些可以开始的链接: