跳至內容

如何將我的 DynamoDB 資料表從一個 AWS 帳戶遷移到另一個 AWS 帳戶?

3 分的閱讀內容
0

我想將我的 Amazon DynamoDB 資料表中的資料複製到同一帳戶或不同帳戶中的另一個帳戶的新資料表中

簡短說明

您可以使用多種方法將資料從一個 AWS 帳戶中的 DynamoDB 資料表轉移到另一個 AWS 帳戶。最佳選擇取決於多種因素,包括資料量、即時更新的需求,以及資料轉換的複雜性。

若要將 DynamoDB 資料表從一個 AWS 帳戶遷移到另一個 AWS 帳戶,請選擇下列其中一個選項:

  • AWS Backup
  • DynamoDB 匯出到 Amazon Simple Storage Service (Amazon S3) 並匯入
  • Amazon EMR
  • AWS Data Pipeline
  • Amazon S3 和 AWS Glue
  • 自訂匯出和匯入指令碼

解決方法

請根據您的使用情況,完成以下任務。

AWS Backup

對於相同 AWS Organizations 組織中的來源 AWS 帳戶和目標 AWS 帳戶,AWS Backup 可以執行跨區域和跨帳戶 DynamoDB 資料傳輸。如需詳細資訊,請參閱跨 AWS 帳戶建立備份副本

在目標帳戶中,完成以下步驟:

  1. 在 DynamoDB 所在的 AWS 區域的目標帳戶中建立 AWS Backup 保存庫。建立保存庫時,使用您設定的 AWS Key Management Service (KMS) 金鑰。這是您與同一組織中的來源帳戶共用的金鑰。
  2. 將 AWS Identity and Access Management (IAM) 政策新增至保存庫,讓您備份到保存庫。若要執行此操作,請選取 Allow access to a backup vault from organization (允許從組織存取備份保存庫) 選項。這允許同一組織內的其他帳戶複製到保存庫中。

在來源帳戶中,完成以下任務:

  1. 在您需要將資料表資料​​遷移到的「區域」中建立 AWS Backup 保存庫。建立保存庫時,使用您已設定的 AWS KMS 金鑰。這是與組織中其他帳戶共用的金鑰。
  2. 將 IAM 政策新增至保存庫,允許組織中的其他帳戶複製到保存庫。若要執行此操作,請選取 Allow access to a backup vault from organization (允許從組織存取備份保存庫) 選項。
  3. 建立備份計畫,以產生來源帳戶中 DynamoDB 資料表到目標帳戶的備份。對於備份保存庫,請選擇您在來源帳戶中建立的保存庫。
  4. 選取 Copy to another account's vault (複製到另一個帳戶的保存庫) 選項。
  5. 在 Assign resources (指派資源) 中,選擇 Include specific resource types (包含特定資源類型) 選項,以包含必須備份的資源。
  6. Select specific resource types (選取特定資源類型) 中,選取 DynamoDB。然後,選擇所有資料表,或僅選擇必須備份的資料表。

若要檢查您的組態並還原資料表,請完成以下步驟:

  1. 在目標帳戶中,導覽至您建立的保存庫。您可以看到復原點與來源帳戶中相同。
  2. 在目標帳戶中還原 DynamoDB 資料表

注意: 此選項僅支援屬於相同 AWS 組織的帳戶。

DynamoDB 匯出到 Amazon S3 並匯入

使用 DynamoDB 匯出至 Amazon S3 功能可在時間點復原時段內的任何時間點從 Amazon DynamoDB 資料表匯出資料。如需如何使用此功能的範例,請參閱將 Amazon DynamoDB 資料表資料匯出至 Amazon S3 中的資料湖,無需撰寫程式碼

若要使用 DynamoDB 匯出至 Amazon S3 功能,請完成下列步驟:

  1. 若要遷移 DynamoDB 資料表資料,請將資料表匯出到目標帳戶中的 Amazon S3 儲存貯體
    注意: DynamoDB 必須對此 S3 儲存貯體具有 s3:ListBucket 權限。S3 儲存貯體不能有任何拒絕存取匯出資料的存取控制清單。
  2. 將資料從 S3 儲存貯體匯入目標帳戶中的新資料表

注意: 此選項需要您設定和管理 AWS Data Pipeline、跨帳戶權限和 IAM 角色。

Amazon EMR

若要使用 Amazon EMR 將資料匯出至 S3 儲存貯體,請使用下列其中一種方法:

  • 使用 DynamoDBStorageHandler 針對 DynamoDB 資料表執行 Hive 或 Spark 查詢。如需詳細資訊,請參閱從 DynamoDB 匯出資料
  • 若要匯出或匯入 DynamoDB 資料表,請使用 GitHub 上的開放原始碼 emr-dynamodb-tool

若要使用 Amazon EMR 遷移 DynamoDB 資料表,請完成下列步驟:

  1. 在來源和目的地帳戶中啟動 EMR 叢集。在 Software configuration (軟體組態) 區段中,選擇包含 Apache Hive 的選項。
    注意: 最佳做法是將 Amazon EMR 叢集啟動至私有子網路。私有子網路必須具有 Amazon S3 VPC 端點,以及至 DynamoDB 的路由。如果叢集必須存取網際網路,請使用位於公有子網路中的 NAT 閘道。如需詳細資訊,請參閱具有私有子網路和 NAT 中的伺服器的 VPC
  2. 更新兩個帳戶中的 EMR_EC2_DefaultRole IAM 角色,以獲得寫入目的地帳戶中 S3 儲存貯體的權限。如需詳細資訊,請參閱設定 IAM 服務角色以獲取對 AWS 服務和資源的 Amazon EMR 權限
  3. 在來源帳戶中,使用 SSH 連線到領導節點。
  4. 在來源帳戶中,使用 Hive 命令將 DynamoDB 資料表資料匯出到目的地帳戶中的 S3 儲存貯體。
  5. 在目的地帳戶中,將 Amazon S3 資料匯入新的 DynamoDB 資料表
    注意: 如果您使用暫存資料表擷取遷移期間發生的寫入,請在暫存資料表上重複步驟 3 和 4。

為了減少停機時間,您可以將遷移期間發生的所有交易儲存在暫存資料表中。將來源資料表遷移至目標帳戶後,將新的交易從暫存資料表推送到目標資料表。

使用 Amazon EMR 遷移資料表所需的時間可能有所不同。此時間取決於 DynamoDB 資料表的佈建輸送量網路效能,以及儲存在資料表中的資料量。

注意: 此選項需要您建立和維護 EMR 叢集。

AWS Data Pipeline

使用 AWS Data Pipeline 將資料從 DynamoDB 資料表匯出到 Amazon S3 儲存貯體中的檔案。此選項會在 Amazon EMR 中執行受管 Hadoop 叢集,以在 DynamoDB 和 Amazon S3 之間執行讀取和寫入。

注意: 此選項需要您設定和管理 AWS Data Pipeline、跨帳戶權限和 IAM 角色。

Amazon S3 和 AWS Glue

AWS Glue ETL 作業支援從另一個帳戶的 DynamoDB 資料表讀取資料,並將資料寫入另一個帳戶的 DynamoDB 資料表。使用 dynamodb.sts.roleArn 參數在任務指令碼中擔任跨帳戶角色。當您擔任此角色時,您將獲得必須用於跨帳戶存取 DynamoDB 的暫時憑證。如需詳細資訊,請參閱 DynamoDB 資料表的跨帳戶跨區域存取以及如何使用 AWS Step Functions 和 AWS Glue 將 Amazon DynamoDB 資料表匯出至 Amazon S3

注意: 此選項需要使用大量 Spark,並需要您維護 AWS Glue ETL 作業的原始程式碼。如需詳細資訊,請參閱 DynamoDB 連線

自訂匯出和匯入指令碼

對於大約 2 GB 的較小資料集或一次性傳輸,您可以使用手動匯出和匯入程序。例如,您可以使用利用 DynamoDB Scan 作業的 C# 程式碼從來源資料表中讀取項目。然後,程式碼會使用 BatchWriteItem API 呼叫將資料寫入目標帳戶中的目的地資料表。

注意: 對於大型資料集來說,這個過程可能非常耗時,並且需要自訂指令碼。對於執行指令碼的 IAM 實體,您必須設定跨帳戶 S3 存取

相關資訊

如何將我的 Amazon DynamoDB 資料表從一個 AWS 帳戶遷移到另一個 AWS 帳戶?

如何將 DynamoDB 資料表備份至 Amazon S3?

AWS 官方已更新 1 年前