RDS快照可以跨AWS账户传输吗?

Ant*_*ace 9 powershell amazon-web-services amazon-rds

自回答此问题以来,AWS Tools for Powershell已经发布,我基本上遇到了同样的问题:我在一个AWS账户上有一个RDS快照,我希望将其转移到另一个账户.

到目前为止,我已经能够使用Get-RDSDBSnapshotcmdlet 选择我想要的快照,并且我想要获取该Amazon.RDS.Model.DBSnapshot对象并在其他帐户中使用它.

我一直在环顾四周,我认为Restore-RDSDBInstanceFromDBSnapshotcmdlet(映射到rds-restore-db-instance-from-db-snapshot)可能是我正在寻找的,但我不相信我理解它的行为 -是否可以使用此cmdlet从我的第一个帐户获取快照,并将其还原到第二个帐户中的实例?

我特别关注Snapshot对象中是否存在任何特定于帐户的详细信息,或者是否会阻止该数据跨帐户移动的cmdlet的处理.如果存在一个问题,我会使用比PowerShell更通用的解决方案.

Ant*_*ace 13

2015/10/29更新:

自我的原始发布(链接到公告)以来,AWS已为此功能添加了原生支持.未加密的MySQL,Oracle,SQL Server和PostgreSQL支持此功能.

您可以选择公开或私下共享您的RDS快照(通过管理具有查看快照权限的特定AWS账户ID).默认情况下,快照最多可与最多20个帐户共享.

这可以通过单击"快照(左侧导航栏)>共享快照(顶部工具栏)"从RDS控制台进行管理,从而引导您进入以下UI:

在此输入图像描述

这也可以在RDS API和CLI中使用.


原答案:

我还将此发布到AWS开发者论坛,并得到了PhilP @ AWS 的回复.似乎我们根本无法通过powershell或任何其他手段来做到这一点.不过,他确实提出了一些备选建议:

无法直接将RDS快照从一个帐户共享到另一个帐户.但是我可以在这里提出一些建议(取决于您当前的配置):

如果您的RDS实例可公开访问:

  • 在您的第二个帐户上启动新的RDS DB
  • 将适当的数据库管理工具安装到PC上,并使该PC网络可以访问两个RDS实例(安全组和数据库用户访问以进行读写)
  • 使用数据库管理工具将数据从一个DB复制到另一个DB

通过EC2实例作为中介复制数据:

  • 启动使用适当的DB服务器软件配置的EC2实例
  • 将RDS数据库数据从RDS实例复制到EC2实例
  • 然后将新的RDS实例启动到第二个帐户
  • 配置适当的访问权限(安全组和数据库用户访问权限以进行读写)
  • 将数据库数据从EC2实例复制到新创建的RDS实例

我的RDS实例无法公开访问,而且他的建议是EC2解决方案更可取.根据服务器故障解决方案,我们可以交替使用mysqldump.

编辑:我想更新我已成功实施EC2中介建议.这可以通过多种方式实现自动化,但我选择的解决方案包括将bash脚本作为用户数据传递给(linux AMI)EC2实例,并在脚本中处理数据传输的详细信息.

此解决方案最终具有相当的成本效益,但需要注意的是您希望RDS实例和EC2实例位于同一可用区中.这在很大程度上是因为在同一可用区域中RDS-EC2之间的数据传输是免费的,具有私有IP地址.