AWS CloudFormation
User Guide (API Version 2010-05-15)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

AWS::ApiGateway::Authorizer

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

语法

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

JSON

{ "Type" : "AWS::ApiGateway::Authorizer", "Properties" : { "AuthorizerCredentials" : String, "AuthorizerResultTtlInSeconds" : Integer, "AuthorizerUri" : 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 IdentitySource: String IdentityValidationExpression: String Name: String ProviderARNs: - 字符串 RestApiId: String Type: String

属性

AuthorizerCredentials

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

Required: No

Type: String

更新要求无需中断

AuthorizerResultTtlInSeconds

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

Required: No

Type: Integer

更新要求无需中断

AuthorizerUri

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

Required: Conditional。仅为 Lambda 函数指定此属性。

Type: String

更新要求无需中断

IdentitySource

传入请求中的身份的源。如果您为授权方的 Type 属性指定 TOKEN,请指定映射表达式。自定义标头映射表达式的形式为 method.request.header.name,其中 name 为自定义授权标头(客户端将此标头作为其请求的一部分提交)的名称。

Required: Yes

Type: String

更新要求无需中断

IdentityValidationExpression

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

Required: No

Type: String

更新要求无需中断

Name

授权方的名称。

Required: Yes

Type: String

更新要求无需中断

ProviderARNs

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

Required: No

Type: List of String values

更新要求无需中断

RestApiId

API 网关 从中创建授权方的 RestApi 资源的 ID。

Required: Yes

Type: String

更新要求替换

Type

授权方的类型:

  • 对于使用 Lambda 函数的自定义授权方,请使用 TOKEN

  • 对于使用 Amazon Cognito 用户池的授权方,请使用 COGNITO_USER_POOLS

Required: Yes

Type: String

更新要求无需中断

返回值

Ref

当向 Ref 内部函数提供此资源的逻辑 ID 时,Ref 将返回授权方的 ID,例如 abcde1

有关使用 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: 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"

本页内容: