Я должен сделать резервную копию всех моих таблиц 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 имени таблицы? Я имею в виду, что мне придется запустить какой-то цикл, чтобы каждый раз, когда он выбирал таблицу, а затем запускал правило.
Не могу понять:
- Если подход, который я пробую, правильный или нет.
- Если правильно, то как делать циклы?
- Если нет, какую альтернативу можно сделать?