news 2026/9/14 11:23:53

使用 AWS CLI 的 apigatewayv2 get-authorizer 命令查询 HTTP API 授权器配置

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用 AWS CLI 的 apigatewayv2 get-authorizer 命令查询 HTTP API 授权器配置

使用 AWS CLI 的 apigatewayv2 get-authorizer 命令查询 HTTP API 授权器配置

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

导读

aws apigatewayv2 get-authorizer是 AWS CLI 中用于查询 API Gateway v2(HTTP API / WebSocket API)单个授权器(Authorizer)详细配置的命令。本文以 get-authorizer.rst 官方示例文档为骨架,完整演示命令的参数用法、输出字段含义,并对照本仓库的 service-2.json 服务模型,深入解析请求参数、响应结构、授权器类型(JWT / REQUEST)以及get-authorizers分页查询等配套能力。读完本文,你将能够熟练使用 CLI 查看 API 上任意授权器的完整配置,并理解底层 REST 调用与各字段的校验语义。

一、命令概览与适用场景

在 API Gateway v2 中,授权器(Authorizer)决定 API 请求在到达后端集成之前如何被鉴权。get-authorizer命令用于按 ID 获取某个 API 下单个授权器的当前配置快照,典型使用场景包括:

  • 排查线上 API 的 JWT 鉴权配置是否与预期一致(如签发者 Issuer、受众 Audience 是否匹配);
  • 在自动化脚本中读取授权器配置,与配置管理基线做差异比对;
  • 在修改授权器(update-authorizer)前后核对配置变更结果。

该命令的 API 语义在仓库服务模型中定义如下(service-2.json):

"GetAuthorizer": { "name": "GetAuthorizer", "http": { "method": "GET", "requestUri": "/v2/apis/{apiId}/authorizers/{authorizerId}", "responseCode": 200 }, ... "documentation": "<p>Gets an Authorizer.</p>" }

也就是说,CLI 命令底层是对GET /v2/apis/{apiId}/authorizers/{authorizerId}的调用,两个路径参数即命令的两个必填参数。

二、命令语法与参数详解

官方示例(get-authorizer.rst)给出的完整命令如下:

aws apigatewayv2 get-authorizer \ --api-id a1b2c3d4 \ --authorizer-id a1b2c3

该命令共两个必填参数,其定义可在 service-2.json 的GetAuthorizerRequest结构中查到:

参数CLI 选项说明位置必填
ApiId--api-idAPI 标识符(创建 API 后返回的 ID)URI 路径参数
AuthorizerId--authorizer-id授权器标识符(创建授权器后返回的 ID)URI 路径参数

从模型可以看到,两者在请求结构中都标记为"required",且location: "uri",因此缺少任意一个参数 CLI 都会直接报参数校验错误,不会发起网络请求。

--api-id可通过aws apigatewayv2 get-apis获取;--authorizer-id可通过 get-authorizers.rst 中演示的aws apigatewayv2 get-authorizers --api-id a1b2c3d4列出全部授权器后取得。示例中的a1b2c3d4a1b2c3为文档使用的占位 ID,实际使用时请替换为真实值。

三、输出字段深度解读

官方示例的输出如下:

{ "AuthorizerId": "a1b2c3", "AuthorizerType": "JWT", "IdentitySource": [ "$request.header.Authorization" ], "JwtConfiguration": { "Audience": [ "123456abc" ], "Issuer": "https://cognito-idp.us-west-2.amazonaws.com/us-west-2_abc123" }, "Name": "my-jwt-authorizer" }

GetAuthorizerResponse的完整成员定义位于 service-2.json,其中所有可选字段都会在存在时返回,下表逐一说明其语义与约束:

字段含义约束 / 适用类型
AuthorizerId授权器唯一标识只读,由 API Gateway 生成
AuthorizerType授权器类型枚举值仅REQUESTJWT(见 service-2.json),JWT仅支持 HTTP API
Name授权器名称长度 1–128 字符
IdentitySource授权身份来源表达式列表对 JWT:单条表达式,指定从请求何处提取 Token,目前仅支持基于 Header 和 Query 参数的表达式,如$request.header.Authorization(见 IdentitySourceList)
JwtConfiguration.AudienceJWT 受众列表合法的 JWT 其aud声明必须匹配列表中至少一项(RFC 7519 §4.1.3),仅 HTTP API 支持
JwtConfiguration.Issuer令牌签发者基域例如 Amazon Cognito 用户池格式https://cognito-idp.<region>.amazonaws.com/<userPoolId>,JWT 类型必填(见 JWTConfiguration)
AuthorizerUri授权器 URIREQUEST 类型(Lambda 授权器)返回,形如arn:aws:apigateway:<region>:lambda:path/2015-03-31/functions/<FunctionARN>/invocations,仅 REQUEST 类型支持
AuthorizerCredentialsArn调用授权器所用的 IAM 角色 ARN仅 REQUEST 类型支持;不指定时使用基于资源的权限
AuthorizerPayloadFormatVersionLambda 授权器载荷格式版本取值1.02.0,仅 HTTP API Lambda 授权器
AuthorizerResultTtlInSeconds授权结果缓存 TTL0–3600 秒;为 0 表示禁用缓存,仅 HTTP API Lambda 授权器
EnableSimpleResponses是否启用简单响应格式启用后 Lambda 授权器可返回布尔值替代 IAM 策略,仅 HTTP API
IdentityValidationExpression身份校验表达式不适用于 REQUEST 授权器

值得注意:上例输出中 JWT 授权器返回了AuthorizerIdAuthorizerTypeIdentitySourceJwtConfigurationName五个字段;如果查询的是 REQUEST(Lambda)授权器,输出中还会出现AuthorizerUriAuthorizerPayloadFormatVersionAuthorizerResultTtlInSeconds等字段——CLI 直接返回服务端完整配置,方便在脚本中用--query提取字段做自动化判断,例如:

aws apigatewayv2 get-authorizer \ --api-id a1b2c3d4 \ --authorizer-id a1b2c3 \ --query "JwtConfiguration.Issuer" \ --output text

四、配套命令:授权器的完整生命周期

get-authorizer是授权器查询链中的一环,配合仓库中同目录的示例文档可形成完整的操作闭环:

4.1 创建 JWT 授权器(create-authorizer)

参考 create-authorizer.rst,创建示例中查询到的同名授权器:

aws apigatewayv2 create-authorizer \ --name my-jwt-authorizer \ --api-id a1b2c3d4 \ --authorizer-type JWT \ --identity-source '$request.header.Authorization' \ --jwt-configuration Audience=123456abc,Issuer=https://cognito-idp.us-west-2.amazonaws.com/us-west-2_abc123

注意--identity-source中的$request.header.Authorization需用单引号包裹,防止 Shell 把$request当变量展开;--jwt-configuration使用 CLI 的逗号分隔键值对语法。创建成功后会返回AuthorizerId,该 ID 即后续get-authorizer/update-authorizer/delete-authorizer的参数。

4.2 列出全部授权器(get-authorizers)

参考 get-authorizers.rst:

aws apigatewayv2 get-authorizers \ --api-id a1b2c3d4

输出为Items数组,包含该 API 下每个授权器的完整配置(示例中返回了两个 JWT 授权器)。该操作支持分页:请求结构(GetAuthorizersRequest)包含MaxResultsNextToken两个查询参数,响应(GetAuthorizersResponse)在Items之外返回NextToken用于取下一页。仓库的 paginators-1.json 中为GetAuthorizers配置了分页映射:

"GetAuthorizers": { "input_token": "NextToken", "limit_key": "MaxResults", "output_token": "NextToken", "result_key": "Items" }

这意味着 CLI 的get-authorizers默认支持分页参数--max-items--page-size--starting-token,由 botocore 的 Paginator 自动逐页拉取,无需手写翻页逻辑。

4.3 更新授权器(update-authorizer)

参考 update-authorizer.rst,修改已有授权器的身份来源:

aws apigatewayv2 update-authorizer \ --api-id a1b2c3d4 \ --authorizer-id a1b2c3 \ --identity-source '$request.header.Authorization'

4.4 删除授权器(delete-authorizer)

参考 delete-authorizer.rst,删除授权器(命令成功时不产生输出,可通过退出码或--no-cli-pager观察结果):

aws apigatewayv2 delete-authorizer \ --api-id a1b2c3d4 \ --authorizer-id a1b2c3

五、错误处理与注意事项

GetAuthorizer操作在 service-2.json 中声明了两类错误,实际使用get-authorizer时应重点关注:

  • NotFoundException(404):api-idauthorizer-id不存在,或该授权器不属于所指定的 API。排查时可先用get-authorizers确认 ID 拼写与所属 API。
  • TooManyRequestsException(429):单位时间内请求数超过账户/API 限额,CLI 会按 botocore 的默认重试策略自动退避重试,持续触发时需降低调用频率。

其他注意事项:

  • 命令的--api-id--authorizer-id均为必填且无默认值;--authorizer-id属于 URI 路径参数,即使授权器被删除后再次查询,也会因资源不存在而返回NotFoundException
  • 示例中的 ID、Audience、Issuer 均为文档占位值,直接复制运行会得到NotFoundException,请替换为实际资源。
  • 若需在脚本中无交互使用,可配合--output json(默认)或--output text解析字段,避免人工阅读。

六、小结

本文以 get-authorizer.rst 为核心,完整覆盖了aws apigatewayv2 get-authorizer的参数用法、输出字段语义、配套的创建/列表/更新/删除命令,并从 service-2.json 与 paginators-1.json 中还原了底层GET /v2/apis/{apiId}/authorizers/{authorizerId}调用、请求/响应结构约束以及get-authorizers的分页能力。掌握这些内容后,你可以把授权器配置查询直接融入 CI/CD 审计与自动化巡检流程,快速定位 JWT 签发者、受众不匹配等常见鉴权问题。

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/14 11:22:26

STM32串口图像传输:自定义协议从封帧到上位机解析实践

简介&#xff1a;面向STM32嵌入式开发与上位机通信学习者的完整工程包&#xff0c;解决如何通过自定义串口协议将STM32采集的图像数据实时传输至Windows上位机显示的问题。包内包含Visual Studio 2019与Keil 5双平台工程源码&#xff0c;涵盖C# WinForm上位机、STM32下位机C程序…

作者头像 李华
网站建设 2026/9/14 11:19:06

Spring Boot旅游指南系统实战:从零搭建可部署Web应用

简介&#xff1a;这是一套基于SpringBoot开发的旅游出行指南系统完整源码&#xff0c;面向Java后端与全栈初学者&#xff0c;适用于课程设计、毕业设计及旅游类Web应用快速原型开发。系统采用B/S架构&#xff0c;前后端分离设计&#xff0c;涵盖微信小程序&#xff08;UniApp/V…

作者头像 李华
网站建设 2026/9/14 11:18:36

如何用 Kortix 的 cron 触发器让 agent 按定时任务自动运行

如何用 Kortix 的 cron 触发器让 agent 按定时任务自动运行 【免费下载链接】agentpress The open-source AI Management System 项目地址: https://gitcode.com/GitHub_Trending/ag/agentpress Kortix 的 trigger&#xff08;触发器&#xff09;可以启动一个没有人参与…

作者头像 李华
网站建设 2026/9/14 11:16:41

B2B网站建设避坑:从被黑挂马到合理建站报价

B2B网站建设避坑:从被黑挂马到合理建站报价 网站突然打不开,或者打开全是乱七八糟的弹窗广告,后台密码改了也没用,这种网站被黑挂马的情况,是不是让你抓狂又不知道从哪下手?很多做B2B业务的朋友,花了几万块甚至更多,找到的建站公司说得天花乱坠,结果上线没两个月就中招了,这时候再问对方,要么推卸责任说是…

作者头像 李华
网站建设 2026/9/14 11:16:29

拒绝模板丑站,B2B网站建设一文搞懂避坑指南

拒绝模板丑站,B2B网站建设一文搞懂避坑指南 还在用那种花里胡哨却毫无转化率的模板站吗?很多老板花了大几万,结果客户打开页面只看到一堆无关紧要的装饰,找不到报价,也留不下电话。这就是典型的“模板网站太丑不够用”,不仅丢单,还砸了公司招牌。 今天我不讲虚的,直接拆解一个真实的B2B项目。我们将通过…

作者头像 李华