如何複製 Amazon Redshift 無伺服器快照並將其還原到不同的 AWS 帳戶?

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

我想要將 Amazon Redshift 無伺服器快照,從一個 AWS 帳戶複製並還原到另一個 AWS 帳戶。該如何進行?

解決方案

使用 Amazon Redshift 主控台或 AWS Command Line Interface (AWS CLI),從一個 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. 選擇要還原的可用命名空間。您只能還原到狀態為 Available (可用) 的命名空間。
  6. 選擇 Restore (還原)。

使用 AWS CLI 複製和還原

注意:如果您在執行 AWS CLI 命令時收到錯誤,請確保您使用的是最新版 AWS CLI

將 Amazon Redshift 無伺服器的復原點轉換為來源帳戶中的快照

1.    針對在 start-time (開始時間) 之後建立的快照清單,請使用 list-recovery-points 命令。執行下列命令,並以您的命名空間取代 namespacename,以您的 AWS 區域取代 us-west-2,以您的復原點開始時間 (以 UTC 表示) 取代 starttime

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 命令來建立快照和保留期間。執行下列命令,並以步驟 1 輸出的復原點 ID 取代 recoveryPointId,以保留快照的天數取代 days (天數),以您的快照名稱取代 snapshot name (快照名稱),以您的 AWS 區域取代 us-west-2

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 帳戶對快照的存取權。執行下列命令,並以目的地 AWS 帳戶 ID 取代 destination account ID (目的地帳戶 ID),以快照的 ARN 取代 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 區域中的快照。執行下列命令,並以您的 AWS 區域取代 us-west-2

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

2.    使用 restore-from-snapshot 命令將快照還原到 Amazon Redshift 無伺服器。執行下列命令,並以您的快照名稱取代 snapshot name (快照名稱),以您的工作群組名稱取代 workgroup name (工作群組名稱),以前述命令產生的快照 ARN 取代 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 無伺服器,以及還原的命名空間名稱和還原的工作群組名稱:

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

此文章是否有幫助?


您是否需要帳單或技術支援?