Batch file 搜索AWS CLI输出并保存到变量

Batch file 搜索AWS CLI输出并保存到变量,batch-file,amazon-web-services,windows-7,aws-cli,Batch File,Amazon Web Services,Windows 7,Aws Cli,我对批处理文件非常陌生,但我正尝试使用批处理文件自动创建一些AWS CLI实例 到目前为止,我所拥有的非常简单——我在.bat文件中有一个命令,它将运行运行实例命令: aws ec2 run-instances --dry-run --image-id %ami_id% --key-name %keypair% --security-group-ids %security_group% --instance-type "r3.large" --subnet-id %az1b_subnet% 此

我对批处理文件非常陌生,但我正尝试使用批处理文件自动创建一些AWS CLI实例

到目前为止,我所拥有的非常简单——我在
.bat
文件中有一个命令,它将运行
运行实例
命令:

aws ec2 run-instances --dry-run --image-id %ami_id% --key-name %keypair% --security-group-ids %security_group% --instance-type "r3.large" --subnet-id %az1b_subnet%
此命令需要一点时间才能运行,但最终(没有
--dry run
)将返回关于所创建实例的json。我希望搜索该json输出,并将
实例id
保存到一个变量中,以便使用
ec2 create tags
命令标记我新创建的实例

你有没有想过我该怎么做?我的第一次尝试是在上述命令的末尾添加
>test.txt
,然后搜索json并设置变量。但是,
test.txt
是在CLI命令完成并返回其输出之前立即创建的

谢谢。

有一个
--query
参数,可用于指定输出字段。结合
--输出文本
,它可以提供实例ID列表

下面是一个脚本,假设每个
runinstances
调用只启动一个实例(否则将需要一个循环):


你见过/试过吗?嗯,我其实不知道那是件事。AWS CLI也很新…看起来这将是一种更简单的方法。谢谢@wOxxOm-Hmm,因此,在命令返回其输出之前,我不知道实例id,所以这似乎不是一个好方法。是否有办法确保第一个命令已完全执行,然后搜索并设置实例id变量?是的,使用
for/f%%a in('aws command to show the id--output text')设置aws_id=%%a
,然后可以在后续命令中使用
%aws_id%
。当然,命令的确切格式取决于aws的输出。我不使用它,所以在没有看到输出的情况下无法立即提供帮助。没问题,我会研究它。我遇到的主要问题是AWS CLI命令的输出需要一段时间才能返回。我喜欢这个答案。在我的情况下,我必须从响应中获取两个值,我该如何做?@AppuMistri您可能可以将初始输出保存到一个变量中,然后从该响应中提取两个值。请随意提出一个新问题,也许有人会有答案。
ID=`aws ec2 run-instances --image-id ami-xxxxxxxx --instance-type t1.micro --query 'Instances[0].InstanceId' --output text`

aws ec2 create-tags --resources $ID --tags Key=Name,Value=WebServer