Шаговые функции с Lambdas с использованием интеграции Lambda Proxy - PullRequest
0 голосов
/ 17 сентября 2018

Я написал несколько функций Lambda, которые отображаются как конечные точки Rest через API Gateway.Я выбрал «Интеграцию Lambda Proxy», поскольку это казалось простым способом начать работу.

Теперь я хочу связать воедино 2 из этих функций с помощью пошаговых функций AWS.Общая интеграция и конфигурация работают отлично, за исключением того, как создать надлежащие входные данные для каждой задачи.

Используя консоль, я могу запустить выполнение и дать следующий JSON:

{
    "headers": {
        "Authorization": "Bearer 12345"
    },
    "body": "\"some\": \"json\"",
    "queryParameters: {
        "more": "here"
    }
}

Вот каквходные данные для моих функций Lambda выглядят так, поскольку я везде использую интеграцию Lambda Proxy.

Выходные данные выглядят примерно так:

{
  "isBase64Encoded": false,
  "statusCode": 200,
  "headers": {
    "Access-Control-Allow-Origin": "*"
  },
  "body": "{\"message\":\"Great\"}"
}

Это также прекрасный автономный APIШлюз отображает эту информацию обратно на правильные коды возврата HTTP и ответы и все.

Теперь: как мне создать эти входные JSON при использовании пошаговых функций.Конечно, самый первый ввод данных с помощью консоли прост.Но как мне создать следующий вход и смешать его с частью предыдущего?Некоторые из проблем в пунктах маркировки:

  • Использование InputPath, ResultPath и OutputPath Я могу только использовать «целые» выходные данные предыдущего шага в качестве входных данных или части в качестве входных данных для следующего шага.Но я не могу использовать только часть выходных данных, в моем случае это элемент "body" ответа.
  • Этот элемент "body" в любом случае экранирован, поэтому я думаю, что мне нужно его отключитьпрежде чем использовать его как-то для следующего ввода?Но как?
  • Входной JSON должен состоять из таких элементов, как "headers", "body" или "queryParameters", которые вообще не отображаются в предыдущем выводе.Как мне их создать?

Интересно, не работают ли пошаговые функции с Lambdas, созданными для интеграции с Lambda Proxy?Это тот случай?Как люди используют пошаговые функции, не сталкиваясь с этими проблемами?

1 Ответ

0 голосов
/ 18 сентября 2018

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

Если вы хотите, чтобы ваш лямбда-код был доступен через API-шлюз и пошаговую функцию, я бы рекомендовал следующее: Разделите логику лямбда-кода на 2 части, т.е. основная логика и обертка над базовой логикой, которая в основном выполняет функции извлечения полей из тела и его удаления. Таким образом, ваш шлюз API может вызывать лямбду-обертку, а функция шага - лямбда-ядро логики ядра. С этим дизайном вы сможете достичь своей цели. Более того, вы можете определить лямбды как часть одного пакета cfn and code, который поможет в простом обслуживании.

Я надеюсь, что это отвечает на ваши вопросы.

Спасибо

...