我们如何使用AWS云形成模板创建跨区域RDS只读副本?

问题描述:

我很容易找到一种方法,使用AWS云形成在同一区域创建RDS只读副本,但是:
1.我们可以使用CF模板在不同区域创建相同区域吗?
2.我们也可以将它提升为使用CF模板的初级?我们如何使用AWS云形成模板创建跨区域RDS只读副本?

1)是的,您可以使用CloudFormation在不同地区创建RDS只读副本。在目标区域(您想要创建只读副本的位置)中创建一个CloudFormation模板,并将源数据库实例作为输入SourceDBInstanceIdentifier(源区域中)作为输入。

Resources: 
    # Create Data DB 
    myReplciaDB: 
    Type: AWS::RDS::DBInstance 
    Properties: 
     DBInstanceIdentifier: "read-replica" 
     PubliclyAccessible: false 
     SourceDBInstanceIdentifier: "arn:aws:rds:us-east-1:XXXXXX:db:source-database" 
     StorageType: gp2 

检查此link欲知更多信息。

2)目前,我不认为有可能使用cloudformation提升只读副本。但是你可以使用lambda函数来实现这一点。

  • 在目标区域中创建一个lambda函数,该函数在您选择的sdk中使用promote-read-replica api。
  • 在源区域创建一个sns主题,并将其添加为lambda函数的触发器。 不要忘记使用SNSTopicArn将SNS的调用权限添加到Lambda。

  • 在源RDS控制台,进入事件订阅,并选择SNS话题阿尔恩上面创建为目标阿尔恩接收事件。在事件类别下,为您的源数据库选择deletion, failure