Node.js 如何在AWS Lambda无服务器部署中验证第三方webhook请求
我正在编写一个函数来处理Stripe.com签出会话的回调 基本上,我在请求主体中接收到一些数据,用Stripe节点库对其进行验证,然后在购买完成后尝试写入Dynamodb以处理一些后端业务逻辑 问题是我需要保持此api端点的打开状态,以便Stripe调用它,同时还需要授予函数写入dynamodb的权限。 当设置authorizer:aws_iam时,它要求请求包含身份验证令牌,当使用条带测试webhook时,它返回缺少身份验证令牌错误 当我删除authorizer:aws_iam Stripe可以调用webhook fine,因为端点是打开的,但是没有允许写入dynamodb的权限设置。看起来像一个陷阱 这是我的无服务器: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
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。