尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

使用 AWS CLI 的 apigatewayv2 get-authorizers 命令检索 API 网关 V2 的授权器列表

使用 AWS CLI 的 apigatewayv2 get-authorizers 命令检索 API 网关 V2 的授权器列表 使用 AWS CLI 的 apigatewayv2 get-authorizers 命令检索 API 网关 V2 的授权器列表【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli本篇指南聚焦于 AWS CLIaws-cli中apigatewayv2 get-authorizers命令的完整用法它用于列出指定 HTTP/WebSocket API 下所有已配置的授权器Authorizer涵盖 JWT 与 LambdaREQUEST两种类型。读完本文后你将掌握该命令的参数结构、输出字段语义、分页策略并能结合create-authorizer与get-authorizer形成创建—查询单个—列出全部的完整运维闭环。命令概览与适用场景在 API Gateway V2HTTP API 与 WebSocket API中授权器Authorizer是控制客户端能否访问 API 路由的安全组件。当需要审计某个 API 上配置了哪些 JWT 发行方、哪些 Lambda 授权函数、授权来源取自哪个请求头时get-authorizers是最直接的查询入口。该命令在仓库中的官方示例位于 awscli/examples/apigatewayv2/get-authorizers.rst对应的服务模型定义位于 awscli/botocore/data/apigatewayv2/2018-11-29/service-2.jsonGetAuthorizers操作。基础用法列出某个 API 的全部授权器get-authorizers只有一个必填参数--api-id即 API 标识符。示例如下aws apigatewayv2 get-authorizers \ --api-id a1b2c3d4命令执行后返回该 API 下所有授权器的列表典型输出如下{ Items: [ { 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 }, { AuthorizerId: a1b2c4, AuthorizerType: JWT, IdentitySource: [ $request.header.Authorization ], JwtConfiguration: { Audience: [ 6789abcde ], Issuer: https://cognito-idp.us-west-2.amazonaws.com/us-west-2_abc234 }, Name: new-jwt-authorizer } ] }从输出可以看出两个授权器均为 JWT 类型分别使用不同的 Cognito 用户池作为发行方Issuer并从Authorization请求头中提取 Token。请求参数详解根据服务模型中GetAuthorizersRequest的定义service-2.json该命令支持以下参数参数位置必填说明--api-idURI 路径是API 标识符用于定位所属的 API--max-resultsQuery 字符串否本次请求最多返回的元素数量--next-tokenQuery 字符串否分页游标用于获取下一批元素集合的最后一个元素上不适用注意--max-results与--next-token在服务模型中均为字符串类型__string它们与 API Gateway 返回的NextToken配合实现结果集分页。深入理解输出字段列表输出位于Items数组中每个元素对应一个授权器的完整定义字段结构由服务模型中的Authorizer结构体定义service-2.json。核心字段AuthorizerId授权器的唯一标识符。AuthorizerType授权器类型取值仅为REQUEST或JWT见 AuthorizerType 枚举定义。REQUEST表示基于传入请求参数调用 Lambda 函数的授权器JWT表示基于 JSON Web Token 的授权器仅适用于 HTTP API。Name授权器名称是Authorizer结构体中唯一必填的成员。IdentitySource授权来源的映射表达式列表。对于JWT类型通常为单个条目指定从入站请求何处提取 JWT目前仅支持基于请求头和查询参数的表达式例如$request.header.Authorization。对于REQUEST类型可包含一个或多个表达式支持请求头、查询字符串、阶段变量和上下文参数等。JWT 授权器的特有字段JwtConfigurationJWT 授权器的配置对象包含Audience与Issuer两个成员见 JWTConfiguration 结构体AudienceJWT 预期接收方列表。一个合法的 JWT 其aud声明必须与该列表中的至少一项匹配依据 RFC 7519。Issuer签发 JWT 的身份提供方基础域名例如 Amazon Cognito 用户池的格式为https://cognito-idp.{region}.amazonaws.com/{userPoolId}。LambdaREQUEST授权器的特有字段当授权器类型为REQUEST时输出中还会出现以下字段AuthorizerUri授权器的 URI。对于 Lambda 授权器其形式为arn:aws:apigateway:{region}:lambda:path/2015-03-31/functions/{FunctionARN}/invocations。AuthorizerCredentialsArnAPI Gateway 调用授权器时所需承担的 IAM 角色 ARN若使用基于资源的 Lambda 函数权限则可不指定。AuthorizerPayloadFormatVersionHTTP API Lambda 授权器的负载格式版本取值为1.0或2.0。AuthorizerResultTtlInSeconds授权结果缓存 TTL秒取值范围 0~3600为 0 时表示禁用缓存。EnableSimpleResponsesLambda 授权器是否以简单格式返回布尔值而非 IAM 策略响应。IdentityValidationExpression身份校验表达式对REQUEST类型不适用。上述字段在示例输出中未出现因为示例展示的是 JWT 类型当你的 API 配置了 Lambda 授权器时get-authorizers的返回结果会包含它们。分页处理大量授权器GetAuthorizers已声明为分页操作其分页配置定义在 awscli/botocore/data/apigatewayv2/2018-11-29/paginators-1.jsonGetAuthorizers: { input_token: NextToken, limit_key: MaxResults, output_token: NextToken, result_key: Items }这意味着请求参数中的NextToken作为输入分页游标响应中的NextToken作为输出游标MaxResults控制每页返回数量结果统一从Items键中提取。在 AWS CLI 中你可以使用--max-results限制单页大小并通过--next-token手动翻页更常见的做法是配合--no-paginate之外的默认自动分页行为——AWS CLI 会自动迭代所有页并汇总Items中的结果。手动分页的示例aws apigatewayv2 get-authorizers \ --api-id a1b2c3d4 \ --max-results 10 \ --next-token eyJ2ZXJzaW9uIjoxLCJlbmNyeXB0ZWREYXRhIjoi...与相关命令协同创建与单查get-authorizers列出的是集合若要查看单个授权器的详情可使用get-authorizer命令同时传入--api-id与--authorizer-id示例见 get-authorizer.rstaws apigatewayv2 get-authorizer \ --api-id a1b2c3d4 \ --authorizer-id a1b2c3与之对应的创建命令为create-authorizer。官方示例create-authorizer.rst展示了如何创建与本文示例输出完全对应的 JWT 授权器aws apigatewayv2 create-authorizer \ --name my-jwt-authorizer \ --api-id a1b2c3d4 \ --authorizer-type JWT \ --identity-source $request.header.Authorization \ --jwt-configuration Audience123456abc,Issuerhttps://cognito-idp.us-west-2.amazonaws.com/us-west-2_abc123注意此处--identity-source的取值包含$字符在 shell 中必须使用单引号包裹避免被变量展开。--jwt-configuration使用逗号分隔的KeyValue语法传递。这样一来完整的授权器生命周期管理链路为create-authorizer创建→get-authorizer查询单个返回完整AuthorizerId→get-authorizers列出全部、审计配置→delete-authorizer删除。错误处理与排查提示根据GetAuthorizers操作的错误定义service-2.json该命令可能返回以下异常NotFoundExceptionHTTP 404指定的--api-id不存在或不属于当前账号/区域。TooManyRequestsException请求频率超过 API 速率限制应降低调用频率或采用退避重试。BadRequestExceptionHTTP 400请求参数不合法。排查建议--api-id必须与 API 所属区域一致可通过aws apigatewayv2 get-apis确认正确的 API 标识符。若使用默认凭证但 API 位于其他区域需通过--region显式指定区域。当结果较多时优先依赖 AWS CLI 的自动分页避免手工维护NextToken。小结apigatewayv2 get-authorizers是 API Gateway V2 授权器运维中的高频只读操作。通过本文你可以使用--api-id列出指定 API 的全部授权器并读懂Items中各字段AuthorizerType、IdentitySource、JwtConfiguration等的业务含义利用--max-results与--next-token或 CLI 自动分页机制处理大量授权器结合get-authorizer、create-authorizer、delete-authorizer完成授权器的全生命周期管理依据服务模型中的错误定义快速定位NotFoundException、TooManyRequestsException等问题。所有命令行为、字段定义与分页配置均可直接对照本仓库的 示例文档 与 服务模型 验证。【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表