Я пишу функцию, которая обрабатывает обратный вызов сеанса оформления Stripe.com.
Обычно я получаю некоторые данные в теле запроса, проверяю их с помощью библиотеки узлов Stripe, а затем пытаюсь написать в Dynamodb для обработки некоторых бизнес-логиок бэкэнда c после завершения покупки. ,
Проблема в том, что мне нужно оставить конечную точку API открытой, чтобы Stripe могла вызывать ее, а также дать функции разрешение на запись в Dynamodb. При установке авторизатора : aws_iam требуется запрос на включение токена аутентификации, а при тестировании веб-крюка с Stripe возвращается ошибка «Missing Authentication Token».
Когда я удаляю авторизатор : aws_iam Stripe может нормально вызывать webhook, потому что конечная точка открыта, но тогда нет настроек разрешений, позволяющих писать в динамодаб. Похоже на уловку22.
Вот мой безсерверный сервер:
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