如何在执行 [aws cloudformation create-stack] 后自动提取 VPCID、PrivateSubnet1、PublicSubnet1、S3BucketName 和 DBSubnetGroup

How to extract VPCID, PrivateSubnet1, PublicSubnet1, S3BucketName & DBSubnetGroup automatically after executing [aws cloudformation create-stack]

我运行这个命令:

aws cloudformation create-stack --stack-name my-stackname --template-body file://stack.yml --parameters file://stack-params.json

得到这个结果:

arams.json

{
    "StackId": "arn:aws:cloudformation:us-east-1:343434345343:stack/some-stack-name/43434f-sed434-1147-867c-098sdfs09sdd"
}

但是,我正在寻找一种方法来 programmatically/automatically 捕获 VPCID、PrivateSubnet1、PrivateSubnet2、PublicSubnet1、PublicSubnet2、S3BucketName 和 DBSubnetGroup[=28= 的值] 基于上面创建的基本堆栈的输出部分中的值。

我不想登录到我的 aws cloudformation 服务控制台来手动复制和粘贴这些值。

有没有办法自动提取该数据,也许是某种脚本? 如果该数据在输出中,我可以将上述命令的输出通过管道传输到另一个程序并解析数据,但我在输出中得到的只是 stackid。

如何根据输出中的值获取 VPCID、PrivateSubnet1、PrivateSubnet2、PublicSubnet1、PublicSubnet2、S3BucketName 和 DBSubnetGroup上面创建的基础堆栈部分?

您可以使用 aws cloudformation wait 命令等待堆栈完成,然后再检查输出值。例如:

aws cloudformation create-stack \
    --stack-name my-stackname \
    --template-body file://stack.yml \
    --parameters file://stack-params.json

aws cloudformation wait stack-create-complete \
    --stack-name my-stackname

aws cloudformation describe-stacks \
    --stack-name my-stackname \
    --query "Stacks[0].Outputs"

如果你想一个一个地获取堆栈输出,你可以使用这样的查询:

aws cloudformation describe-stacks \
    --stack-name my-stackname \
    --query "Stacks[0].Outputs[?OutputKey=='VPCID'].OutputValue" \
    --output text

请注意,对于 wait,如果您正在执行更新而不是创建,则需要使用 stack-update-complete