簡體   English   中英

Python 將文件從 AWS S3 移動到 SMB 共享

[英]Python Move Files from AWS S3 to SMB Share

我目前正在嘗試編寫 Python 代碼來在 AWS S3 存儲桶和 AWS FSx Windows SMB 共享之間傳輸文件。 這將用於 Lambda function。

我可以通過使用 Lambda 臨時存儲 /tmp 並將文件從 S3 傳輸到 /tmp 然后從 /tmp 傳輸到 SMB 共享來實現這一點,但是將文件直接從 S3 傳輸到 SMB 共享會更有效。 我可以使用 Python AWS BOTO3 SDK 使用以下代碼直接從 S3 存儲桶打開文件:

fileobj = s3client.get_object(
    Bucket=bucketname,
    Key = file_to_read) 

然后,我嘗試使用來自 pysmb ZEFE90A8E604A7C840E88D03A67F6B7D8 的 Python SMBConnection class 使用以下代碼將 S3 文件的內容寫入 SMB 共享:

connection.storeFile(service_name='s3-test', 
                     path='test-write.txt',
                     file_obj = fileobj["Body"])

在 SMB 共享上成功創建了 test-write.txt 文件,但它是空的,大小為 0。 沒有錯誤,程序成功完成。 我認為這一定與 file_obj 所期望的 python“類文件對象”有關。 由於沒有錯誤,我假設我使用的 fileobj["Body"]) 是正確的嗎?

任何想法都會非常受歡迎?

問題可能來自錯誤的指針 position 方法嘗試寫入。

可以使用文件 object 的查找方法更改文件指針的 position。

在這樣寫之前放置seek(0)行。

file_obj.seek(0)
connection.storeFile(...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM