Как вызвать aws лямбда-функцию, используя generi c DynamoDB потоки, используя serverless.yml - PullRequest
0 голосов
/ 27 марта 2020

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

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

1 Ответ

0 голосов
/ 27 марта 2020

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

Определение потоков как лямбда-входа в 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 для этой таблицы в вашу лямбда-функцию.

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

...