AWS::ApiGatewayV2::Authorizer - AWS CloudFormation
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWS::ApiGatewayV2::Authorizer

AWS::ApiGatewayV2::Authorizer 资源更新 WebSocket API 的 Lambda 授权方函数或 HTTP API 的 JSON Web 令牌 (JWT) 授权方。有关 WebSocket API 的 Lambda 授权方函数的更多信息,请参阅 API Gateway 开发人员指南中的创建 Lambda REQUEST 授权方函数。有关 HTTP API 的 JWT 授权方的更多信息,请参阅 API Gateway 开发人员指南 中的 JWT 授权方

语法

要在 AWS CloudFormation 模板中声明此实体,请使用以下语法:

JSON

{ "Type" : "AWS::ApiGatewayV2::Authorizer", "Properties" : { "ApiId" : String, "AuthorizerCredentialsArn" : String, "AuthorizerResultTtlInSeconds" : Integer, "AuthorizerType" : String, "AuthorizerUri" : String, "IdentitySource" : [ String, ... ], "IdentityValidationExpression" : String, "JwtConfiguration" : JWTConfiguration, "Name" : String } }

YAML

Type: AWS::ApiGatewayV2::Authorizer Properties: ApiId: String AuthorizerCredentialsArn: String AuthorizerResultTtlInSeconds: Integer AuthorizerType: String AuthorizerUri: String IdentitySource: - String IdentityValidationExpression: String JwtConfiguration: JWTConfiguration Name: String

属性

ApiId

API 标识符。

必需:是

类型:字符串

Update requires: Replacement

AuthorizerCredentialsArn

将所需凭证指定为 API Gateway 的 IAM 角色以调用授权方。要指定 API Gateway 代入的 IAM 角色,请使用角色的 Amazon 资源名称 (ARN)。要对 Lambda 函数使用基于资源的权限,请指定 null。仅 REQUEST 授权方支持。

必需:否

类型:字符串

Update requires: No interruption

AuthorizerResultTtlInSeconds

当前不支持授权方缓存。不要为授权方指定该值。

必需:否

类型:整数

Update requires: No interruption

AuthorizerType

授权方类型。对于 WebSocket API,请使用传入请求参数为 Lambda 函数指定 REQUEST。对于 HTTP API,请指定 JWT 以使用 JSON Web 令牌。

必需:是

类型:字符串

Update requires: No interruption

AuthorizerUri

授权方的统一资源标识符 (URI)。对于 REQUEST 授权方,这必须是格式正确的 Lambda 函数 URI,例如 arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:{account_id}:function:{lambda_function_name}/invocations。通常,URI 采用以下形式:arn:aws:apigateway:{region}:lambda:path/{service_api} ,其中 {region} 与托管 Lambda 函数的区域相同,path 表示 URI 中的剩余子字符串应被视为资源的路径,包括初始 /。对于 Lambda 函数,通常采用以下形式:/2015-03-31/functions/[FunctionARN]/invocations

必需:否

类型:字符串

Update requires: No interruption

IdentitySource

为其请求授权的身份源。

对于 REQUEST 授权方,这是可选的。该值是指定的请求参数的一个或多个映射表达式的集合。目前,身份源可能是标头、查询字符串参数、阶段变量和上下文参数。例如,如果将 Auth 标头和 Name 查询字符串参数定义为身份源,则该值为 route.request.header.Auth, route.request.querystring.Name。将使用这些参数验证所有身份相关请求参数在请求中是否存在并且不为 Null 和空,从而为基于 Lambda 的授权方执行运行时验证。只有在满足该条件时,授权方才会调用授权方 Lambda 函数。否则,它返回 401 Unauthorized 响应,而不调用 Lambda 函数。

对于 JWT,这是指定从入站请求中提取JSON Web 令牌 (JWT) 的位置的单个条目。目前,仅支持基于标头的选择内容和基于查询参数的选择内容,例如 "$request.header.Authorization"

必需:是

类型:字符串列表

Update requires: No interruption

IdentityValidationExpression

不使用该参数。

必需:否

类型:字符串

Update requires: No interruption

JwtConfiguration

JWTConfiguration 属性指定 JWT 授权方的配置。是 JWT 授权方类型所必需的。仅 HTTP API 支持。

必需:否

类型JWTConfiguration

Update requires: No interruption

Name

授权方的名称。

必需:是

类型:字符串

Update requires: No interruption

返回值

Ref

在将此资源的逻辑 ID 传递给内部 Ref 函数时,Ref 返回授权方的 ID,例如 abcde1

For more information about using the Ref function, see Ref.

示例

授权方创建示例

以下示例为 MyApi API 创建 Lambda authorizer 资源。

JSON

{ "Authorizer": { "Type": "AWS::ApiGatewayV2::Authorizer", "Properties": { "Name": "LambdaAuthorizer", "ApiId": { "Ref": "MyApi" }, "AuthorizerType": "REQUEST", "AuthorizerCredentialsArn": "Arn", "AuthorizerUri": { "Fn::Join": [ "", [ "arn:", { "Ref": "AWS::Partition" }, ":apigateway:", { "Ref": "AWS::Region" }, ":lambda:path/2015-03-31/functions/", "/invocations" ] ] }, "AuthorizerResultTtlInSeconds": 500, "IdentitySource": [ "route.request.header.Auth" ] } } }

YAML

Authorizer: Type: 'AWS::ApiGatewayV2::Authorizer' Properties: Name: LambdaAuthorizer ApiId: !Ref MyApi AuthorizerType: REQUEST AuthorizerCredentialsArn: Arn AuthorizerUri: !Join - '' - - 'arn:' - !Ref 'AWS::Partition' - ':apigateway:' - !Ref 'AWS::Region' - ':lambda:path/2015-03-31/functions/' - /invocations AuthorizerResultTtlInSeconds: 500 IdentitySource: - route.request.header.Auth

另请参阅