Как развернуть пользовательский авторизатор API Gateway без источников идентификации, используя без сервера? - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь создать настраиваемый лямбда-авторизатор в API Gateway с использованием безсерверной инфраструктуры.

Клиенты моей службы могут отправлять заголовок «Авторизация» или «X-Custom» (но не оба). , Так что мне нужен пользовательский авторизатор без источника идентификатора.

Бессистемный отсканированный YAML выглядит следующим образом:

functions:
  create:
    handler: posts.create
    events:
      - http:
          path: posts/create
          method: post
          authorizer:
            arn: xxx:xxx:Lambda-Name
            resultTtlInSeconds: 0
            type: request
          integration: lambda
          cors: true
          request:
            template:
              application/json: '{"method": "$context.httpMethod","body" : $input.json("$"),"headers": {#foreach($param in $input.params().header.keySet())"$param": "$util.escapeJavaScript($input.params().header.get($param))" #if($foreach.hasNext),#end#end},"queryParams": {#foreach($param in $input.params().querystring.keySet())"$param": "$util.escapeJavaScript($input.params().querystring.get($param))" #if($foreach.hasNext),#end#end},"pathParameters": {#foreach($param in $input.params().path.keySet())"$param": "$util.escapeJavaScript($input.params().path.get($param))" #if($foreach.hasNext),#end#end}}'

Я использую следующий шаблон запроса, чтобы моя лямбда получала Заголовки и могут выполнять проверку:

{"method": "$context.httpMethod","body" : $input.json("$"),"headers": {#foreach($param in $input.params().header.keySet())"$param": "$util.escapeJavaScript($input.params().header.get($param))" #if($foreach.hasNext),#end#end},"queryParams": {#foreach($param in $input.params().querystring.keySet())"$param": "$util.escapeJavaScript($input.params().querystring.get($param))" #if($foreach.hasNext),#end#end},"pathParameters": {#foreach($param in $input.params().path.keySet())"$param": "$util.escapeJavaScript($input.params().path.get($param))" #if($foreach.hasNext),#end#end}}

Проблема заключается в том, что при запуске команды развертывания без сервера авторизатор создается с ресурсом идентификации «Авторизация».

Я основал свой код на следующие ресурсы:

Это привело меня к двум вопросам:

  1. Что такое версия конформации безсерверной платформы используется для развертывания моего авторизатора?
  2. Как указать собственный авторизатор без ресурсов?
...