拓冰建站拓冰建站
首页 / 资讯中心 / 正文

aws-cli CloudFormation list-types 命令详解:管理私有资源类型与扩展注册表

aws-cli CloudFormation list-types 命令详解管理私有资源类型与扩展注册表【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli本文基于 AWS CLIaws-cli 仓库中的官方示例文档 awscli/examples/cloudformation/list-types.rst系统讲解aws cloudformation list-types命令的完整用法。该命令用于查询 AWS CloudFormation Registry扩展注册表中当前账号可见的扩展类型包括私有资源类型Private Resource Type、模块Module与钩子Hook以及公开展开Public Extension。阅读本文后你将掌握list-types的基本用法、输出字段含义、常用筛选参数、分页技巧并能结合仓库中的服务模型源码理解该命令的底层实现与参数约束。一、命令概览列出账号内的私有资源类型list-types对应 CloudFormation 服务 API 的ListTypes操作。在 AWS CLI 中最直接的用法是不带任何参数列出当前 AWS 账号当前区域中已注册的私有扩展。原文档给出的核心示例如下aws cloudformation list-types输出示例JSON 格式{ TypeSummaries: [ { Description: WordPress blog resource for internal use, LastUpdated: 2019-12-04T18:28:15.059Z, TypeName: My::WordPress::BlogExample, TypeArn: arn:aws:cloudformation:us-west-2:123456789012:type/resource/My-WordPress-BlogExample, DefaultVersionId: 00000005, Type: RESOURCE }, { Description: Customized resource derived from AWS::Logs::LogGroup, LastUpdated: 2019-12-04T18:28:15.059Z, TypeName: My::Logs::LogGroup, TypeArn: arn:aws:cloudformation:us-west-2:123456789012:type/resource/My-Logs-LogGroup, DefaultVersionId: 00000003, Type: RESOURCE } ] }默认情况下该命令只返回PRIVATE可见范围的扩展即当前账号与区域中已注册的私有扩展以及已激活Activated的公开展开。上面的示例展示了两个通过 CloudFormation CLI 开发并注册的私有资源类型例如My::WordPress::BlogExample其Type均为RESOURCE。二、输出结构TypeSummaries 字段详解list-types的响应体固定为TypeSummaries数组每一项是一个TypeSummary结构。结合 awscli/botocore/data/cloudformation/2010-05-15/service-2.json 中TypeSummary的定义各字段含义如下字段类型说明Type字符串扩展种类取值为RESOURCE、MODULE或HOOK见RegistryType枚举TypeName字符串扩展名称例如My::WordPress::BlogExample若在ActivateType中指定了TypeNameAlias则以别名作为类型名TypeArn字符串扩展的 Amazon Resource NameARN形如arn:aws:cloudformation:region:account:type/resource/TypeNameDefaultVersionId字符串默认版本 ID。模板中未显式指定版本时使用该版本。仅对账号内已注册的私有扩展返回对公开展开返回nullLastUpdated时间戳扩展版本注册或激活且开启自动更新的时间其他情况返回nullDescription字符串扩展的描述PublisherId字符串第三方发布者的 IDAWS 官方发布的扩展不返回此字段OriginalTypeName字符串已激活的公开展开的原始类型名若在账号内使用了别名则与TypeName不同PublicVersionNumber字符串已激活公开展开在本账号、本区域使用的版本号LatestPublicVersion字符串已激活公开展开当前可用Available的最新版本号PublisherIdentity字符串用于验证发布者身份的服务其中DefaultVersionId、LastUpdated等字段在示例输出中的值如00000005表明这些类型曾多次注册新版本DefaultVersionId指向当前默认使用的版本可用SetTypeDefaultVersionAPI 修改默认版本。三、核心筛选参数Visibility、Type 与 ProvisioningTypelist-types最常用的价值在于按需过滤扩展。从源码模型 ListTypesInput 的定义可以看到请求参数包括参数取值默认值作用--visibilityPRIVATE/PUBLICPRIVATE扩展可见范围。PRIVATE包含本账号注册的私有扩展和已激活的公开展开PUBLIC返回 AWS 与第三方发布者公开发布、可在任意账号激活的扩展--typeRESOURCE/MODULE/HOOK无按扩展种类过滤对应RegistryType枚举见 service-2.json--provisioning-typeFULLY_MUTABLE/IMMUTABLE/NON_PROVISIONABLEFULLY_MUTABLE仅对资源类型有意义FULLY_MUTABLE含更新处理程序可原地更新IMMUTABLE无更新处理程序更新时需替换NON_PROVISIONABLE不含 create/read/delete 处理程序无法真正供给--deprecated-statusLIVE/DEPRECATED无按弃用状态过滤。LIVE表示已注册可用于 CloudFormation 操作DEPRECATED表示已注销Deregister不能再使用--filters见下文无复合过滤条件Category、PublisherId、TypeNamePrefix--max-results整数无单次调用返回的最大结果数超出时响应会带NextToken--next-token字符串无从上次调用返回的NextToken继续取下一页结果Filters 复合过滤--filters参数接受一个 JSON 结构对应TypeFilters见 service-2.json支持三个子条件CategoryREGISTERED本账号注册的私有扩展、ACTIVATED本账号激活的公开展开、THIRD_PARTY非 Amazon 发布者的扩展含注册的私有扩展与第三方公开展开、AWS_TYPESAmazon 发布的扩展PublisherId按第三方发布者 ID 过滤AWS 官方扩展无 PublisherId需用AWS_TYPES分类TypeNamePrefix按类型名前缀过滤例如My::。需要注意兼容性约束Filters必须与Visibility搭配合理才能返回有效结果。例如指定CategoryAWS_TYPES且VisibilityPRIVATE会得到空列表而VisibilityPUBLIC才能返回期望的 AWS 官方类型列表该约束在Filters参数的源码文档中有明确说明见 service-2.json。四、实战示例常用过滤组合1. 列出账号内所有已注册的私有资源类型aws cloudformation list-types \ --visibility PRIVATE \ --type RESOURCE2. 只查看已弃用的私有扩展aws cloudformation list-types \ --deprecated-status DEPRECATED3. 按类型名前缀过滤如自定义组织前缀aws cloudformation list-types \ --filters {TypeNamePrefix: My::}4. 按发布者分类过滤例如仅查看 AWS 官方类型aws cloudformation list-types \ --visibility PUBLIC \ --filters {Category: AWS_TYPES}5. 查看第三方公开展开aws cloudformation list-types \ --visibility PUBLIC \ --filters {Category: THIRD_PARTY}6. 限制单页返回数量并使用分页aws cloudformation list-types --max-results 10 # 使用返回的 NextToken 获取下一页 aws cloudformation list-types --max-results 10 --next-token TOKEN_VALUE7. 使用 --output 与 --query 精简输出在实际自动化中常配合--query只提取关键信息例如仅输出类型名与默认版本aws cloudformation list-types \ --query TypeSummaries[].{Name:TypeName,Version:DefaultVersionId} \ --output table五、分页机制与自动化调用ListTypes是支持分页的 API。在仓库的 paginators-1.json 中其分页配置为ListTypes: { input_token: NextToken, output_token: NextToken, limit_key: MaxResults, result_key: TypeSummaries }这意味着 AWS CLI 内置的分页器以NextToken作为输入/输出分页令牌以MaxResults作为单页大小结果聚合在TypeSummaries键下。因此可以直接使用--paginate选项自动遍历所有结果无需手动处理令牌aws cloudformation list-types --paginate在 Shell 脚本中也可以借助--no-paginate与--next-token手动实现循环TOKEN while :; do if [ -z $TOKEN ]; then RESP$(aws cloudformation list-types --max-results 20) else RESP$(aws cloudformation list-types --max-results 20 --next-token $TOKEN) fi echo $RESP | jq -r .TypeSummaries[].TypeName TOKEN$(echo $RESP | jq -r .NextToken // empty) [ -z $TOKEN ] break done六、源码级原理从服务模型看 ListTypes 操作在 awscli/botocore/data/cloudformation/2010-05-15/service-2.json 中ListTypes操作被定义为HTTP 方法POST请求路径/CloudFormation 通过X-Amz-Target头路由到具体 API此类操作在 SDK 模型中以 POST 根路径呈现请求体为ListTypesInput响应体为ListTypesOutputresultWrapper为ListTypesResult唯一错误类型为CFNRegistryException标记为idempotent幂等即重复调用不会产生副作用适合在自动化脚本中反复查询。该操作的官方语义是返回所有扩展的摘要信息包括账号内的私有资源类型、模块、Hooks以及来自 AWS 和第三方发布者的公开展开。这正是文档示例中列出私有资源类型场景的 API 基础。从TypeSummary的字段设计还可以推断list-types是 CloudFormation Registry 管理链路中的查询入口它与以下命令共同构成扩展生命周期管理aws cloudformation register-type注册扩展使其可在本账号模板中使用RegisterTypeaws cloudformation describe-type查看单个扩展的详细信息aws cloudformation set-type-default-version设置默认版本aws cloudformation deregister-type注销扩展版本注销后扩展进入DEPRECATED状态可通过--deprecated-status DEPRECATED查询aws cloudformation list-type-versions列出某一扩展的所有版本对应ListTypeVersions操作定义在 service-2.json。七、使用注意事项区域隔离list-types的结果是账号 区域维度的。私有扩展只在本注册区域可见切换区域查询前需注意--region参数默认可见范围不带任何参数时只返回PRIVATE范围要查看公开展开必须显式指定--visibility PUBLIC过滤条件兼容性Filters.Category与Visibility组合不当会返回空列表如AWS_TYPES必须配合PUBLIC使用默认版本与描述字段DefaultVersionId、LastUpdated等字段仅对私有扩展或激活且开启自动更新的公开展开非空查询公开展开时这些字段通常为null权限要求该操作依赖 CloudFormation 的读取权限调用身份需具备对应的 IAM 策略如cloudformation:ListTypes才能成功执行。八、小结aws cloudformation list-types是管理 CloudFormation Registry 最常用的查询命令一条不带参数的调用即可快速掌握账号内注册了哪些私有资源类型及其默认版本配合--visibility、--type、--filters等参数可以精准定位资源类型、模块、Hooks 与各类公开展开借助--paginate或手动NextToken循环可在大规模账号中可靠地遍历全部类型。结合 service-2.json 与 paginators-1.json 中的模型定义开发者可以进一步理解该命令的参数边界与分页行为将其稳定地集成进 IaC 治理与扩展审计脚本中。【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门