2017-02-16 3 views
3

Я использую пользовательскую аутентификацию (с помощью специального авторизатора) для доступа к лямбда AWS. Процесс авторизации работает нормально. Но у меня есть проблема с передачей данных (ex mainId) между авторизатором лямбда и бизнес-лямбдой. Все мои лямбды разработаны в JS. Как объясняется в документе AWS, в lambda authorizer, я добавляю несколько простых полей (primaryId в коде ниже) в поле контекста ответа Auth. Но в моем бизнесе я не могу получить эти поля. Документация AWS рассказывает о переменной $ context.AWS lambda: Передача данных с пользовательского авторизатора в бизнес lambda

Во-первых, не могли бы вы объяснить мне, если $ контекст переменная другая переменная или же переменная, чем контекста переменной, полученной в параметре функции JS?

Во-вторых, не могли бы вы объяснить мне, как получить в моем бизнесе лямбда поле данных (например: mainId), предоставленное авторизатором?

Себ

+0

Чтобы уточнить ответ, он недоступен в переменной контекста в функции JS. Именно в этом случае. Событие - это просто карта JSON, соответствующая шаблону rmapping, или формат по умолчанию для интеграции «прокси». –

ответ

2

Я думаю $context переменная вы имеете в виду это один доступный в API шлюза шаблона отображения. Это не эквивалентно параметру context бизнеса Lambda.

Однако, используя шаблон сопоставления и его переменную $context, вы можете построить параметр event предприятия Lambda.

Если шаблон отображения вашего API конечной точки выглядит следующим образом:

{ 
    "principalId" : "$context.authorizer.principalId" 
} 

Вы должны извлечь principalId параметра лямбда в event.

Использование транзитного вариант, principalId должен быть доступен в event.context['authorizer-principal-id']. Это поведение по умолчанию при создании конечной точки.


Ссылка о шаблонах отображения в документе:

+0

Как и где вы определяете шаблон сопоставления? –

+0

Перейдите к определению конечной точки и введите раздел * Запрос на интеграцию *. Затем в * Шаблонах сопоставления тела * существуют различные параметры для определения общей интеграции или конкретной в зависимости от типа содержимого запроса. –

0

В дополнении к Alexis ответу, principalId - в настоящее время только пары, которые могут быть переданы от пользовательский авторизатор для лямбда (на сегодняшний день). Однако обходной путь для передачи пользовательских параметров заключается в том, чтобы свести параметры JSON в принципId. Обсуждение этого вопроса: here