[英]Upload and download file wrt specific version from AWS S3 bucket using Python3
我需要從 AWS S3 存儲桶上傳和下載文檔並且該文檔將定期更新(每天/每周/每月)並包含跟蹤它的版本。
想寫程序上傳下載帶版本的文件。 不知道我們如何使用 Python 和 Boto3 來實現。
想法 1) 在 S3 存儲桶中創建版本作為文件夾的文件夾結構並將文件存儲在其中,當用戶需要任何版本特定文件時,將 go 到該版本文件夾並獲取它。 但是如果用戶在沒有指定的情況下要求最新版本呢? 我不想每次都在 UI 或后端中硬編碼最新版本。
Ex- S3_Bucket/Document1/version_name/file_name.txt
想法 2) 在 RDS 中創建表來存儲版本、s3 路徑位置、上傳日期和 is_latest(boll) 列。 然后用戶要求任何版本或最新文件,我將首先查詢數據庫,然后從 S3 檢索文件並共享。
EX - RDS 表
版本 | 上傳日期 | is_latest | S3 文件路徑 |
---|---|---|---|
2.3.4 | 當前日期(默認) | 時間/時間 | S3_Bucket/Doc1/version_name/file_name.txt |
這些只是我的想法,請建議我實現這一目標的正確或最佳 pythonic 方法。 只想使用 Python + Boto3 package。
我想為您的要求提供一些替代方案。 AWS S3 能夠執行版本控制[1] 。 版本控制意味着您可以提供相同的文件名,S3 將在其端處理版本控制。 這是通過為文件的每個版本賦予唯一的 ID 值來實現的。 您可以使用 boto3 將數據上傳到 S3,如他們的文檔[2]中所述。 然后,您還可以使用 boto3 [3]通過引用文件的版本 ID 下載文件的特定版本。
可以在 Boto3 中識別 S3 對象的版本 ID,如下所示:
import boto3
s3 = boto3.resource('s3')
object = s3.Object('bucket_name', 'key')
print(object.version_id)
默認情況下,如果您不指定版本 ID,您將收到最新的文件。
參考:
[2] https://boto3.amazonaws.com/v1/documentation/api/latest/guide/s3-uploading-files.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.