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

如何统计CloudFormation及AWS SAM模板构建/部署时实际创建的资源数量?

如何提前统计SAM/CloudFormation将创建的资源数量

遇到堆栈资源限制确实头疼,尤其是SAM模板会自动生成很多隐式资源(比如每个Lambda关联的API网关方法、集成、权限,还有默认的日志组、IAM角色等),导致实际资源数远多于模板里定义的数量。这里有几个实用的方法帮你提前统计,顺便给你优化模板的建议:

方法1:用SAM CLI展开模板,直接统计资源数

SAM的transform命令会把你的SAM模板转换成纯CloudFormation模板,里面包含所有SAM自动生成的隐式资源。你可以用这个命令生成展开后的模板,再快速统计资源数量:

# 生成展开后的CloudFormation JSON模板
sam transform --template-file template.yaml > expanded-template.json

# 用jq统计Resources节点下的资源总数(需先安装jq工具)
jq '.Resources | length' expanded-template.json

这个方法最直接,不仅能得到准确的资源总数,你还可以打开expanded-template.json查看具体生成了哪些资源,方便排查资源数激增的原因(比如是不是每个函数都自动创建了独立的IAM角色)。

方法2:通过变更集预览资源数量

使用SAM或CloudFormation的变更集功能,在实际部署前预览所有要创建的资源,还能看到每个资源的类型:

用SAM CLI创建变更集

sam deploy --template-file template.yaml --stack-name your-stack-name --no-execute-changeset

执行后,SAM会创建一个变更集但不会实际部署。你可以登录AWS控制台,进入CloudFormation服务找到对应堆栈,点击"变更集"查看详情——顶部会显示资源总数,列表里能看到每个资源的具体信息。

用AWS CLI统计变更集资源数

如果偏好命令行,可以用以下命令直接获取数量:

# 先创建变更集(替换占位符为你的堆栈名)
aws cloudformation create-change-set --stack-name your-stack-name --change-set-name preview-resources --template-body file://template.yaml --change-set-type CREATE

# 等待变更集创建完成后,统计资源数
aws cloudformation describe-change-set --stack-name your-stack-name --change-set-name preview-resources | jq '.Changes | length'

方法3:优化模板减少不必要的资源(解决你资源过多的核心问题)

从你的示例模板来看,每个AWS::Serverless::Function都没有指定Role属性,SAM会自动为每个函数创建一个独立的IAM角色——这就额外增加了193个IAM资源!你可以在Globals里统一指定共用的LambdaRole,让所有函数共用一个角色,大幅减少资源数:

修改你的Globals部分:

Globals:
  Function:
    Timeout: 5
    Role: !GetAtt LambdaRole.Arn  # 添加这行,统一使用共用角色
    VpcConfig:
      SecurityGroupIds:
        - sg-041f2xxxd921e8e
      SubnetIds:
        - subnet-03xxxb2d
        - subnet-c4dxxxcb

另外,如果你不需要每个函数都生成独立的日志组,可以在Globals里指定共用日志组(不过通常不建议禁用自动日志组,除非你有统一的日志管理方案):

Globals:
  Function:
    LoggingConfig:
      LogGroup: !Ref SharedLogGroup  # 指定共用日志组
    # 其他配置...

这样优化后,你的资源数量会大幅降低,也能避免触发堆栈资源限制。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 08:27:34