本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
請求在 DynamoDB 中匯出資料表
DynamoDB 表格匯出可讓您將表格資料匯出到 Amazon S3 儲存貯體,讓您能夠使用其他儲存貯體對資料執行分析和複雜查詢 AWS 服務,如 Athena, AWS Glue,Amazon SageMakerEMR,Amazon 和 AWS Lake Formation。 您可以使用 AWS Management Console,該 AWS CLI,或動 DynamoDB API。
注意
不支援請求者支付 Amazon S3 儲存貯體費用。
DynamoDB 同時支援完整匯出和增量匯出:
-
透過完整匯出,您可以將資料表的完整快照從 point-in-time 復原 (PITR) 視窗內的任何時間點匯出到 Amazon S3 儲存貯體。
-
透過增量匯出,您可以將在指定時段內變更、更新或刪除的 DynamoDB 表格中的PITR資料匯出到 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) 按鈕尋找它。否則,請使用「
prefix
是選擇性資料夾」s3://
輸入值區,以協助您保持目URL的地值區井然有序。bucketname
/prefix
format. -
選擇完整匯出或增量匯出。完整匯出會輸出資料表在您所指定時間點的完整資料表快照。增量匯出會輸出在指定匯出期間對資料表所做的變更。您的輸出已壓縮,因此它僅包含匯出期間內項目的最終狀態。即使項目在同一匯出期間內有多個更新,該項目也只會在匯出中出現一次。
-
選擇「匯出」開始。
匯出的資料在交易上不一致。您的交易操作可以在兩個導出輸出之間切斷。匯出中反映的交易作業可以修改項目子集,而同一筆交易中的另一個修改子集則不會反映在相同的匯出要求中。不過,匯出最後會是一致的。如果交易在匯出期間遭到撕裂,您將會在下一個連續匯出中保留剩餘的交易,而不會有重複。用於匯出的期間是以內部系統時鐘為基礎,且可能與您的應用程式本機時鐘相差一分鐘。
獲取有關過去出口的詳細信息 AWS Management Console
您可以選擇導覽側邊欄中的 [匯出至 S3] 區段,找到過去執行的匯出工作的相關資訊。此區段包含您在過去 90 天內建立的所有匯出清單。選取「匯出」標籤中列出ARN的工作,以擷取有關該匯出的資訊,包括您選擇的任何進階組態設定。請注意,雖然匯出任務中繼資料會在 90 天後過期,也無法在此清單中找到早於該時間的任務,但只要儲存貯體政策允許,S3 儲存貯體中的物件就會保留。DynamoDB 絕不會刪除在匯出時其在您的 S3 儲存貯體中建立的任何物件。
使用要求匯出 AWS CLI
下面的例子演示了如何使用 AWS CLI 以匯出名為的 S3 儲存貯體MusicCollection
的現有資料表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你的選擇。