Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何在AWS Lambda无服务器部署中验证第三方webhook请求_Node.js_Amazon Web Services_Aws Lambda_Amazon Iam_Serverless - Fatal编程技术网

Node.js 如何在AWS Lambda无服务器部署中验证第三方webhook请求

Node.js 如何在AWS Lambda无服务器部署中验证第三方webhook请求,node.js,amazon-web-services,aws-lambda,amazon-iam,serverless,Node.js,Amazon Web Services,Aws Lambda,Amazon Iam,Serverless,我正在编写一个函数来处理Stripe.com签出会话的回调 基本上,我在请求主体中接收到一些数据,用Stripe节点库对其进行验证,然后在购买完成后尝试写入Dynamodb以处理一些后端业务逻辑 问题是我需要保持此api端点的打开状态,以便Stripe调用它,同时还需要授予函数写入dynamodb的权限。 当设置authorizer:aws_iam时,它要求请求包含身份验证令牌,当使用条带测试webhook时,它返回缺少身份验证令牌错误 当我删除authorizer:aws_iam Stripe

我正在编写一个函数来处理Stripe.com签出会话的回调

基本上,我在请求主体中接收到一些数据,用Stripe节点库对其进行验证,然后在购买完成后尝试写入Dynamodb以处理一些后端业务逻辑

问题是我需要保持此api端点的打开状态,以便Stripe调用它,同时还需要授予函数写入dynamodb的权限。 当设置authorizer:aws_iam时,它要求请求包含身份验证令牌,当使用条带测试webhook时,它返回缺少身份验证令牌错误

当我删除authorizer:aws_iam Stripe可以调用webhook fine,因为端点是打开的,但是没有允许写入dynamodb的权限设置。看起来像一个陷阱

这是我的无服务器:

handleCourseCheckout:
   handler: checkout_completed.main
   events:
      - http:
         path: webhook/purchased
         method: post
         cors: true
         authorizer: aws_iam
授权人aws_iam的定义如下:

provider:
  name: aws
  runtime: nodejs10.x
  stage: dev

  ......

  iamRoleStatements:
    - Effect: Allow
      Action:
        - dynamodb:DescribeTable
        - dynamodb:GetItem
        - dynamodb:PutItem
        - dynamodb:UpdateItem
      # Restrict our IAM role permissions to
      # the specific table for the stage
      Resource:
        - "Fn::ImportValue": TableArn

这有点奇怪。在您的情况下,您需要配置:

API GW广泛开放授权人:aws_iam表示仅限制访问API GW端点 API GW必须具有调用lambda函数的权限 lambda函数只能访问DynamoDB 移除CORS 请 -检查lambda权限执行角色
-检查api gw集成请求角色

当Lambda尝试写入表时,您会遇到什么错误?如果您特别需要使用iam权限对端点进行授权,则可以在API网关上使用authorizer:aws_iam。