AWS CLI 实战指南:使用 `aws apigateway update-rest-api` 修改 API Gateway REST API
AWS CLI 实战指南使用aws apigateway update-rest-api修改 API Gateway REST API【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli本指南以 AWS CLI 官方示例文档 update-rest-api.rst 为核心系统讲解如何通过aws apigateway update-rest-api命令修改 API Gateway 中 REST API 的名称与描述并深入剖析其底层的 PATCH 语义、JSON Pointer 路径、--patch-operations参数用法及完整的调用链。读完本文你将能够独立完成查询 API 标识 → 构造补丁操作 → 更新 API 属性 → 验证结果的完整运维流程。命令概览一次 PATCH 调用修改 REST API 属性aws apigateway update-rest-api是 AWS CLI 中用于更新已有 REST API 资源信息的命令。它对应 API Gateway 服务模型的UpdateRestApi操作其 HTTP 层实现为对/restapis/{restapi_id}端点发起PATCH请求输出为更新后的RestApi资源对象。这一映射关系可以从当前仓库的服务模型文件 service-2.json 中直接确认{ name: UpdateRestApi, http: { method: PATCH, requestUri: /restapis/{restapi_id} }, input: { shape: UpdateRestApiRequest }, output: { shape: RestApi } }与create-rest-api创建、get-rest-api查询不同update-rest-api采用部分更新语义你不需要重新提交整个 API 定义只需声明对哪个字段做什么操作、改成什么值服务端即完成对应属性的修改其余配置保持不变。官方示例修改 API 的名称与描述根据示例文档 update-rest-api.rst 中的两个经典用法最常用的场景就是修改 API 的名称和描述。修改 API 名称aws apigateway update-rest-api \ --rest-api-id 1234123412 \ --patch-operations opreplace,path/name,valueNew Name修改 API 描述aws apigateway update-rest-api \ --rest-api-id 1234123412 \ --patch-operations opreplace,path/description,valueNew Description两个命令的唯一差异在于path指向的属性不同/name对应 API 的名称/description对应 API 的描述。其中--rest-api-id目标 REST API 的字符串标识符可通过aws apigateway get-rest-apis获取它是请求中唯一必填的参数。--patch-operations本次要执行的补丁操作列表支持一次性传入多个操作用空格分隔多个op...,path...,value...元组。valueNew Name使用单引号包裹避免 shell 对空格进行分词。深入--patch-operationsJSON Patch 风格的补丁操作--patch-operations是本命令的核心参数其结构在服务模型中由PatchOperation结构定义。该结构包含四个成员成员含义适用操作op要执行的更新操作add、remove、replace、copy模型枚举中还包含move、testpath操作目标使用 JSON Pointer 定位到资源内的属性全部操作value操作的新目标值主要用于add与replacefromcopy操作的源位置JSON Pointer仅copy其中op的完整合法枚举值在服务模型的Op结构中声明为[add, remove, replace, move, copy, test]。值得留意的是服务端对op的文档化描述强调add、remove、replace、copy 是合法值但并非所有操作对每个资源都受支持对资源应用不支持的操作会返回错误。因此在实际使用时应针对目标字段选择合理的操作——例如对name、description这类单值属性replace是最直接、最安全的语义。JSON Pointer 路径的转义规则path采用 JSON Pointer 语法定位属性。服务模型的PatchOperation.path文档给出了关键规则若目标属性值为普通对象如{name: value}则该属性的路径写作/name若属性值是嵌套 JSON 对象例如{name: {child/name: child-value}}那么child/name属性的路径需写作/name/child~1name——路径中出现的任何斜杠/都必须用~1转义每个操作只能关联一个path。这一规则在你后续更新更复杂的字段如嵌套的endpointConfiguration、policy等时尤为关键。更新前准备查询 API 标识与当前状态在修改之前通常需要确认目标 API 的 ID 与当前属性值。推荐组合使用仓库中配套的示例命令查看当前 REST API 列表aws apigateway get-rest-apis查看单个 REST API 详情示例见 get-rest-api.rstaws apigateway get-rest-api --rest-api-id 1234123412输出示例{ name: myAPI, id: o1y243m4f5, createdDate: 1453416433 }如果目标 API 尚不存在可以参考 create-rest-api.rst 先创建aws apigateway create-rest-api --name My First API --description This is my first API可更新的属性全景RestApi资源结构update-rest-api返回的RestApi结构完整列出了 REST API 的全部属性这些属性中的可更新字段正是--patch-operations中path的合法候选值。根据 service-2.json 中RestApishape 的定义主要成员包括属性类型说明idStringAPI 标识符在你的所有 API 中全局唯一只读nameStringAPI 名称本示例修改对象descriptionStringAPI 描述本示例修改对象versionStringAPI 版本标识符binaryMediaTypesListOfStringAPI 支持的二进制媒体类型列表默认仅支持 UTF-8 文本载荷minimumCompressionSizeNullableInteger启用压缩的阈值0 ~ 10485760 字节即 10M设为 null 可禁用压缩为 0 表示任意载荷大小都压缩apiKeySourceApiKeySourceTypeAPI Key 来源HEADER从X-API-Key头读取或AUTHORIZERendpointConfigurationEndpointConfiguration端点类型与 IP 地址类型配置policyString作用于整个 RestApi 的字符串化 JSON 资源策略tagsMapOfStringToString资源标签集合disableExecuteApiEndpointBoolean是否禁止客户端通过默认execute-api端点调用 APIsecurityPolicySecurityPolicyTLS 版本与密码套件策略例如若要同时开启 API 的响应压缩可一次传入两个补丁操作aws apigateway update-rest-api \ --rest-api-id 1234123412 \ --patch-operations \ opreplace,path/minimumCompressionSize,value1024 \ opreplace,path/name,valueNew Name注意若更新的是 JSON 值属性如policy、tags根据服务模型对value的说明在 Linux shell 中需用一对单引号包裹 JSON 对象例如value{a: ...}。源码级佐证从 CLI 参数到 HTTP PATCH 的完整链路该命令的完整调用链如下每一环都能在当前仓库中找到实现证据CLI 参数解析AWS CLI 根据 service-2.json 中UpdateRestApiRequest的定义生成参数。该结构声明restApiId为必填项且location为uri、locationName为restapi_id——这正是它会被填充进请求路径/restapis/{restapi_id}的原因。请求序列化patchOperations作为普通请求体成员被序列化进 PATCH 请求体Op枚举与PatchOperation结构共同约束了每个补丁项的字段合法性。HTTP 请求发送awscli包中的命令分发机制见 clidriver.py将上述参数组装为对 API Gateway 服务端点的PATCH /restapis/{restapi_id}请求。响应解析服务端返回更新后的RestApi结构CLI 按RestApishape 解析并输出为 JSON。值得强调的是UpdateRestApi操作可能返回的错误类型在服务模型中已明确声明包括BadRequestException参数/补丁操作不合法、NotFoundExceptionAPI ID 不存在、ConflictException状态冲突、LimitExceededException超出限制、UnauthorizedException权限不足与TooManyRequestsException请求限流。排错时可按此清单逐一核对。验证与最佳实践验证更新结果执行update-rest-api后再次调用get-rest-api确认属性已生效aws apigateway get-rest-api --rest-api-id 1234123412输出中应能看到name与description已更新为新值。实践建议先查询后修改用get-rest-api/get-rest-apis确认 API ID 与当前值避免误改对象最小化补丁仅声明需要变更的字段replace单值属性时无需携带其他字段注意转义路径含/时使用~1值为 JSON 对象时用单引号包裹错误定位收到NotFoundException优先核对--rest-api-id收到BadRequestException优先检查op是否受目标资源支持、path是否书写正确组合操作多个属性可放在一次请求中批量更新减少 API 调用次数。小结aws apigateway update-rest-api以 JSON Patch 风格提供了一种轻量、精准的 REST API 属性更新方式。官方示例中的两个命令修改name、修改description揭示了其核心用法--rest-api-id定位资源、--patch-operations声明操作 JSON Pointer 路径 新值。结合仓库中的 update-rest-api.rst、service-2.json 与配套示例 create-rest-api.rst、get-rest-api.rst你可以在完整理解底层 PATCH 语义的基础上安全高效地管理 API Gateway 中的 REST API 资源。【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考