【发布时间】:2021-11-30 17:33:38
【问题描述】:
我正在尝试使用下面的代码在 s3 上压缩文件,问题是,文件似乎已创建,但是当我尝试打开 zip 文件时,它显示存档无效的错误。 知道我在这里做错了什么......
我使用的代码如下...
def upload_zip_file(event,context):
try:
bucket_name ="s3_bucket"
bucket_path ="files"
s3 = boto3.client('s3')
data_io = BytesIO()
filename = "FILE.zip"
funct_name ="FILE.json"
zip_buffer = io.BytesIO()
with zipfile.ZipFile(zip_buffer, "a", zipfile.ZIP_DEFLATED, False) as zipper:
infile_object = s3.get_object(Bucket=bucket_name, Key=bucket_path +"/"+ funct_name)
infile_content = infile_object['Body'].read()
zipper.writestr(filename, infile_content)
s3.put_object(Bucket=bucket_name, Key=bucket_path +"/"+filename, Body=zip_buffer.getvalue())
except Exception:
print(traceback.format_exc())
【问题讨论】:
-
通过阅读您发布的代码,我推断处理正在 aws lambda 函数中完成,对吗?
-
是的,没错
-
你能从给定的 s3 存储桶下载文件吗?
-
是的,fly 是在 s3 上创建的,我可以下载它...
-
当你说“当我尝试打开 zip 文件时”时,我对你的意思感到困惑,从分配给
funct_name的字符串文字来看,看起来代码读取了一个 json 文件,不一定是 zip 文件,即代码 写入 到 zip 文件。这是代码的正确意图吗?