news 2026/9/15 18:03:07

AWS CLI 实战:使用 cloudformation list-generated-templates 列出所有已生成的 IaC 模板

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AWS CLI 实战:使用 cloudformation list-generated-templates 列出所有已生成的 IaC 模板

AWS CLI 实战:使用 cloudformation list-generated-templates 列出所有已生成的 IaC 模板

【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli

list-generated-templates是 AWS CLI 中用于列出当前区域(Region)内所有「生成模板」(generated templates)的命令,这些模板由 CloudFormation 的 IaC Generator 从已存在的 AWS 资源中自动生成,帮助你将存量资源逆向转成可管理的 CloudFormation 模板。本文将基于本仓库中的官方示例文档 awscli/examples/cloudformation/list-generated-templates.rst,完整讲解该命令的用法、输出字段含义、分页机制与状态机,并结合仓库内的服务模型与相邻命令示例(创建、描述、删除)给出可落地的实战方案。

命令背景:什么是 CloudFormation 生成模板

CloudFormation 的 IaC Generator 允许你从账户中已存在的资源出发,自动生成对应的 CloudFormation 模板(JSON 或 YAML)。每执行一次生成,就会产生一个「生成模板」(generated template),它是模板的元数据容器,包含目标资源列表、生成状态、进度等信息。

  • 通过 create-generated-template 示例,可以从扫描到的资源创建生成模板;
  • 通过list-generated-templates可以查看区域内已经生成的全部模板及其摘要;
  • 通过 describe-generated-template 示例 可以查看某个模板的详细资源与进度;
  • 通过 delete-generated-template 示例 可以删除不再需要的模板。

list-generated-templates正是这一工作流中「总览全局」的入口命令。

基本用法:列出所有生成模板

按照官方示例文档,直接执行:

aws cloudformation list-generated-templates

该命令不需要任何必填参数,默认返回当前区域(可通过--region指定)下所有生成模板的摘要列表。

输出示例与字段解析

示例文档给出的输出如下:

{ "Summaries": [ { "GeneratedTemplateId": "arn:aws:cloudformation:us-east-1:123456789012:generatedtemplate/7fc8512c-d8cb-4e02-b266-d39c48344e48", "GeneratedTemplateName": "MyTemplate", "Status": "COMPLETE", "StatusReason": "All resources complete", "CreationTime": "2025-09-23T20:13:24.283000+00:00", "LastUpdatedTime": "2025-09-23T20:13:28.610000+00:00", "NumberOfResources": 4 }, { "GeneratedTemplateId": "arn:aws:cloudformation:us-east-1:123456789012:generatedTemplate/f10dd1c4-edc6-4823-8153-ab6112b8d051", "GeneratedTemplateName": "MyEC2InstanceTemplate", "Status": "COMPLETE", "StatusReason": "All resources complete", "CreationTime": "2024-08-08T19:35:49.790000+00:00", "LastUpdatedTime": "2024-08-08T19:35:52.207000+00:00", "NumberOfResources": 3 }, { "GeneratedTemplateId": "arn:aws:cloudformation:us-east-1:123456789012:generatedTemplate/e5a1c89f-7ce2-41bd-9bdf-75b7c852e3ca", "GeneratedTemplateName": "MyEKSNodeGroupTemplate", "Status": "COMPLETE", "StatusReason": "All resources complete", "CreationTime": "2024-07-16T20:39:27.883000+00:00", "LastUpdatedTime": "2024-07-16T20:39:35.766000+00:00", "NumberOfResources": 4 } ] }

响应中每个摘要(Summaries数组元素)由TemplateSummary结构组成,其字段定义可以在仓库的服务模型中查到,见 awscli/botocore/data/cloudformation/2010-05-15/service-2.json#L8815-L8848:

字段类型说明
GeneratedTemplateIdstring生成模板的 ARN,格式为arn:${Partition}:cloudformation:${Region}:${Account}:generatedtemplate/${Id},如arn:aws:cloudformation:us-east-1:123456789012:generatedtemplate/7fc8512c-...
GeneratedTemplateNamestring创建时指定的生成模板名称,如MyTemplate
Statusstring生成操作的当前状态,取值见下文状态枚举
StatusReasonstring当前状态的补充原因;当操作失败时,这里会给出更详细的失败信息
CreationTimetimestamp生成模板的创建时间(ISO 8601 格式,含时区偏移)
LastUpdatedTimetimestamp生成模板的最后更新时间
NumberOfResourcesinteger模板中的资源总数,是 pending、in-progress、completed、failed 各状态资源的总和

状态枚举与含义

Status字段的可选值定义在服务模型的GeneratedTemplateStatus枚举中,见 service-2.json#L4005-L4017:

  • CREATE_PENDING:模板创建已排队,尚未开始;
  • CREATE_IN_PROGRESS:模板创建进行中;
  • UPDATE_PENDING:模板更新已排队,尚未开始;
  • UPDATE_IN_PROGRESS:模板更新进行中;
  • DELETE_PENDING:模板删除已排队,尚未开始;
  • DELETE_IN_PROGRESS:模板删除进行中;
  • FAILED:模板操作失败,应结合StatusReason查看具体原因;
  • COMPLETE:模板操作已成功完成(示例输出中的 3 个模板均为此状态)。

在实际工作中,list-generated-templates常用来轮询生成进度:先执行创建命令,再用本命令观察Status是否从CREATE_PENDING变为CREATE_IN_PROGRESS再到COMPLETE,异常时通过StatusReason定位问题。

参数详解:MaxResults 与 NextToken

从服务模型 service-2.json#L4663-L4688 可以看到,ListGeneratedTemplates操作支持两个请求参数:

参数类型说明
NextTokenstring上一次调用返回的分页令牌,用于获取下一批结果
MaxResultsinteger单次返回的最大结果数。默认最多返回50条,最大可设为100

在 AWS CLI 中,你通常不需要直接手写这两个参数。CLI 会为支持分页的操作自动提供--max-items--next-token--page-size等高层参数:

# 每次请求只取 10 条,便于分页浏览 aws cloudformation list-generated-templates --max-items 10 # 利用上一页返回的 NextToken 翻页 aws cloudformation list-generated-templates \ --max-items 10 \ --next-token "eyJ2ZXJzaW9uIjoxLCJjdXJzb3IiOiJ..."

该操作的分页配置可以在仓库的 awscli/botocore/data/cloudformation/2010-05-15/paginators-1.json#L102-L107 中确认:

"ListGeneratedTemplates": { "input_token": "NextToken", "limit_key": "MaxResults", "output_token": "NextToken", "result_key": "Summaries" }

这意味着 CLI 会自动以Summaries作为结果集、以NextToken作为翻页游标进行分页聚合:当你使用--max-items指定总量时,CLI 会在内部自动连续翻页,直到取够指定数量或取完所有结果。而--page-size则控制底层每次 API 请求的大小(对应MaxResults,最大 100),适合数据量很大时控制单次网络请求的负载。

当结果不足一页时,响应中不会出现NextToken;只有当还有剩余结果时,响应才会携带该字段(若已取完则为空字符串)。

实战:筛选、排序与配合使用

由于list-generated-templates只返回摘要信息,配合 JMESPath 查询可以快速筛选出需要关注的模板,例如:

# 只列出名称为 MyTemplate 的模板 aws cloudformation list-generated-templates \ --query "Summaries[?GeneratedTemplateName=='MyTemplate']" # 只输出模板名称与状态,便于脚本判断 aws cloudformation list-generated-templates \ --query "Summaries[].{Name:GeneratedTemplateName,Status:Status,Resources:NumberOfResources}" \ --output table

在完整的工作流中,本命令通常与以下操作串行配合:

  1. 创建:create-generated-template 从扫描到的资源生成模板,示例中通过--resources file://resources.json传入包含ResourceTypeLogicalResourceIdResourceIdentifier的资源清单;
  2. 总览list-generated-templates查看所有生成模板的状态与资源数;
  3. 查看详情:describe-generated-template 查看单个模板的具体资源列表(Resources)、生成进度(Progress)与配置(TemplateConfiguration中的DeletionPolicy/UpdateReplacePolicy);
  4. 清理:delete-generated-template 删除不再使用的生成模板(该命令无输出,可通过再次执行list-generated-templates确认模板已从列表中消失)。

常见问题与注意事项

  • 区域隔离list-generated-templates只返回当前区域内的模板,跨区域查看需指定--region
  • 结果截断:当模板数量超过单次返回上限(默认 50)时,响应会返回NextToken,必须携带该令牌继续请求,否则会漏掉后续结果;
  • 状态未完成:若模板正处于CREATE_IN_PROGRESS等中间状态,其NumberOfResources会少于最终值,应等状态变为COMPLETE后再进行导出等下游操作;
  • 失败排查:状态为FAILED时,优先阅读StatusReason字段(例如资源类型不被支持、权限不足等),再结合describe-generated-template输出中的ResourceStatusReasonWarnings定位具体资源。

通过本文的命令与字段解析,你可以在 AWS CLI 环境中快速掌握区域内所有生成模板的全貌,并将其无缝嵌入「生成 → 总览 → 检查 → 清理」的 IaC 逆向工程流程。

【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/15 18:02:06

MAX30100到MAX30101驱动移植:寄存器差异与C/C++实现

简介:这是一套基于STM32的MAX30100心率血氧传感器驱动程序包,面向嵌入式开发者和健康监测产品入门者,解决在STM32平台上快速完成传感器配置、原始数据采集与心率和血氧计算的问题。压缩包大小6.95MB,共200个文件,除C/C…

作者头像 李华
网站建设 2026/9/15 18:01:30

51单片机与Proteus仿真在功率因数校正电路中的设计与实现

简介:一套基于51单片机与Proteus仿真的功率因数矫正电路设计资料包,面向单片机爱好者、电气相关专业学生及需要完成课程设计或毕业设计的开发者。方案实现电网电压电流测量、无功功率因数检测、电容阵列自动投切功能,并支持手动与自动两种模式…

作者头像 李华
网站建设 2026/9/15 18:00:35

SpringBoot+Vue影院订票系统:从环境搭建到并发选座完整实战

打开GitHub或者各类毕设资源站,搜索“影院订票系统”几个字,你能看到几十个面孔几乎一模一样的项目,技术栈也高度统一:SpringBootVue,前端一个后台管理,后端一套RBAC权限,再加几张表和一份接口文…

作者头像 李华