【问题标题】:Serverless - Setting the authorization type to CUSTOM or COGNITO_USER_POOLS requires a valid authorizer无服务器 - 将授权类型设置为 CUSTOM 或 COGNITO_USER_POOLS 需要有效的授权人
【发布时间】:2019-03-13 17:35:35
【问题描述】:
在 API 网关端点上附加自定义授权方时遇到问题。这是我的场景步骤:
- 创建自定义授权方(使用 lambda 函数)。
- 创建集成类型为 HTTP 的新端点。
- 将 AuthorizationType 设置为 CUSTOM
如何将自定义授权方附加到无服务器 yaml 上?
- 我尝试使用 AuthorizerId,收到错误“ProxyMethod - 指定的授权人 ID 无效。将授权类型设置为 CUSTOM 或 COGNITO_USER_POOLS 需要有效的授权人。”
- 我没有在serverless documentation 上找到上述场景的示例代码
- 我尝试关注AWS docs。它解释了使用 AuthorizerId,但不确定 serverless 是否支持它。
有人可以帮我解决这个问题吗?
【问题讨论】:
标签:
amazon-web-services
aws-api-gateway
serverless
【解决方案1】:
您应该首先创建授权人。您将获得一个可在您的配置中使用的授权人 ID。
Resources:
authorizer:
Type: AWS::ApiGateway::Authorizer
Properties:
AuthorizerResultTtlInSeconds: 0
AuthorizerUri: !Join
- ''
- - 'arn:aws:apigateway:'
- '{region}'
- ':lambda:path/2015-03-31/functions/'
- 'arn:aws:lambda:{region}:'
- Ref: AWS::AccountId
- ':function:customAuthorizer'
- '/invocations'
Name: authorizer
RestApiId: {restApiId}
Outputs:
authorizerId:
Description: "API Gateway Auth Id"
Value: !Ref authorizer
Export:
Name: !Join
- '-'
- - !Ref AWS::StackName
- AuthorizerId