
AWS CLI 实战使用 cloudformation list-generated-templates 列出所有已生成的 IaC 模板【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-clilist-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.28300000:00, LastUpdatedTime: 2025-09-23T20:13:28.61000000: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.79000000:00, LastUpdatedTime: 2024-08-08T19:35:52.20700000: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.88300000:00, LastUpdatedTime: 2024-07-16T20:39:35.76600000: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创建时指定的生成模板名称如MyTemplateStatusstring生成操作的当前状态取值见下文状态枚举StatusReasonstring当前状态的补充原因当操作失败时这里会给出更详细的失败信息CreationTimetimestamp生成模板的创建时间ISO 8601 格式含时区偏移LastUpdatedTimetimestamp生成模板的最后更新时间NumberOfResourcesinteger模板中的资源总数是 pending、in-progress、completed、failed 各状态资源的总和状态枚举与含义Status字段的可选值定义在服务模型的GeneratedTemplateStatus枚举中见 service-2.json#L4005-L4017CREATE_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[?GeneratedTemplateNameMyTemplate] # 只输出模板名称与状态便于脚本判断 aws cloudformation list-generated-templates \ --query Summaries[].{Name:GeneratedTemplateName,Status:Status,Resources:NumberOfResources} \ --output table在完整的工作流中本命令通常与以下操作串行配合创建create-generated-template 从扫描到的资源生成模板示例中通过--resources file://resources.json传入包含ResourceType、LogicalResourceId、ResourceIdentifier的资源清单总览list-generated-templates查看所有生成模板的状态与资源数查看详情describe-generated-template 查看单个模板的具体资源列表Resources、生成进度Progress与配置TemplateConfiguration中的DeletionPolicy/UpdateReplacePolicy清理delete-generated-template 删除不再使用的生成模板该命令无输出可通过再次执行list-generated-templates确认模板已从列表中消失。常见问题与注意事项区域隔离list-generated-templates只返回当前区域内的模板跨区域查看需指定--region结果截断当模板数量超过单次返回上限默认 50时响应会返回NextToken必须携带该令牌继续请求否则会漏掉后续结果状态未完成若模板正处于CREATE_IN_PROGRESS等中间状态其NumberOfResources会少于最终值应等状态变为COMPLETE后再进行导出等下游操作失败排查状态为FAILED时优先阅读StatusReason字段例如资源类型不被支持、权限不足等再结合describe-generated-template输出中的ResourceStatusReason与Warnings定位具体资源。通过本文的命令与字段解析你可以在 AWS CLI 环境中快速掌握区域内所有生成模板的全貌并将其无缝嵌入「生成 → 总览 → 检查 → 清理」的 IaC 逆向工程流程。【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考