【问题标题】:Issues authenticating with AWS API Gateway error "IncompleteSignatureException"使用 AWS API Gateway 错误“IncompleteSignatureException”进行身份验证时出现问题
【发布时间】:2021-10-08 05:24:46
【问题描述】:

大家好,我创建了一个 lambda 函数,然后使用 cloudformation 将其部署到 API 网关。为了进行身份验证,我使用 cognito 用户池。在标头中,我传递了一个适用于其他功能的授权令牌。当我尝试访问 API 时,我得到“IncompleteSignatureException”。我不知道如何解决这个问题......我以为我将 cloudformation 模板设置为类似于我手动附加 lambda 函数时,但我显然错过了一些东西。任何想法将不胜感激!

谢谢!

顺便说一句,当我从 api 网关控制台“测试”它时它确实有效

CreateMethod:
    Type: AWS::ApiGateway::Method
    Properties:
      RestApiId: !Ref baseApi
      ResourceId: !Ref NewResource
      HttpMethod: POST
      AuthorizationType: COGNITO_USER_POOLS
      AuthorizerId: !Ref cogId
      Integration:
        Type: AWS_PROXY
        IntegrationHttpMethod: POST
        Uri: !Sub
          - arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${lambdaArn}/invocations
          - lambdaArn: !GetAtt TheLambda.Arn
      MethodResponses:
        - StatusCode: 200
          ResponseModels: 
           application/json : Empty
LambdaApiGatewayInvoke:
    Type: AWS::Lambda::Permission
    Properties:
      Action: lambda:InvokeFunction
      FunctionName: !GetAtt TheLambda.Arn
      Principal: apigateway.amazonaws.com
      SourceArn: !Sub arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:${baseApi}/*/POST/${basePath}/ChosenPath

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation aws-api-gateway


    【解决方案1】:

    Welp,我是个白痴。我无意中发现了我的问题。因此,对于遇到此问题的任何人,这里都有解决方案:部署 API。

    任何时候您对需要使用的 API 进行更改:AWS::ApiGateway::Deployment

    我的错误是认为它仅适用于新的 API。不,如果您对 API 进行任何更改,则需要重新部署它

    【讨论】:

      【解决方案2】:

      我建议您考虑使用AWS SAM。这是 cloudformation 的扩展,为您提供额外的 CloudFormation 类型。 AWS SAM 在权限方面也减轻了很多负担,因为 AWS SAM 在 API 和 lambda 本身之间创建了必要的权限。

      可以在 here 找到 SAM 类型的 CloudFormation 参考。

      如果您将使用 AWS SAM,则需要将 Transform: 'AWS::Serverless-2016-10-31' 添加到 CloudFormation 模板的顶部

      【讨论】:

      • 谢谢!我一直在研究 SAM 并且非常喜欢它。我的问题是我需要将一个函数附加到一个预先存在的 API 网关,所以 SAM 无法工作
      • 这对于 AWS SAM 来说是非常可能的,通过在函数的事件部分使用 api 标识符。
      猜你喜欢
      • 2016-09-15
      • 1970-01-01
      • 2019-01-07
      • 2019-12-31
      • 2020-03-27
      • 1970-01-01
      • 2021-08-28
      • 1970-01-01
      • 2019-12-21
      相关资源
      最近更新 更多