Параметры пути, тело становится нулевым при использовании авторизатора в лямбда-aws - PullRequest
2 голосов
/ 23 октября 2019

Я создал метод Lambda Authorizor (на основе токена), с настраиваемым vpc и интегрированный с другой лямбда-кодом для авторизации через шлюз API, когда авторизация проходит успешно и когда она отправляется в целевую лямбду, появляются параметры пути и параметры запроса в событиив качестве нуля.

в функции авторизатора файла serverless.yml

authorizer:
  handler: authorizerHandler.verifyUser
  vpc: ${customvpc}

в файле serverless.yml обычная лямбда

 user:
  handler: user.router
  vpc: ${customvpc}
  integration:lambda
  events:
     - http:
         path:api/v1/user/{id}
         cors: true

когда пользователь авторизован, я передаю возвращаемый объект как

{
  "principalId": "yyyyyyyy", // The principal user identification associated with the token sent by the client.
  "policyDocument": {
    "Version": "2012-10-17",
    "Statement": [
      {
        "Action": "execute-api:Invoke",
        "Effect": "Allow|Deny",
        "Resource": "arn:aws:execute-api:{regionId}:{accountId}:{apiId}/{stage}/{httpVerb}/[{resource}/[{child-resources}]]"
      }
    ]
  }
}

, но когда я пытался использовать идентификатор в event.pathParameter, он возвращает ноль, то же самое происходит и с queryStringParameters. кто-нибудь может помочь?

спасибо заранее: -)

Ответы [ 2 ]

2 голосов
/ 23 октября 2019

Я думаю, вам нужно использовать фигурные скобки {id} вместо двоеточий :id

 user:
  handler: user.router
  vpc: ${customvpc}
  integration:lambda
  events:
     - http:
         path:api/v1/user/{id}
         cors: true
1 голос
/ 27 октября 2019

Я думаю, что у меня была только эта проблема, когда я использовал собственный авторизатор с токеном типа. Информация строки запроса будет присутствовать только в авторизаторе с запросом типа.

functions:
  create:
    handler: posts.create
    events:
      - http:
          path: posts/create
          method: post
          authorizer:
            arn: xxx:xxx:Lambda-Name
            resultTtlInSeconds: 0
            identitySource: method.request.header.Authorization, context.identity.sourceIp
            identityValidationExpression: someRegex
            type: request

https://serverless.com/framework/docs/providers/aws/events/apigateway/

Обратите внимание, что при изменении типа с токена типа на запрос типа это изменит способВы кешируете ключ политики.

Также больше информации здесь: https://aws.amazon.com/blogs/compute/using-enhanced-request-authorizers-in-amazon-api-gateway/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...