我应该将一个区域中的所有DDB表备份到另一区域。 我计划通过部署一个lambda来做到这一点,该lambda具有执行备份工作的逻辑,并且lambda具有一个CloudWatch事件触发器,该触发器基于cron表达式每24小时运行一次。
问题是我无法将表列表传递到CF模板并部署我的lambda。 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个表名?我的意思是我必须运行某种循环,以便每次它选择表并运行规则。
无法弄清楚: