Как получить ответ от лямбда-функции, запущенной AWS S3?

В настоящее время у меня есть установка, в которой мой мобильный интерфейс выполняет загрузку изображения AWS s3. Загрузка s3 запускает лямбда-функцию AWS, которая запускает пошаговую функцию AWS (конечный автомат), которая выполняет различные задания и действия.

Я ищу лучший (и наиболее эффективный по времени) способ вернуть результат в конце пошаговой функции на мобильное устройство.

Один из способов - контролировать executionARN конечного автомата и, когда он будет завершен, получить данные. Похоже, это относится к реализации awslabs lambda-refarch-imagerecognition, здесь. Однако мой интерфейс находится на мобильном устройстве, и я бы предпочел не отправлять и получать много запросов, чтобы проверить, завершен ли конечный автомат.

Другое возможное решение - реорганизовать процесс так, чтобы загрузка s3 была автономным событием, и, как только оно будет успешным, сделать запрос API к шлюзу API AWS, который запускает пошаговую функцию. Затем запрос API POST вернет ответ. Проблема здесь в том, что приложение должно дождаться ответа s3, чтобы продолжить запуск конечного автомата.

Есть ли лучший способ выполнить эту последовательность и получить ответ? В идеале загрузка s3 должна возвращать полный ответ от конечного автомата. Таким образом, будет один запрос (загрузка изображения) и один ответ.


person robsalzwedel    schedule 26.07.2017    source источник
comment
Вы можете попробовать установить URL-адрес обратного вызова, который будет прослушивать ваш интерфейс, и как только лямбда закончит, отправьте ответ на URL-адрес обратного вызова и сообщите мобильному устройству, что он завершился.   -  person Avihoo Mamka    schedule 26.07.2017
comment
Вы смотрели мобильные push-уведомления Amazon SNS?   -  person jarmod    schedule 26.07.2017
comment
@robsalzwedel Привет, не могли бы вы рассказать, чем вы в конечном итоге занимаетесь? Благодарность   -  person Jun711    schedule 03.07.2018
comment
@jarmod а что, если это в браузере?   -  person Jun711    schedule 04.07.2018


Ответы (1)


Я бы использовал Amazon SNS -> push-уведомления. Вы говорите, что не хотите делать «много запросов» (и ждать ответов - или опросов).

Amazon SNS позволяет публиковать материалы по определенной теме.

Все, что «подписано» на тему, будет (получать уведомление / сообщение) всякий раз, когда оно (обновление без сохранения состояния) будет опубликовано в теме.

AWS SNS

«Мобильный интерфейс» (устройство - вы упомянули) «будет получать сообщение» / получать push-уведомления от конечной точки / темы SNS.

Это может быть вызвано, когда «конечный автомат» завершает работу, позволяя мобильному устройству «получать своевременное обновление» через push-уведомление.

Это позволит избежать опроса для ответа.

person chocksaway    schedule 26.07.2017
comment
Как SNS выборочно рассылает уведомления / сообщения всем подписчикам? Я заметил, что есть фильтрация атрибутов, могу ли я фильтровать идентификатор / адрес электронной почты конкретного пользователя и отправлять уведомление только ОДНОМУ пользователю? - person Jun711; 03.07.2018
comment
Я узнал из этой темы, что на самом деле можно создать одну тему для каждого пользователя. stackoverflow.com/ questions / 38254516 / Таким образом, нам не нужно фильтровать сообщения по идентификаторам пользователей или электронной почте. - person Jun711; 03.07.2018