ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

使用 AWS CLI 查询 API Gateway Stage:get-stage 命令完整实战与字段深度解析

使用 AWS CLI 查询 API Gateway Stage:get-stage 命令完整实战与字段深度解析 使用 AWS CLI 查询 API Gateway Stageget-stage 命令完整实战与字段深度解析【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli本指南以 AWS CLI 官方示例文档 awscli/examples/apigateway/get-stage.rst 为骨架围绕aws apigateway get-stage命令展开先给出可直接复制的命令与完整输出再基于仓库内的 API 模型 service-2.json 逐项解读返回的Stage对象与methodSettings字段最后串联创建、查看、更新、删除 Stage 的完整生命周期操作。读完本文你将掌握用 AWS CLI 查询任意 API 的某个 Stage 配置、理解每一行返回值的业务含义并能熟练使用update-stage做方法级配置调整。Stage 是什么REST API 的版本化部署入口在 API Gateway 的模型中一个 REST APIRestApi可以包含多个部署Deployment而Stage阶段是将某个 Deployment 发布为可被外部调用入口的逻辑概念。Stage 名称会成为调用 URL 中的第一段路径例如https://api-id.execute-api.region.amazonaws.com/dev中的dev。从仓库的 API 模型 service-2.json 中可以看到Stage对象的官方定义它表示一个已部署 RestApi 版本的唯一标识可供用户调用是 API 从开发到生产的发布单元。典型用法是同一个 REST API 下维护dev、test、prod等多个 Stage分别指向不同 Deployment从而实现环境隔离与灰度发布。与 Stage 相关的操作在模型中都定义在同一资源路径上命令HTTP 方法请求路径get-stageGET/restapis/{restapi_id}/stages/{stage_name}create-stagePOST/restapis/{restapi_id}/stagesupdate-stagePATCH/restapis/{restapi_id}/stages/{stage_name}delete-stageDELETE/restapis/{restapi_id}/stages/{stage_name}get-stagesGET/restapis/{restapi_id}/stages其中get-stage对应GetStage操作返回类型为Stage该操作在模型中标记restApiId与stageName两个必填参数且都以 URI 路径参数location: uri方式传递。get-stage 命令实操查询某个 API 的指定 Stage命令极简只需两个必填参数aws apigateway get-stage --rest-api-id 1234123412 --stage-name dev--rest-api-idREST API 的字符串标识符即创建 API 后分配的那个 ID示例中的1234123412为占位符实际使用时替换为你自己的 API ID。--stage-name要查询的 Stage 名称必须与创建时一致。该命令对应的服务端操作是GET /restapis/{restapi_id}/stages/{stage_name}返回整个 Stage 的完整配置对象。完整输出逐字段解读执行上面的命令AWS CLI 会返回类似如下的 JSON取自 get-stage.rst 的官方示例输出{ stageName: dev, cacheClusterSize: 0.5, cacheClusterEnabled: false, cacheClusterStatus: NOT_AVAILABLE, deploymentId: rbh1fj, lastUpdatedDate: 1466802961, createdDate: 1460682074, methodSettings: { */*: { cacheTtlInSeconds: 300, loggingLevel: INFO, dataTraceEnabled: false, metricsEnabled: true, unauthorizedCacheControlHeaderStrategy: SUCCEED_WITH_RESPONSE_HEADER, throttlingRateLimit: 500.0, cacheDataEncrypted: false, cachingEnabled: false, throttlingBurstLimit: 1000, requireAuthorizationForCacheControl: true }, ~1resource/GET: { cacheTtlInSeconds: 300, loggingLevel: INFO, dataTraceEnabled: false, metricsEnabled: true, unauthorizedCacheControlHeaderStrategy: SUCCEED_WITH_RESPONSE_HEADER, throttlingRateLimit: 500.0, cacheDataEncrypted: false, cachingEnabled: false, throttlingBurstLimit: 1000, requireAuthorizationForCacheControl: true } } }对照模型文件中的Stageshape返回对象的每个成员含义如下字段类型说明stageNameStringStage 名称即调用 URI 的第一段路径只能包含字母数字、连字符和下划线最长 128 字符deploymentIdString该 Stage 当前指向的 Deployment 标识符决定实际生效的 API 定义descriptionStringStage 的描述信息未设置时不返回cacheClusterEnabledBooleanStage 级缓存集群是否启用注意仅启用此开关还不够方法级缓存还需将cachingEnabled置为truecacheClusterSizeString枚举缓存容量GB可选0.5、1.6、6.1、13.5、28.4、58.2、118、237cacheClusterStatusString缓存集群状态例如NOT_AVAILABLE未启用或AVAILABLE就绪methodSettingsMap方法级配置映射键为方法路径值为MethodSetting对象详见下文variablesMapStage 变量可在集成请求中通过stageVariables.xxx引用tracingEnabledBoolean是否启用 X-Ray 主动追踪webAclArnString与该 Stage 关联的 WAF Web ACL 的 ARNaccessLogSettings结构体访问日志设置目标 ARN 与日志格式模板canarySettings结构体金丝雀Canary发布设置用于流量灰度createdDate/lastUpdatedDateTimestamp创建与最后更新时间历史示例返回 Unix 秒级时间戳tagsMap资源标签集合clientCertificateIdStringStage 关联的客户端证书标识使用客户端证书认证时出现时间戳说明示例输出中createdDate: 1460682074、lastUpdatedDate: 1466802961是 Unix 秒级时间戳分别对应 2016-04-15 与 2016-06-24 左右。这是早期 API Gateway 返回的格式较新版本如 update-stage.rst 示例所示会返回 ISO 8601 字符串如2022-07-18T10:11:18-07:00。写脚本解析时建议对两种格式做兼容处理。methodSettings方法级配置的解析重点methodSettings是get-stage输出中最值得深入理解的部分它以Map形式返回该 Stage 上每个 HTTP 方法的具体行为配置。模型文档明确指出Map 的键有两种形式{resource_path}/{http_method}针对单个方法的覆盖配置例如~1resource/GET*/*针对 Stage 下所有方法的默认配置。示例输出中恰好同时出现了这两种键*/*是全局默认设置~1resource/GET则是对名为resource的子资源的GET方法的单独覆盖。键中的~1是什么~1是 JSON Pointer 转义语法在 JSON Pointer 中/需要转义为~1。因此输出里~1resource/GET实际表示路径/resource/GET。同理在 get-stages.rst 的输出中可以看到~1resource~1subresource/POST它代表/resource/subresource路径上的POST方法。使用update-stage构造 patch 路径时同样遵循这一转义规则下文示例中的path/~1resourceName/GET/logging/dataTrace即对应/resourceName/GET。MethodSetting 字段详解结合 service-2.json 中MethodSettingshape 的定义每个方法设置包含以下字段字段类型取值范围 / 说明metricsEnabledBoolean是否为该方法启用 CloudWatch 指标loggingLevelString日志级别OFF、ERROR、INFOERROR只写错误级日志INFO包含错误及额外的信息事件dataTraceEnabledBoolean是否记录完整的请求/响应数据到 CloudWatch Logs。调试很有用但可能记录敏感数据官方模型文档明确建议生产 API 不要开启throttlingBurstLimitInteger突发burst限流阈值控制瞬间并发上限throttlingRateLimitDouble每秒稳定速率限流阈值cachingEnabledBoolean是否缓存并复用响应前提是 Stage 级缓存集群cacheClusterEnabled已启用cacheTtlInSecondsInteger缓存响应的 TTL秒越大缓存时间越长cacheDataEncryptedBoolean缓存响应是否加密requireAuthorizationForCacheControlBoolean缓存失效invalidation请求是否需要鉴权unauthorizedCacheControlHeaderStrategyString未授权缓存失效请求的处理策略示例中为SUCCEED_WITH_RESPONSE_HEADER在示例输出中*/*与~1resource/GET两组配置几乎一致cachingEnabled均为false、throttlingRateLimit均为500.0、throttlingBurstLimit均为1000、cacheTtlInSeconds为300、loggingLevel为INFO、metricsEnabled为true说明该 API 的resource的GET方法沿用了全局默认配置未做单独覆盖。从查询到管理Stage 生命周期实战串联get-stage只是读取操作配合其他命令才能完整管理 Stage。以下示例均来自仓库的 awscli/examples/apigateway 目录可直接组合使用。1. 创建 Stagecreate-stage基础创建为已有 Deployment 建立名为dev的阶段。aws apigateway create-stage \ --rest-api-id 1234123412 \ --stage-name dev \ --description Development stage \ --deployment-id a1b2c3创建时指定 Stage 变量可在集成中通过stageVariables.key引用aws apigateway create-stage \ --rest-api-id 1234123412 \ --stage-name dev \ --description Development stage \ --deployment-id a1b2c3 \ --variables keyvalue,otherKeyotherValue根据模型定义create-stage的必填参数为restApiId、stageName、deploymentId还可选传cacheClusterEnabled、cacheClusterSize、canarySettings、tracingEnabled、tags等。Stage 名称命名约束与查询一致只能含字母数字、连字符、下划线最长 128 字符。2. 查看全部 Stageget-stages不带--stage-name列出该 REST API 下所有 Stageaws apigateway get-stages --rest-api-id 1234123412输出为{ item: [ Stage, ... ] }数组每个元素结构与get-stage返回的单对象相同可用于快速盘点各环境的部署状态与缓存配置。模型还支持可选参数--deployment-id用于过滤属于特定 Deployment 的 Stage。3. 更新 Stageupdate-stageupdate-stage基于 PATCH 语义通过--patch-operations对配置做定点修改。下面两个官方示例分别演示了方法级与全局级修改。示例一关闭单个资源方法的完整请求/响应日志aws apigateway update-stage \ --rest-api-id 1234123412 \ --stage-name dev \ --patch-operations opreplace,path/~1resourceName/GET/logging/dataTrace,valuefalse注意 patch 路径中的~1转义/~1resourceName/GET/logging/dataTrace实际指向/resourceName/GET的dataTrace设置。返回结果中methodSettings只包含~1resourceName/GET这一个键且dataTraceEnabled变为false。示例二打开所有方法的数据追踪日志aws apigateway update-stage \ --rest-api-id 1234123412 \ --stage-name dev \ --patch-operations opreplace,path/*/*/logging/dataTrace,valuetrue此处 patch 路径使用*/*通配符作用于 Stage 下所有资源的所有方法。返回结果中methodSettings出现*/*键dataTraceEnabled变为true。两种写法与get-stage输出中methodSettings的键格式完全对应可用于验证更新是否生效。4. 删除 Stagedelete-stageaws apigateway delete-stage --rest-api-id 1234123412 --stage-name dev模型显示delete-stageDeleteStage无返回体成功后 Stage 即被移除对应调用 URL 停止服务。删除前建议先用get-stage确认目标 Stage 及关联的 Deployment避免误删正在提供服务的环境。源码视角CLI 参数如何绑定到请求理解 CLI 命令与底层请求的映射有助于排查参数问题。在 service-2.json 中GetStageRequestshape 定义了restApiId与stageName两个必填成员且都带有location: uri表明二者是URI 路径参数而非请求体或查询串参数locationName: restapi_id/locationName: stage_name指定了路径模板中的占位符名称。结合GetStage操作声明的requestUri: /restapis/{restapi_id}/stages/{stage_name}可以看到aws apigateway get-stage --rest-api-id 1234123412 --stage-name dev最终构造的请求就是GET /restapis/1234123412/stages/dev。AWS CLI 的 apigateway 命令集由该模型文件驱动CLI 据此生成参数名、必填校验、参数校验与输出解析因此文档中的参数语义与模型完全一致任何--rest-api-id或--stage-name的缺失都会在发送请求前被 CLI 层直接拦截。如果你希望绕过 CLI 直接观察原始请求也可以使用等价操作GetStage、GetStages、CreateStage、UpdateStage、DeleteStage均定义在同一个模型文件中任意语言 SDK 与aws apigateway命令共用同一套参数与返回结构。常见问题与使用建议返回cacheClusterStatus: NOT_AVAILABLE是否异常不一定。示例中cacheClusterEnabled为false此时状态显示NOT_AVAILABLE属正常只有cacheClusterEnabled为true时状态才会走向AVAILABLE。见 get-stages.rst 输出中cacheClusterEnabled: true与cacheClusterStatus: AVAILABLE的对应关系。*/*与具体路径配置并存时以谁为准*/*是 Stage 级默认值{resource}/{method}是单个方法覆盖值查询时两者都会返回便于对比实际生效配置。修改单个方法后建议重新执行get-stage确认覆盖项。生产环境谨慎开启dataTraceEnabled模型文档明确提示其可能记录敏感数据不建议在生产 API 上启用排查问题时用update-stage临时打开结束后再关闭。缓存相关字段联动方法级cachingEnabled依赖 Stage 级cacheClusterEnabled二者需配合开启TTL 建议结合业务缓存命中率调整示例默认 300 秒。输出格式差异同一字段在不同时期可能返回 Unix 时间戳或 ISO 8601 字符串脚本解析时做双格式兼容更稳妥。掌握get-stage及其配套命令你就能以读取-修改-验证的闭环管理 API Gateway 的每个发布阶段。所有命令与输出均可在仓库的 awscli/examples/apigateway 目录下找到对应官方示例文件模型细节则以 service-2.json 为权威依据。【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表