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

AWS::ApiGateway::Authorizer

AWS::ApiGateway::Authorizer 资源创建一个 API Gateway 可为已启用授权的方法激活的授权层。API Gateway 在客户端调用这些方法时将激活授权方。

语法

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

JSON

{ "Type" : "AWS::ApiGateway::Authorizer", "Properties" : { "AuthorizerCredentials" : String, "AuthorizerResultTtlInSeconds" : Integer, "AuthorizerUri" : String, "AuthType" : String, "IdentitySource" : String, "IdentityValidationExpression" : String, "Name" : String, "ProviderARNs" : [ String, ... ], "RestApiId" : String, "Type" : String } }

YAML

Type: AWS::ApiGateway::Authorizer Properties: AuthorizerCredentials: String AuthorizerResultTtlInSeconds: Integer AuthorizerUri: String AuthType: String IdentitySource: String IdentityValidationExpression: String Name: String ProviderARNs: - String RestApiId: String Type: String

属性

AuthorizerCredentials

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

必需:否

类型:字符串

Update requires: No interruption

AuthorizerResultTtlInSeconds

生存时间 (TTL) 期间(以秒为单位),用于指定 API Gateway 缓存授权方结果的时长。如果您指定一个大于 0 的值,API Gateway 将缓存授权方响应。默认情况下,API Gateway 将此属性设为 300。最大值为 3600 秒(1 小时)。

必需:否

类型:整数

Update requires: No interruption

AuthorizerUri

授权方的统一资源标识符 (URI)。如果您为授权方的 Type 属性指定 TOKEN,请指定以下形式的 Lambd 函数 URI:arn:aws:apigateway:region:lambda:path/path。路径通常采用以下形式:/2015-03-31/functions/LambdaFunctionARN/invocations。

必需:条件

类型:字符串

Update requires: No interruption

AuthType

一个可选的客户定义的字段,可在 OpenApi 导入和导出中使用该字段而不会影响功能。

必需:否

类型:字符串

Update requires: No interruption

IdentitySource

传入请求中的身份的源。

如果为 Type 属性指定 TOKENCOGNITO_USER_POOLS,请指定采用 method.request.header.name 形式的标头映射表达式,其中 name 是客户端作为请求的一部分提交的自定义授权标头的名称。

如果为 Type 属性指定 REQUEST,请将指定请求参数的一个或多个映射表达式指定为 method.request.parameter.name 形式(以逗号分隔的字符串)。有关支持的参数类型,请参阅 API Gateway 开发人员指南中的使用 API Gateway 控制台配置 Lambda 授权方

必需:否

类型:字符串

Update requires: No interruption

IdentityValidationExpression

传入身份的验证表达式。如果您为授权方的 TOKEN 属性指定 Type,请指定正则表达式。API Gateway 使用表达式尝试匹配传入客户端令牌,如果令牌匹配则继续。如果令牌不匹配,则 API Gateway 使用 401(未授权请求)错误代码进行响应。

必需:否

类型:字符串

Update requires: No interruption

Name

授权方的名称。

必需:否

类型:字符串

Update requires: No interruption

ProviderARNs

要与此授权方关联的 Amazon Cognito 用户池 Amazon 资源名称 (ARN) 的列表。有关更多信息,请参阅 API Gateway 开发人员指南中的使用 Amazon Cognito 用户池

必需:否

类型:字符串列表

Update requires: No interruption

RestApiId

API Gateway 在其中创建授权方的 RestApi 资源的 ID。

必需:是

类型:字符串

Update requires: Replacement

Type

授权方的类型。有效值包括:

  • TOKEN:使用 Lambda 函数的自定义授权方。

  • COGNITO_USER_POOLS:使用 Amazon Cognito 用户池的授权方。

  • REQUEST:使用 Lambda 函数及传入请求参数的授权方。

必需:是

类型:字符串

Update requires: No interruption

返回值

Ref

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

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

示例

创建授权方

下面的示例创建作为 AWS Lambda 函数的自定义授权方。

JSON

{ "Authorizer": { "Type": "AWS::ApiGateway::Authorizer", "Properties": { "AuthorizerCredentials": { "Fn::GetAtt": [ "LambdaInvocationRole", "Arn" ] }, "AuthorizerResultTtlInSeconds": "300", "AuthorizerUri": { "Fn::Join": [ "", [ "arn:aws:apigateway:", { "Ref": "AWS::Region" }, ":lambda:path/2015-03-31/functions/", { "Fn::GetAtt": [ "LambdaAuthorizer", "Arn" ] }, "/invocations" ] ] }, "Type": "TOKEN", "IdentitySource": "method.request.header.Auth", "Name": "DefaultAuthorizer", "RestApiId": { "Ref": "RestApi" } } } }

YAML

Authorizer: Type: 'AWS::ApiGateway::Authorizer' Properties: AuthorizerCredentials: !GetAtt - LambdaInvocationRole - Arn AuthorizerResultTtlInSeconds: '300' AuthorizerUri: !Join - '' - - 'arn:aws:apigateway:' - !Ref 'AWS::Region' - ':lambda:path/2015-03-31/functions/' - !GetAtt - LambdaAuthorizer - Arn - /invocations Type: TOKEN IdentitySource: method.request.header.Auth Name: DefaultAuthorizer RestApiId: !Ref RestApi

另请参阅