无服务器 - 将授权类型设置为 CUSTOM 或 COGNITO_USER_POOLS 需要有效的授权者

put*_*tra 5 amazon-web-services aws-api-gateway serverless

我在 API 网关端点上附加自定义授权者时遇到问题。这是我的场景步骤:

\n\n
    \n
  1. 创建自定义授权者(使用 lambda 函数)。
  2. \n
  3. 创建集成类型为 HTTP 的新端点。
  4. \n
  5. 将 AuthorizationType 设置为 CUSTOM
  6. \n
\n\n

如何将自定义授权者附加到无服务器 yaml 上?

\n\n
    \n
  • 我尝试使用 AuthorizerId,收到错误 \xe2\x80\x9cProxyMethod - 指定的授权者 ID 无效。将授权类型设置为 CUSTOM 或 COGNITO_USER_POOLS 需要有效的授权者。\xe2\x80\x9d
  • \n
  • 我没有\xe2\x80\x99在无服务器文档上找到示例代码中找到上述场景的示例代码
  • \n
  • 我尝试遵循AWS 文档。它解释了如何使用 AuthorizerId,但不确定 Serverless 是否支持它。
  • \n
\n\n

有人可以帮助我吗?

\n\n

在此输入图像描述

\n\n

在此输入图像描述

\n

小智 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
Run Code Online (Sandbox Code Playgroud)