[英]Copy 3 million S3 files to specific folders
我的 s3 存儲桶中的一個文件夾中有 300 萬個文件。 我想根據它們在我的數據庫中的分配將這些文件復制到同一存儲桶中的特定文件夾。 最可行的方法是什么。
我有這段代碼,它使用 Javascript AWS SDK 創建復制請求:
let copyRequest = {
CopySource: encodeURI("bucket-name" + "/" + fileToMove.rows[0].Container + "/" +
fileToMove.rows[0].FileId),
Bucket: "bucket-name",
Key: encodeURI(new-folder-name-based-on-specific-file + "/" + fileToMove.rows[0].FileId)
}
// Copy files over
await s3Client.copyObject(copyRequest).promise();
是否有 AWS 服務或方法來批處理這些文件,因為 300 萬個單獨的復制請求似乎不可行,至少是連續的。
Amazon S3 批量操作可以對大量對象執行操作。
復制操作復制清單中指定的每個object 。 您可以將對象復制到同一 AWS 區域中的存儲桶或不同區域中的存儲桶。 S3 批量操作支持大多數可通過 Amazon S3 復制對象的選項。 這些選項包括設置 object 元數據、設置權限和更改對象的存儲 class。
您應該可以在清單文件中指定當前密鑰和新密鑰(但我自己沒有嘗試過)。
由於您的數據庫中有此信息,因此您需要從數據庫中導出數據以創建清單文件。 然后您可以將該文件提供給批量操作作業。
我建議您首先創建一個只有兩個對象(具有不同的目標文件夾)的清單。 如果可行,那么您可以創建一個更大的文件。 請注意, object 的密鑰包括該文件夾,因此現有密鑰將為folder1/foo.txt
,新密鑰將為folder2/foo.txt
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.