如何将 Amazon Redshift 无服务器快照复制并还原到其他 AWS 账户?

上次更新日期:2022 年 10 月 11 日

我想将一个 Amazon Redshift 无服务器快照从一个 AWS 账户复制并还原到另一个 AWS 账户。该如何操作?

解决方法

使用 Amazon Redshift 控制台或 AWS 命令行界面(AWS CLI)从一个 AWS 账户复制并还原到另一个 AWS 账户。

在开始之前,请考虑以下事项:

  • 只有当快照处于可用状态并且与可用工作组关联时,您才能将快照还原到 Amazon Redshift 无服务器命名空间
  • 从快照还原 Amazon Redshift 无服务器命名空间会将该命名空间的所有数据库替换为快照中的数据库。
  • 还原期间,Amazon Redshift 无服务器将不可用。

使用 Amazon Redshift 控制台进行复制和还原

将 Amazon Redshift 无服务器的恢复点转换为源账户中的快照

  1. 打开 Amazon Redshift 控制台
  2. 在导航窗格中,选择 Redshift serverless(Redshift 无服务器),然后选择 Data backup(数据备份)。
  3. Recovery points(恢复点)下,选择要转换为快照的恢复点的 Creation time(创建时间)。
  4. 选择 Create snapshot from recovery point(从恢复点创建快照)。
  5. 输入 Snapshot identifier(快照标识符)和 retention period(保留期)。
  6. 选择 Create(创建)。

与另一个 AWS 账户共享源账户中的快照

  1. 打开 Amazon Redshift 控制台
  2. 在导航窗格中,选择 Redshift serverless(Redshift 无服务器),然后选择 Data backup(数据备份)。
  3. 选择您之前创建的快照。
  4. 选择 Actions, Manage access(操作,管理访问权限)。
  5. 选择位于 Provide access to serverless accounts(向无服务器账户提供访问权限)下的 Add AWS account(添加 AWS 账户),然后输入 AWS account ID(AWS 账户 ID)(目标)。
  6. 选择 Save changes(保存更改)。

将快照还原到目标账户中的 Amazon Redshift 无服务器命名空间

  1. 打开 Amazon Redshift 控制台
  2. 在导航窗格中,选择 Redshift serverless(Redshift 无服务器),然后选择 Data backup(数据备份)。
  3. 选择共享给 AWS 账户 ID 的快照进行还原。一次只能还原一个快照。
  4. 选择 Actions, Restore to serverless namespace(操作,还原到无服务器命名空间)。
  5. 选择要还原到的可用命名空间。只能还原到状态可用的命名空间。
  6. 选择 Restore(还原)。

使用 AWS CLI 进行复制和还原

注意:如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新版本的 AWS CLI

将 Amazon Redshift 无服务器的恢复点转换为源账户中的快照

1.    使用 list-recovery-points 命令获取在 start-time 之后创建的快照列表。运行以下命令,将 namespacename 替换为您的命名空间,将 us-west-2 替换为您的 AWS 区域,将 starttime 替换为以 UTC 为单位的恢复点开始时间:

aws redshift-serverless list-recovery-points --namespace-name <namespacename> --region <region name> --start-time <starttime>

在以下示例中,Redshift 无服务器集群位于美国西部(俄勒冈州)区域,其命名空间为默认,起始时间为 2022-09-06T07:10 UTC:

aws redshift-serverless list-recovery-points --namespace-name default --region us-west-2 --start-time 2022-09-06T07:10

2.    使用 convert-recovery-point-to-snapshot 命令创建快照和保留期。运行以下命令,将 recoveryPointId 替换为步骤 1 中的恢复点 ID 输出,将 days 替换为保留快照的天数,将 snapshot name 替换为快照的名称,并将 us-west-2 替换为您的 AWS 区域

aws redshift-serverless convert-recovery-point-to-snapshot --recovery-point-id <recoveryPointId> --retention-period <days> --snapshot-name <snapshot name> --region <region name>

在以下示例中,快照名为 snapshot01,保留期为三天,位于美国西部(俄勒冈州)区域

aws redshift-serverless convert-recovery-point-to-snapshot --recovery-point-id 72acee50-34df-45f6-865f-46aa178ada82 --retention-period 3 --snapshot-name snapshot01 --region us-west-2

3.    使用 get-snapshot 命令确认快照已创建。运行以下命令,将 snapshot name 替换为快照名称:

aws redshift-serverless get-snapshot --snapshot-name <snapshot name>

与另一个 AWS 账户共享源账户中的快照

使用 put-resource-policy 命令为另一个 AWS 账户提供对快照的访问权限。运行以下命令,将目标账户 ID 替换为目标 AWS 账户 ID,将 snapshot arn 替换为快照的 ARN:

aws redshift-serverless put-resource-policy --policy "{\"Version\": \"2012-10-17\", \"Statement\" : [{ \"Sid\": \"AllowUserRestoreFromSnapshot\", \"Principal\":{\"AWS\": [\”<destination account ID>\”]}, \"Action\": [\"redshift-serverless:RestoreFromSnapshot\"] , \"Effect\": \"Allow\" }]}" --resource-arn <snapshot arn>

在以下示例中,提供了对账号 123456789012 中的快照 ARN 的访问权限:

aws redshift-serverless put-resource-policy --policy "{\"Version\": \"2012-10-17\", \"Statement\" : [{ \"Sid\": \"AllowUserRestoreFromSnapshot\", \"Principal\":{\"AWS\": [\"123456789012\"]}, \"Action\": [\"redshift-serverless:RestoreFromSnapshot\"] , \"Effect\": \"Allow\" }]}" --resource-arn arn:aws:redshift-serverless:us-west-2:112233445566:snapshot/4978ca91-24ba-4196-91ad-9d372f72b0fe

将快照还原到目标账户中的 Amazon Redshift 无服务器命名空间

1.    使用 list-snapshots 命令列出您的 AWS 区域中的快照。运行以下命令,将e us-west-2 替换为您的 AWS 区域

aws redshift-serverless list-snapshots  --region us-west-2

2.    使用 restore-from-snapshot 命令将快照还原到 Amazon Redshift 无服务器。运行以下命令,将 snapshot name 替换为您的快照名称,将 workgroup name 替换为您的工作组名称,将 snapshot arn 替换为上述命令中的快照 ARN:

aws redshift-serverless  restore-from-snapshot --namespace-name <namespace name > --workgroup-name <workgroup name> --snapshot-arn <snapshot arn>

在以下示例中,账户 ID 112233445566 具有一个状态为可用的 Amazon Redshift 无服务器,其命名空间名称为 restore,工作组名称为 restore

aws redshift-serverless restore-from-snapshot --namespace-name restore --workgroup-name restore --snapshot-arn arn:aws:redshift-serverless:us-west-2:112233445566:snapshot/4978ca91-24ba-4196-91ad-9d372f72b0fe

这篇文章对您有帮助吗?


您是否需要账单或技术支持?