#node.js #aws-lambda #httprequest #aws-api-gateway
Вопрос:
У меня есть приложение node, которое берет URL-адрес, соскабливает текст с помощью puppeteer и переводит его с помощью deepl, прежде чем отправить мне результат в txt-файле. Он работает, как и ожидалось, локально, но, имея много URL-адресов для посещения и желая учиться, я пытаюсь заставить это приложение работать с AWS Lambda и изображением докера.
Я думал об использовании запроса GET/POST для отправки URL-адреса на шлюз API, чтобы запустить мою лямбду и дождаться, пока она отправит мне обратно файл txt. Проблема в том, что весь процесс занимает 2/3 минуты, чтобы завершить и отправить файл обратно. Это не проблема локально, но я знаю, что вам не следует ждать http-запроса в течение 3 минут перед возвращением.
Я действительно не знаю, как решить эту проблему. Должен ли я создать локальный сервер и заставить lambda отправить запрос на мой ip-адрес, как только это будет сделано?
Я здесь в растерянности.
Заранее спасибо!
Ответ №1:
Можно увидеть несколько альтернатив тому, что кажется проблемой асинхронной обработки.
Вставьте в лямбду необходимые данные (через API, SDK или CLI), а затем попросите ее записать свои результаты в корзину S3. Можно было бы асинхронно опросить корзину s3 для получения результатов и удалить их, очевидно, для этого требуются некоторые сценарии.
Другой подход состоял бы в том, чтобы лямбда-код публиковал результаты в теме SNS, на которую вы подписались.
Тем не менее, я не совсем уверен, что подразумевается под локальным IP-адресом, но я бы избегал передачи данных непосредственно на самоуправляемый сервер (или ваш локальный IP-адрес), скорее я хотел бы использовать один из сервисов «развязки» AWS, таких как SNS, SQS или даже S3, чтобы разделить этапы обработки. Таким образом, можно делать много запросов и извлекать данные по мере необходимости.
Комментарии:
1. Спасибо вам за ваш ответ! Я собирался заставить свою лямбду хранить ответ в MongoDB Atlas, чтобы запросить его позже, но вы правы, зачем покидать среду AWS. Спасибо, хорошего дня!