【问题标题】:Python Move Files from AWS S3 to SMB SharePython 将文件从 AWS S3 移动到 SMB 共享
【发布时间】:2022-01-09 04:17:40
【问题描述】:

我目前正在尝试编写 Python 代码来在 AWS S3 存储桶和 AWS FSx Windows SMB 共享之间传输文件。这将在 Lambda 函数中使用。

我可以通过使用 Lambda 临时存储 /tmp 并将文件从 S3 传输到 /tmp,然后从 /tmp 传输到 SMB 共享来实现这一点,但是将文件直接从 S3 传输到 SMB 会更有效分享。 我可以使用 Python AWS BOTO3 SDK 使用以下代码直接从 S3 存储桶打开文件:

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

然后,我尝试使用 pysmb 包中的 Python SMBConnection 类通过以下代码将 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"]) 是正确的?

欢迎提出任何想法?

【问题讨论】:

    标签: python amazon-web-services amazon-s3 aws-lambda smb


    【解决方案1】:

    问题可能来自方法尝试写入的错误指针位置。

    文件指针的位置可以通过文件对象的seek方法改变。

    在这样写之前放seek(0)行。

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

    【讨论】:

    • 感谢您的建议。但是boto3 get_object没有公开seek方法。
    猜你喜欢
    • 2021-05-22
    • 2013-12-24
    • 2020-07-19
    • 1970-01-01
    • 2021-03-06
    • 2022-12-28
    • 2018-07-26
    • 2019-02-18
    • 2014-03-11
    相关资源
    最近更新 更多