当前位置:  开发笔记 > 编程语言 > 正文

从aws cloudformation describe-stack获取输出

如何解决《从awscloudformationdescribe-stack获取输出》经验,为你挑选了2个好方法。

我使用以下内容通过AWS Cli 获取我想要的堆栈信息:

aws cloudformation --region ap-southeast-2 describe-stacks --stack-name mystack

它返回结果OK:

{
    "Stacks": [
        {
            "StackId": "arn:aws:mystackid", 
            "LastUpdatedTime": "2017-01-13T04:59:17.472Z", 
            "Tags": [], 
            "Outputs": [
                {
                    "OutputKey": "Ec2Sg", 
                    "OutputValue": "sg-97e13dff"
                }, 
                {
                    "OutputKey": "DbUrl", 
                    "OutputValue": "myUrl"
                }
            ], 
            "CreationTime": "2017-01-13T03:27:18.893Z", 
            "StackName": "mystack", 
            "NotificationARNs": [], 
            "StackStatus": "UPDATE_ROLLBACK_COMPLETE", 
            "DisableRollback": false
        }
    ]
}

但我不知道如何只返回OutputUall的值,即myUrl

因为我不需要休息,只需我的.

这可能通过aws cloudformation describe-stacks吗?

编辑

我才意识到我可以使用 - 查询:

--query "Stacks[0].Outputs[1].OutputValue"

将得到我想要的,但我想使用DbUrl else如果输出的数量改变,我的结果将是意外的.



1> Steven Yong..:

我得到了答案,请使用以下内容:

--query "Stacks[0].Outputs[?OutputKey=='DbUrl'].OutputValue" --output text

希望这会对某人有所帮助.



2> g.d.d.c..:

查询有效时,如果您有多个堆栈,可能会证明是有问题的。实际上,您可能应该利用出口来实现独特而权威的产品。

举例来说-如果您将CloudFormation片段修改为如下所示:

"Outputs" : {
  "DbUrl" : {
    "Description" : "My Database Url",
    "Value" : "myUrl",
    "Export" : {
      "Name" : "DbUrl"
    }
  }
}

然后,您可以使用:

aws cloudformation list-exports --query "Exports[?Name==\`DbUrl\`].Value" --no-paginate --output text

检索它。导出必须是唯一的-只有一个堆栈可以导出任何给定的名称。这样,您可以确保每次获得正确的价值。如果尝试创建一个新的堆栈,该堆栈导出一个在其他位置已经存在的名称,则该堆栈创建将失败。

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有