【问题标题】:StackName used by SAM CLI can't be used by "aws cloudformation delete-stack"?“aws cloudformation delete-stack”不能使用 SAM CLI 使用的 StackName?
【发布时间】:2021-10-31 04:17:32
【问题描述】:

如果我使用 SAM 部署堆栈,后来决定删除与该堆栈关联的所有资源,我将如何做到这一点? 因为使用 SAM,

sam deploy --stack-name my_lambda_stack --image-repository $MY_AWS_ACCOUNT.dkr.ecr.us-west-2.amazonaws.com/mystack_images

一个普通的用户提供的字符串作为命令行参数提供。

但稍后,为了使用“aws cloudformation”CLI 删除包含所有相关资源的堆栈,

aws cloudformation delete-stack --stack-name my_lambda_stack

将无法正常工作,因为它需要一个唯一的 StackId,尽管手册页显示堆栈名称时令人困惑。

我的问题来自用户提供的堆栈名称,如何使用“aws cloudformation list-stacks”或“aws cloudformation describe-stacks”检索相应的堆栈 ID?

我是否必须编写一个脚本来一次解析输出一条记录?

我了解“aws”CLI 具有 --query 功能,但我不知道如何执行通配符匹配并使用“aws cloudformation list-stacks --query ...”将匹配的堆栈 ID 返回给我命令。

任何提示都会有所帮助。

谢谢,

杨 cloudformation新手

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation


    【解决方案1】:

    我正在回答我自己的问题,这应该可行:

    aws cloudformation list-stacks --query 'StackSummaries[?StackName==`my_lambda_stack`]'.StackId --output text > stackId.txt
    

    但是我还没有想出一种方法来使用--stack-status-filter 对那些DELETE_COMPLETE 的堆栈进行负过滤,所以我不会重复删除它们。

    【讨论】:

      【解决方案2】:

      sam deploy 和您提供的aws cloudformation delete-stack 命令应该可以毫无问题地协同工作。删除堆栈支持堆栈名称或唯一 ID 作为输入。两者都应该工作。

      请注意,堆栈名称的命名受到限制,并且不允许使用下划线。这让我想知道堆栈是否一开始就被部署了。

      来自 AWS 文档:

      堆栈名称只能包含字母数字字符(区分大小写)和连字符。它必须以字母字符开头,并且不能超过 128 个字符。

      关于查询语法的问题:

      aws cloudformation describe-stacks --stack-name myteststack --query 'Stacks[*].StackId'
      
      

      返回堆栈 ID。可以选择添加 --output text 以将输出作为简单字符串。

      【讨论】:

        猜你喜欢
        • 2017-05-07
        • 2022-01-16
        • 2020-07-07
        • 2018-09-28
        • 2020-03-08
        • 2019-02-27
        • 1970-01-01
        • 2020-02-08
        • 1970-01-01
        相关资源
        最近更新 更多