aws-cli 中 aws appconfig get-extension 实战指南:查询 AWS AppConfig 扩展详情并读懂返回结构
【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli
本文以 aws-cli 仓库中的官方示例文档aws appconfig get-extension为核心,讲解如何通过 AWS CLI 按名称、ID 或 ARN 查询一个 AWS AppConfig 扩展的完整定义(版本、ARN、动作点、参数),并结合仓库内 botocore 的 AppConfig 服务模型(service-2.json)逐项解释请求参数、输出字段、可选动作点枚举与错误响应,帮助你写出可复制、可排错的扩展查询命令。
1. 命令示例:查看一个扩展的完整信息
仓库中的官方示例(get-extension.rst)展示了最基本的用法:
aws appconfig get-extension \ --region us-west-2 \ --extension-identifier S3-backup-extension执行后返回该扩展的完整定义:
{ "Id": "1A2B3C4D", "Name": "S3-backup-extension", "VersionNumber": 1, "Arn": "arn:aws:appconfig:us-west-2:123456789012:extension/S3-backup-extension/1", "Actions": { "PRE_CREATE_HOSTED_CONFIGURATION_VERSION": [ { "Name": "S3backup", "Uri": "arn:aws:lambda:us-west-2:123456789012:function:S3backupfunction", "RoleArn": "arn:aws:iam::123456789012:role/appconfigextensionrole" } ] }, "Parameters": { "S3bucket": { "Required": true } } }从结构上看,这条命令回答的是运维中最常见的一个问题:“这个扩展叫什么、哪个版本、在什么生命周期节点被触发、由哪个 Lambda/消息目标执行、需要我传哪些参数”。下面结合仓库中的服务模型逐字段拆解。
2. 请求参数:--extension-identifier与可选的--version-number
GetExtension在 botocore 服务模型中的定义位于 service-2.json(API 版本2019-10-09):
- HTTP 方法:
GET /extensions/{ExtensionIdentifier},成功返回 200。 --extension-identifier(必填):对应模型中的ExtensionIdentifier,类型是字符串,长度 1–2048。文档说明它是“扩展的名称、ID 或 ARN”,即三种标识方式任选其一,都会放在 URI 路径段中。示例中使用名称S3-backup-extension;如果你知道扩展的系统 ID(如1A2B3C4D)或完整 ARN,也可以直接传。--version-number(可选):指定要查询的扩展版本号。若不提供,AppConfig 默认返回最高版本。该字段在模型中标记为box: true(整型按字符串传输),通过查询参数version_number传递。
实操提示:在不确定扩展名称时,可先用同目录下的 list-extensions.rst 示例执行
aws appconfig list-extensions拿到 ID、Name 与 ARN,再代入get-extension查询详情。
3. 输出字段逐项解析(对照服务模型Extension结构)
模型中Extension输出结构包含以下字段,与示例输出一一对应:
| 字段 | 类型/含义 | 示例值 |
|---|---|---|
Id | 系统生成的扩展 ID | 1A2B3C4D |
Name | 扩展名称 | S3-backup-extension |
VersionNumber | 扩展版本号(整数) | 1 |
Arn | 系统生成的资源 ARN | arn:aws:appconfig:us-west-2:123456789012:extension/S3-backup-extension/1 |
Description | 扩展描述信息 | 示例中未返回(可选字段) |
Actions | 扩展定义的动作集合(动作点 → 动作列表) | 见下文 |
Parameters | 扩展接受的参数定义(在创建扩展关联时提供参数值) | S3bucket: Required=true |
关于Actions与Parameters,模型文档中有两点关键信息值得注意:
- Actions 的数量限制:
ActionsMap定义为 1–5 个条目(min 1、max 5),即一个扩展必须定义至少一个动作点、最多五个。 - Parameters 的用途与限制:模型说明“参数值在将扩展关联(associate)到 AppConfig 资源时指定;对于 Lambda 扩展动作,这些参数会包含在 Lambda 请求对象中”。
ParameterMap定义为 1–10 个条目,每个Parameter有三个可选属性:Required(布尔):关联扩展时必须提供该参数值;Dynamic(布尔):表示参数值可以在扩展动作点处动态提供,而不是在创建扩展关联时提供。动态参数不能同时标记为Required;Description:参数说明。
示例输出中Parameters.S3bucket.Required = true的含义就是:把这个扩展关联到应用/配置档案时,必须通过create-extension-association提供S3bucket的值(通常是目标 S3 桶的 ARN 或名称),否则关联会被拒绝。
4. 动作点(Action Point)枚举与 Action 结构
示例输出中Actions的键是PRE_CREATE_HOSTED_CONFIGURATION_VERSION。模型中的ActionPoint枚举给出了全部 8 个合法动作点:
PRE_CREATE_HOSTED_CONFIGURATION_VERSION PRE_START_DEPLOYMENT AT_DEPLOYMENT_TICK ON_DEPLOYMENT_START ON_DEPLOYMENT_STEP ON_DEPLOYMENT_BAKING ON_DEPLOYMENT_COMPLETE ON_DEPLOYMENT_ROLLED_BACK每个动作点的值是一个Action结构列表,Action的字段为:
Name:动作名称(示例中为S3backup);Description:动作说明(可选);Uri:动作关联的目标 URI。模型明确说明它可以是以下目标之一的 ARN:Lambda 函数、SQS 队列、SNS 主题,或 Amazon EventBridge 默认事件总线。示例中的arn:aws:lambda:...:function:S3backupfunction就是一个 Lambda 函数目标;RoleArn:IAM 角色扮演(assume role)的 ARN(示例中为arn:aws:iam::123456789012:role/appconfigextensionrole),AppConfig 使用该角色去调用动作目标。
因此,读get-extension输出的实用方法是:先看Actions的键,确认该扩展在部署工作流的哪些节点被触发;再看每个动作的Uri与RoleArn,确认执行目标与授权链是否完整(排查“扩展没有触发”问题时,这是第一手依据)。
5. 错误响应:CLI 会如何报错
GetExtension在模型中声明了三个错误类型,排错时可据此区分问题来源:
| 异常 | HTTP 状态码 | 含义 |
|---|---|---|
ResourceNotFoundException | 404 | 找不到请求的资源(--extension-identifier拼写错误、扩展在其它 Region、或已删除) |
BadRequestException | 400 | 输入不满足服务约束(含Reason与Details字段辅助定位) |
InternalServerException | 500 | 服务端内部故障(标记为 client 侧可重试的fault) |
注意get-extension是单资源查询、非分页命令,模型中的分页器(paginators-1.json)不适用于它;批量查看请用list-extensions。
6. 这些示例文档在 aws-cli 仓库中如何生效
仓库中 awscli/examples/appconfig/ 目录下的.rst文件是各操作的官方使用示例(与examples-1.json共享示例模型配套)。从源码结构看,service.py 中的get_examples()会通过 loader 读取examples-1模型,再由 sharedexample.py 的document_shared_examples()渲染进aws help文档体系。也就是说:
- 你在仓库中看到的 get-extension.rst 与
aws appconfig get-extension help中的 Examples 小节来源于同一套示例数据; - 示例中的命令、参数命名与实际 CLI 参数严格一致(
--extension-identifier等),可直接复制执行(前提是本机已安装 aws-cli 并完成凭证配置)。
与本文主题直接相关的同类示例还有:
- 创建扩展:create-extension.rst(展示
--actions与--parameters的 shorthand 写法,是get-extension输出的“对偶”命令); - 列举扩展:list-extensions.rst(展示 AWS 官方托管扩展,如
AWS.AppConfig.FeatureFlags、AWS.AppConfig.JiraIntegration、部署通知到 EventBridge/SQS/SNS 的扩展等,这些内置扩展同样可用get-extension按名称查询详情); - 删除扩展:delete-extension.rst。
7. 完整实操流程小结
- 确认标识:
aws appconfig list-extensions --region us-west-2,找到目标扩展的 Name/Id/ARN; - 查询详情:
aws appconfig get-extension --region us-west-2 --extension-identifier <名称|ID|ARN>;需要历史版本时追加--version-number <N>; - 解读输出:
- 用
Id/Arn/VersionNumber确认资源身份; - 用
Actions确认触发节点(8 个动作点之一)、执行目标(Uri)与角色(RoleArn); - 用
Parameters确认关联时必须提供的参数(Required=true的项)及其是否支持动态传入(Dynamic);
- 用
- 排错:404 检查标识与 Region;400 查看
Reason/Details;500 稍后重试。
上述内容可直接对应仓库中的 get-extension.rst 示例与服务模型 service-2.json,命令与字段均可在该 API 版本(2019-10-09)下验证。
【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考