如何将内存中的 zip 文件上传到 S3 存储桶

Cal*_*mar 6 python amazon-s3 amazon-web-services boto3

我正在尝试将内存中的 zip 文件上传到 S3 存储桶(以避免服务器上出现临时文件)。

这是我的代码:

import zipfile
import io
zip_bytes_io = io.BytesIO()
zip_archive = zipfile.ZipFile(zip_bytes_io, mode='a',
                              compression=zipfile.ZIP_DEFLATED)
zip_archive.writestr('test.txt', b'My string')
s3_client = boto3.client('s3')
zip_bytes_io.seek(0)  # So that bytes are read from beginning
s3_client.upload_fileobj(zip_bytes_io, test_bucket, 'test.zip')
Run Code Online (Sandbox Code Playgroud)

当我运行上面的代码时,它确实将文件上传到 S3 存储桶。但是,当我下载该文件时,我无法解压缩它。我收到错误:“错误 1 ​​- 不允许操作。”

我认为这是因为我一开始就没有正确上传文件。任何帮助表示赞赏:)

cam*_*ack 0

在线查找Error 1 - operation not permitted.错误时,看起来可能是Mac-os打开 zip 文件的问题?

尝试以不同的方式打开文件?