本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
請求在 DynamoDB 中匯出資料表
DynamoDB 表格匯出可讓您將表格資料匯出到 Amazon S3 儲存貯體,讓您能夠使用其他 AWS 服務 (例如 Athena、Amazon、Amazon SageMaker、 AWS Glue亞馬遜 EMR 和) 對資料執行分析和複雜查詢。 AWS Lake Formation您可以使用 AWS Management Console、或 DynamoDB API 請求資料表匯出。 AWS CLI
注意
不支援請求者支付 Amazon S3 儲存貯體費用。
DynamoDB 同時支援完整匯出和增量匯出:
-
透過完整匯出,您可以將表格的完整快照從 point-in-time 復原 (PITR) 時段內的任何時間點匯出到 Amazon S3 儲存貯體。
-
使用增量匯出時,您可以將 PITR 時段中指定期間內變更、更新或刪除的 DynamoDB 資料表中的資料匯出至 Amazon S3 儲存貯體。
主題
必要條件
啟用 PITR
若要使用匯出至 S3 功能,您必須在表格上啟用 PITR。如需如何啟用 PITR 的詳細資訊,請參閱 P oint-in-time 復原。如果您要求匯出未啟用 PITR 的資料表,您的要求將失敗,並顯示例外狀況訊息:「呼叫ExportTableToPointInTime
作業時發生錯誤 (PointInTimeRecoveryUnavailableException):表格 'my-dynamodb-table」未啟用時間點復原。
設定 S3 許可
您可以將資料表資料匯出至您擁有寫入許可的任何 Amazon S3 儲存貯體。目的地值區不需要位於相同的 AWS 區域,也不需要與來源資料表擁有者擁有相同的擁有者。您的 AWS Identity and Access Management (IAM) 政策需要允許您執行 S3 動作 (s3:AbortMultipartUpload
s3:PutObject
、和s3:PutObjectAcl
) 和 DynamoDB 匯出動作 (dynamodb:ExportTableToPointInTime
)。以下是範例政策範例,該政策將授與您的使用者執行匯出至 S3 儲存貯體的權限。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowDynamoDBExportAction", "Effect": "Allow", "Action": "dynamodb:ExportTableToPointInTime", "Resource": "arn:aws:dynamodb:us-east-1:111122223333:table/my-table" }, { "Sid": "AllowWriteToDestinationBucket", "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::your-bucket/*" } ] }
如果您需要寫入另一個帳戶中的 S3 儲存貯體,或者您沒有寫入權限,則 S3 儲存貯體擁有者必須新增儲存貯體政策,以允許您從 DynamoDB 匯出到該儲存貯體。以下是目標 S3 儲存貯體的範例政策。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ExampleStatement", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/Dave" }, "Action": [ "s3:AbortMultipartUpload", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::awsexamplebucket1/*" } ] }
在匯出過程中撤銷這些許可會產生部分檔案。
注意
如果您要匯出的目標資料表或儲存貯體使用客戶受管金鑰加密,該 KMS 金鑰的政策必須允許 DynamoDB 使用該金鑰。此許可是透過觸發匯出任務的 IAM 使用者/角色授予。如需有關加密及其最佳實務的詳細資訊,請參閱 DynamoDB 如何使用 AWS KMS 以及使用自訂 KMS 金鑰
使用 AWS Management Console請求匯出
以下範例示範如何使用 DynamoDB 主控台匯出名為 MusicCollection
的現有資料表。
注意
此程序假設您已啟用 point-in-time 復原。若要為MusicCollection
表格啟用此功能,請在表格的「總覽」頁籤的「表格詳細資訊」段落中,選擇啟用 P oint-in-time 復原功能。
請求資料表匯出
登入 AWS Management Console 並開啟 DynamoDB 支援主控台,網址為 https://console.aws.amazon.com/dynamodb/。
-
在主控台左側的導覽窗格中,選擇 Exports to S3 (匯出至 S3)。
-
選取匯出至 S3 按鈕。
-
選擇來源資料表和目的地 S3 儲存貯體。如果您的帳戶擁有該目的地儲存貯體,您可以使用 Browse S3 (瀏覽 S3) 按鈕尋找它。如果不是,請使用
s3://
輸入儲存貯體的 URL;bucketname
/prefix
format.prefix
是有助於您整理目的地儲存貯體的選用資料夾。 -
選擇完整匯出或增量匯出。完整匯出會輸出資料表在您所指定時間點的完整資料表快照。增量匯出會輸出在指定匯出期間對資料表所做的變更。您的輸出已壓縮,因此它僅包含匯出期間內項目的最終狀態。即使項目在同一匯出期間內有多個更新,該項目也只會在匯出中出現一次。
-
選擇「匯出」開始。
匯出的資料在交易上不一致。您的交易操作可以在兩個導出輸出之間切斷。匯出中反映的交易作業可以修改項目子集,而同一筆交易中的另一個修改子集則不會反映在相同的匯出要求中。不過,匯出最後會是一致的。如果交易在匯出期間遭到撕裂,您將會在下一個連續匯出中保留剩餘的交易,而不會有重複項目。用於匯出的期間是以內部系統時鐘為基礎,且可能與您的應用程式本機時鐘相差一分鐘。
獲取有關過去出口的詳細信息 AWS Management Console
您可以選擇導覽側邊欄中的 [匯出至 S3] 區段,找到過去執行的匯出工作的相關資訊。此區段包含您在過去 90 天內建立的所有匯出清單。選取匯出索引標籤中所列工作的 ARN,以擷取有關該匯出的資訊,包括您選擇的任何進階組態設定。請注意,雖然匯出任務中繼資料會在 90 天後過期,也無法在此清單中找到早於該時間的任務,但只要儲存貯體政策允許,S3 儲存貯體中的物件就會保留。DynamoDB 絕不會刪除在匯出時其在您的 S3 儲存貯體中建立的任何物件。
使用 AWS CLI請求匯出
下列範例示範如何使用將名 AWS CLI 為的現有資料表匯出MusicCollection
至名為的 S3 儲存貯體ddb-export-musiccollection
。
注意
此程序假設您已啟用 point-in-time 復原。若要針對 MusicCollection
資料表啟用程序,請執行下列命令。
aws dynamodb update-continuous-backups \ --table-name MusicCollection \ --point-in-time-recovery-specification PointInTimeRecoveryEnabled=True
注意
如果您選擇使用受 AWS Key Management Service (AWS KMS) 保護的金鑰加密匯出,金鑰必須與目的地 S3 儲存貯體位於相同的區域。
獲取有關過去出口的詳細信息 AWS CLI
使用 list-exports
命令即可找到您過去曾執行之匯出請求的相關資訊。此命令會傳回您在過去 90 天內建立的所有匯出清單。請注意,雖然匯出任務中繼資料會在 90 天後過期,也無法使用 list-exports
命令傳回早於該時間的任務,但只要儲存貯體政策允許,S3 儲存貯體中的物件就會保留。DynamoDB 絕不會刪除在匯出時其在您的 S3 儲存貯體中建立的任何物件。
在匯出成功或失敗之前,其狀態會是 PENDING
。如果成功,狀態會變更為COMPLETED
。如果失敗,狀態會變更為FAILED
failure_message
與failure_reason
。
在以下範例中,我們使用選用 table-arn
參數,只列出特定資料表的匯出資料。
aws dynamodb list-exports \ --table-arn arn:aws:dynamodb:us-east-1:123456789012:table/ProductCatalog
若要擷取特定匯出任務的詳細資訊 (包括任何進階組態設定),請使用 describe-export
命令。
aws dynamodb describe-export \ --export-arn arn:aws:dynamodb:us-east-1:123456789012:table/ProductCatalog/export/01234567890123-a1b2c3d4
使用 AWS SDK 請求匯出
您可以使用這些程式碼片段,使用您選擇的 AWS SDK 要求匯出資料表。
使用 AWS SDK 獲取有關過去導出的詳細信息
您可以使用這些程式碼片段,取得有關使用您選擇的 AWS SDK 過去表格匯出的詳細資訊。