You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SAM CLI部署的CloudFormation栈无法用栈名执行delete-stack如何处理

解决方案:通过自定义栈名查询CloudFormation StackId

报错原因

出现要求传入StackId的报错,通常是因为当前AWS区域存在多个同名栈记录(例如状态为DELETE_COMPLETE的历史同名栈还会保留在CloudFormation的操作记录中),CloudFormation无法通过栈名唯一识别目标栈。

直接查询StackId(无需自行解析输出)

你可以直接通过AWS CLI内置的--query参数(基于JMESPath查询语法)实现过滤,不需要手动编写逐行解析脚本。

精确匹配栈名查询StackId

使用describe-stacks查询当前非删除状态的目标栈StackId:

aws cloudformation describe-stacks \
  --stack-name my_lambda_stack \
  --query "Stacks[?StackName=='my_lambda_stack'].StackId" \
  --output text

如果需要查询所有状态(含已删除)的同名栈StackId,可以用list-stacks命令:

aws cloudformation list-stacks \
  --query "StackSummaries[?StackName=='my_lambda_stack'].StackId" \
  --output text

通配符模糊匹配栈名

如果需要匹配前缀/包含特定字符串的栈,可以用JMESPath内置的starts_with、contains函数实现:

  1. 查询所有名称以my_lambda开头的栈的StackId:
aws cloudformation list-stacks \
  --query "StackSummaries[?starts_with(StackName, 'my_lambda')].StackId" \
  --output text
  1. 查询所有名称包含lambda字符串的栈的StackId:
aws cloudformation list-stacks \
  --query "StackSummaries[?contains(StackName, 'lambda')].StackId" \
  --output text

一步完成查询+删除栈

你可以直接将查询结果作为参数传入delete-stack命令,无需手动复制StackId:

aws cloudformation delete-stack \
  --stack-name $(aws cloudformation describe-stacks \
    --stack-name my_lambda_stack \
    --query "Stacks[?StackName=='my_lambda_stack'].StackId" \
    --output text)

内容的提问来源于stack exchange,提问作者Yang X

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 01:45:02