Как сделать цикл через значения через запятую в шаблоне CF - PullRequest
0 голосов
/ 22 мая 2019

Я должен сделать резервную копию всех моих таблиц DDB из одного региона в другой регион. Я планирую сделать это, развернув лямбду, которая имеет логику для выполнения резервного копирования, а лямбда имеет триггер события CloudWatch, который запускается каждые 24 часа на основе выражения cron.

Проблема в том, что я не могу передать список таблиц моему шаблону CF и развернуть мою лямбду. Ошибка CF.

Теперь я планирую передать имена таблиц для службы в виде строки, разделенной запятыми, а не списка, а затем использовать Fn::Split для разделения имен и запуска.

TriggerDynamoDbBackupEventRule:
Type: 'AWS::Events::Rule'
Properties:
  Description : "cron expression to call dynamodb backup lambda"
  ScheduleExpression: !Join
    - ''
    - - cron(
      - !Ref ScheduleCronExpression
      - )
  Targets:
    - Arn: !GetAtt
        - LambdaDynamoDbBackup
        - Arn
      Input: !Split ["," , !Ref TableName]   
      Id: !Join ["-", [!Ref ApplicationName, "TriggerDynamoDbBackupEventRule"]]
  State: ENABLED
InvokeLambdaPermissionForTriggerDynamoDbBackupEventRule:
Type: 'AWS::Lambda::Permission'
Properties:
  Action: 'lambda:InvokeFunction'
  Principal: events.amazonaws.com
  FunctionName: !GetAtt
    - LambdaDynamoDbBackup
    - Arn
  SourceArn: !GetAtt
    - TriggerDynamoDbBackupEventRule
    - Arn

Предполагая:

У меня есть 5 таблиц, при выполнении разбиения я получу 1 таблицу как Input, и тогда правило сработает.

НО проблема:

Как я передам оставшиеся 4 имени таблицы? Я имею в виду, что мне придется запустить какой-то цикл, чтобы каждый раз, когда он выбирал таблицу, а затем запускал правило.

Не могу понять:

  1. Если подход, который я пробую, правильный или нет.
  2. Если правильно, то как делать циклы?
  3. Если нет, какую альтернативу можно сделать?
...