Как вызвать лямбда-функцию aws, используя общие потоки DynamoDB, используя serverless.yml

Я пытаюсь вызвать лямбда-функцию, используя динамические потоки в нескольких таблицах, используя конфигурацию serverless.yml. Можно ли настроить универсальный arn на триггерах aws serverless.yml.

Существуют таблицы DynamodB req_tnt1, req_tnt2, req_tnt2 ... и так далее. Всякий раз, когда обновляется таблица req_tnt *, я запускаю лямбду и сохраняю информацию вasticsearch для поиска свободного текста. Мне удалось сделать для одной таблицы, которая запускает лямбда и обновить упругий поиск, но я сталкиваюсь с проблемами при включении триггера лямбда для всех таблиц (req_tnt *).

Всего 1 ответ


К сожалению, подстановочные знаки здесь невозможны.

Определение потоков как лямбда-ввода в Serverless приводит к CloudFormation, который выглядит следующим образом:

"MyLambdaEventSourceMappingDynamodbOrdersTable": {
      "Type": "AWS::Lambda::EventSourceMapping",
      "DependsOn": "MyLambdaIamRoleLambdaExecution",
      "Properties": {
        "BatchSize": 10,
        "EventSourceArn": {
          "Fn::GetAtt": [
            "OrdersTable",
            "StreamArn"
          ]
        },
        "FunctionName": {
          "Fn::GetAtt": [
            "MyLambdaLambdaFunction",
            "Arn"
          ]
        },
        "StartingPosition": "TRIM_HORIZON",
        "Enabled": "True",
        "MaximumBatchingWindowInSeconds": 60
      }
    },

Ресурс типа AWS::Lambda::EventSourceMapping использует свойство EventSourceArn для указания одного источника в соответствии с документацией .

Вы можете добавить новые сопоставления источника событий программным путем, написав другую функцию Lambda, которая принимает событие CloudWatch в качестве входных данных при создании новой таблицы, а затем добавляет EventSourceMapping для этой таблицы в вашу функцию Lambda.

Это, вероятно, будет иметь пределы масштабирования, так как число отображений источника событий на лямбду, скорее всего, ограничено (хотя я не смог найти это число).


Есть идеи?

10000