使用 AWS CLI 的 `apigateway get-stages` 命令查看 API Gateway 部署阶段
2026/9/14 19:08:10 网站建设 项目流程

使用 AWS CLI 的apigateway get-stages命令查看 API Gateway 部署阶段

【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli

导读

aws apigateway get-stages是 AWS CLI 中用于一次性获取某个 REST API 下全部 Stage(部署阶段)信息的命令,在排查 API 发布环境、核对缓存集群状态或审计各阶段方法级配置时非常实用。本指南以官方示例 get-stages.rst 为骨架,结合仓库中 API Gateway 服务模型(service-2.json)对返回字段逐一拆解,帮助你读懂输出并掌握与get-stage命令配合使用的完整查询思路。

命令用法

get-stages属于apigateway服务下的查询类操作,作用是“获取一个或多个 Stage 资源的信息”。官方示例中的最小调用方式为:

aws apigateway get-stages --rest-api-id 1234123412

其中--rest-api-id是 REST API 的字符串标识符,即创建 API 时由 API Gateway 分配的资源 ID。根据服务模型中GetStagesRequest的定义(见 service-2.json),该命令还支持第二个可选参数:

参数类型必填说明
--rest-api-idString关联 REST API 的字符串标识符
--deployment-idString部署标识符,用于过滤出指向指定 Deployment 的阶段

因此,若要精确查看某个部署版本关联了哪些阶段,可以这样写:

aws apigateway get-stages --rest-api-id 1234123412 --deployment-id 123h64

与查询单个阶段的get-stage命令不同(后者需要同时提供--rest-api-id--stage-name,见 get-stage.rst),get-stages只需一个 API ID 即可列出全部阶段,适合先“总览”、再“精查”的排查路径。

输出结构解读

运行上述命令后,返回的 JSON 结构如下(原文取自 get-stages.rst):

{ "item": [ { "stageName": "dev", "cacheClusterSize": "0.5", "cacheClusterEnabled": true, "cacheClusterStatus": "AVAILABLE", "deploymentId": "123h64", "lastUpdatedDate": 1456185138, "createdDate": 1453589092, "methodSettings": { "~1resource~1subresource/POST": { "cacheTtlInSeconds": 300, "loggingLevel": "INFO", "dataTraceEnabled": true, "metricsEnabled": true, "throttlingRateLimit": 500.0, "cacheDataEncrypted": false, "cachingEnabled": false, "throttlingBurstLimit": 1000 } } } ] }

从服务模型看,get-stages的输出形状为Stages,主体是一个item数组(ListOfStage),数组中每个元素都是一个Stage结构。下表按Stage形状的成员定义(见 service-2.json)梳理了各字段含义:

字段类型说明
stageNameString阶段名称,是调用 API 时 URI 中的第一个路径段
deploymentIdString该阶段当前指向的 Deployment 标识符
clientCertificateIdString该阶段绑定的客户端证书标识符
descriptionString阶段描述
cacheClusterEnabledBoolean是否启用缓存集群;启用后还需在方法级把cachingEnabled置为true才能真正缓存响应
cacheClusterSizeCacheClusterSize缓存集群容量(GB)
cacheClusterStatusCacheClusterStatus缓存集群状态
methodSettingsMap/{resource}/{method}为键的方法级设置映射
variablesMap阶段变量,名称允许字母数字与下划线
documentationVersionString关联的 API 文档版本
accessLogSettingsAccessLogSettings访问日志设置(formatdestinationArn
canarySettingsCanarySettings金丝雀部署设置(percentTrafficdeploymentIdstageVariableOverridesuseStageCache
tracingEnabledBoolean是否启用 X-Ray 主动追踪
webAclArnString关联的 Web ACL 的 ARN
tagsMap资源标签集合
createdDateTimestamp阶段创建时间戳
lastUpdatedDateTimestamp阶段最后更新时间戳

缓存集群状态枚举

cacheClusterStatus字段由服务模型中的CacheClusterStatus枚举约束,取值仅限以下五种:

CREATE_IN_PROGRESS、AVAILABLE、DELETE_IN_PROGRESS、NOT_AVAILABLE、FLUSH_IN_PROGRESS

其中AVAILABLE表示缓存集群可用;示例输出中显示为AVAILABLE即说明该阶段的缓存集群已就绪。

缓存集群容量枚举

cacheClusterSize同样有固定取值集合,单位为 GB:

0.5、1.6、6.1、13.5、28.4、58.2、118、237

示例中的"0.5"即选择了最小的 0.5 GB 缓存容量。

深入 methodSettings:方法级配置解读

示例输出的methodSettings中,键为~1resource~1subresource/POST。这里的~1是 API Gateway 对/的转义编码(~1表示斜杠、~0表示波浪号),因此该键实际对应/{resource}/{subresource}/POST,即某个子资源的 POST 方法。服务模型将methodSettings定义为MapOfMethodSettings,其值为MethodSetting结构,各字段含义如下(见 service-2.json):

字段类型说明
metricsEnabledBoolean是否启用 CloudWatch 指标
loggingLevelString日志级别,合法值为OFFERRORINFO,影响写入 CloudWatch Logs 的日志条目
dataTraceEnabledBoolean是否启用数据跟踪日志,可用于排查问题,但可能记录大量数据
throttlingBurstLimitInteger限流突发(burst)上限
throttlingRateLimitDouble限流速率上限
cachingEnabledBoolean是否缓存响应;前提是该阶段已启用缓存集群
cacheTtlInSecondsInteger缓存响应 TTL(秒),越大缓存越久
cacheDataEncryptedBoolean缓存的响应是否加密
requireAuthorizationForCacheControlBoolean缓存失效请求是否需要授权
unauthorizedCacheControlHeaderStrategyString未授权缓存控制请求的处理策略,枚举值为FAIL_WITH_403SUCCEED_WITH_RESPONSE_HEADERSUCCEED_WITHOUT_RESPONSE_HEADER

对照示例:loggingLevel: "INFO"意味着该方法的 INFO 级日志会进入 CloudWatch Logs;throttlingRateLimit: 500.0throttlingBurstLimit: 1000表示每秒最多 500 次请求、突发上限 1000 次;cachingEnabled: false表示即使阶段缓存集群已启用,该方法本身也未开启响应缓存。可见阶段级缓存与方法级缓存是两个独立开关,排查缓存不生效时需同时检查这两处。

与 get-stage 的配合使用

get-stage.rst 提供了单阶段查询的完整示例:

aws apigateway get-stage --rest-api-id 1234123412 --stage-name dev

其输出结构与get-stages中的单个元素一致,但methodSettings会展开更多方法路径(如*/*通配设置与具体路径设置并存),且可能包含unauthorizedCacheControlHeaderStrategyrequireAuthorizationForCacheControl等字段。两者的典型配合流程是:先用get-stages确认某个 API 下存在哪些阶段及各自指向的部署,再用get-stage --stage-name <name>深入查看单个阶段的完整配置。

命令的底层实现依据

本文涉及的参数与返回字段均可在仓库服务模型中验证:

  • 操作定义:GetStages的输入输出形状位于 service-2.json,其中GetStagesRequest声明了restApiId与可选deploymentId
  • 返回结构:Stages/ListOfStage/Stage形状定义了item数组与各阶段字段;
  • 枚举约束:CacheClusterStatusCacheClusterSizeUnauthorizedCacheControlHeaderStrategy均在该文件中以enum形式给出;
  • 说明文档:官方示例存放在 get-stages.rst,可作为命令输出格式的直接参照。

值得注意的一点:从 paginators-1.json 看,GetStages并未被声明为可分页操作(分页操作清单中包含GetRestApisGetDeploymentsGetResources等,但不含GetStages),因此该命令返回的是 API 下阶段的完整集合,无需处理分页标记。

小结

aws apigateway get-stages是一个“一键总览”型命令:通过--rest-api-id列出某 API 下的全部阶段,从阶段名、部署版本、缓存集群状态到方法级限流与缓存配置一应俱全。结合get-stage做单点深入,配合本指南对StageMethodSetting各字段的解读,即可快速定位部署与配置问题。

【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询