Подписки AWS AppSync/GraphQL в сочетании с AWS Amplify звучат потрясающе, поскольку вы сразу же можете подписаться на все свои клиенты на высокоуровневые доменные события, указанные в вашей схеме.
Хотя кажется естественным расширением то, что должен быть способ транслировать все эти события в службу, такую как лямбда или SNS, чтобы реагировать на эти события внутренне. Может быть, вы хотите регистрировать события, переиндексировать или агрегировать обновленные данные или отправить пользователю электронное письмо или push-уведомление. Точно так же, как DynamoDB Streams позволяет запускать лямбда-выражение при обновлении таблицы. Кто-нибудь знает хороший способ добиться этого?
Похоже, что для лямбда-выражения нет источника триггера AppSync, но похоже, что в противном случае может быть несколько способов сделать это:
Создайте долговременный процесс/сервис на ECS/Fargate, который подписывается на каждую мутацию, которую он хочет транслировать в SNS/Lambda. Не идеально, так как вам придется управлять и масштабировать этот процесс самостоятельно.
Используйте DynamoDB Streams в качестве лямбда-триггера. Однако событие изменения таблицы DynamoDB находится на более низком уровне, чем событие изменения GraphQL, и это предполагает, что вашим единственным источником данных является DynamoDB, тогда как AppSync/GraphQL может подключаться ко многим другим источникам данных.
Создайте лямбда-распознаватели для каждой мутации, которые также передают событие в SNS/Lambda. Для простой трансляции событий SNS, возможно, есть умный способ использовать распознаватели конвейеров, чтобы прикрепить повторно используемый распознаватель к каждой мутации...
Я не уверен, как инфраструктура Amplify поддерживает их @searchable трансформатор, будь то № 2 или № 3, или что-то еще, но похоже, что это то же самое (переиндексация данных в Elasticsearch в ответ на обновление ). Я помню, как слышал, что вы можете написать свои собственные трансформеры... возможно, кто-то мог бы написать свой собственный трансформер @broadcasted, который также транслирует все события мутации в SNS ?
Я удивлен, что не видел много дискуссий на эту тему. Если у кого-то есть хорошие идеи или я думаю об этом неправильно, дайте мне знать.

Похоже, вы пытаетесь запустить лямбда-функции на основе входящих мутаций.
Как вы упомянули в варианте 3, лямбда-резольверы могут реализовать эту функциональность, но если вы хотите вызвать общую лямбду, которая публикуется в SNS в качестве шага выполнения, вы можете использовать конвейерные распознаватели. Где «обычная» лямбда-функция будет источником данных для шага в вашем конвейере, а затем будет иметь обычный преобразователь, который вы будете использовать для Dynamo/ES/Aurora Serverless.
Документы: https://docs.aws.amazon.com/appsync/latest/devguide/pipeline-resolvers.html
Спасибо за указатель @Ashwin! Я думаю, что меня немного смутил язык, окружающий "типы" и "поля". Я постоянно слышал о преобразователях конвейера в контексте разрешения «полей», что, как я думал, означает разрешение полей типов только во время запросов. В документации, на которую вы ссылаетесь, есть хороший пример, показывающий, что мутация под названием signUp также является «полем» в «типе» мутации. На самом деле все является просто типом или полем. Таким образом, полностью поддерживается настройка повторно используемого преобразователя конвейера, который транслирует событие мутации в SNS или даже напрямую вызывает лямбду.
Вы смотрели на преобразователи Pipeline? docs.aws.amazon.com/appsync/latest/devguide/…