Могу ли я позвонить в AWS Lambda напрямую без API шлюза? - PullRequest
1 голос
/ 27 сентября 2019

Я разрабатываю простую лямбда-функцию в AWS для получения и помещения данных в базу данных Dynamo.Я хотел вызвать эту функцию из настольного приложения Windows Client.У меня вопрос: действительно ли мне нужен AWS Gateway API здесь или я могу вызвать лямбда-функцию напрямую, используя AWS SDK?

Ответы [ 3 ]

2 голосов
/ 27 сентября 2019

Вы можете использовать invoke() для непосредственного запуска функции AWS Lambda из AWS SDK.Вы также можете передать ему payload, который будет доступен внутри функции.

Вот пример синтаксиса в Python:

response = client.invoke(
    ClientContext='MyApp',
    FunctionName='MyFunction',
    InvocationType='Event',
    LogType='Tail',
    Payload='fileb://file-path/input.json',
    Qualifier='1',
)
0 голосов
/ 28 сентября 2019

У меня мало информации о вашем случае использования.Я должен предположить что-то здесь.

  1. Вам не нужно ждать ответа от Lambda, так что вы можете использовать асинхронный вызов через SNS или SQS, а затем поставить свою Lambda подписанной на любойSNS или SQS.Вы можете исследовать больше, чтобы выбрать между SNS и SQS, в зависимости от вашего варианта использования

  2. Если вам нужно дождаться ответа от Lambda

    • Если вы хотите поделиться функцией Lambda за пределами своей организации, вы можете использовать API Gateway для этого, это означает, что вы по-прежнему сохраняете Lambda внутри, но выставляете API через API-шлюз снаружи для использования.

    • Если вы не хотите делиться функцией Lambda снаружи, как и предыдущие ответы, вы можете использовать invoke command / sdk для достижения результата.

Если я получу больше информации о вашем случае использования, возможно, ответ будет более точным.

0 голосов
/ 27 сентября 2019
  • Вам необходим API-шлюз, если вы хотите создать API-интерфейсы REST, которые мобильные и веб-приложения могут использовать для вызова общедоступных сервисов AWS (через код, запущенный в AWS Lambda).
  • Вы можете синхронно вызывать вашЛямбда-функции.Это может быть достигнуто с помощью различных опций, в том числе с помощью CLI или любого из поддерживаемых SDK.Обратите внимание, что типом вызова должен быть RequestResponse aws blog
  • команда bash с использованием aws cli
aws lambda invoke —function-name MyLambdaFunction —invocation-type RequestResponse —payload  “JSON string here”

sdk python call. конфигурация

    invoke_resp = LAMBDA_CLIENT.invoke(
        FunctionName='function_name',
        InvocationType='RequestResponse',
        Payload='payload')
  • Если вы хотите вызвать лямбда-флаг асинхронного вызова, должен быть Событие
aws lambda invoke —function-name MyLambdaFunction —invocation-type Event —payload  “JSON string here”
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...