我正在尝试将.zip文件解压缩到s3存储桶中,而不将其下载到计算机上,然后将其复制到另一个s3存储桶中。
我已经将文件复制到另一个存储桶中,现在只需要解压缩即可。
我是python的新手,所以如果您能同时解释它,那就太好了!
import boto3
# set buckets
s3bucket = mybucket
otherbucket = prodbucket
# pass the access keys as variables into the boto session
session = Session(aws_access_key_id=awsAccessKeyID,
aws_secret_access_key=awsSecretAccessKey)
# specify s3 connection
s3 = session.resource('s3')
your_bucket = s3.Bucket(s3bucket)
# set main bucket as copy source
copy_source = {
'Bucket': s3bucket,
'Key': mykey
}
# set staging bucket as bucket variable
bucket = s3.Bucket(otherbucket)
# copy files from main bucket and set the key
bucket.copy(copy_source, otherkey)
答案 0 :(得分:1)
在这里对此进行了很好的解释: How to extract files in S3 on the fly with boto3?
S3本身不会修改文件。您可以选择以下选项:下载,使用代码在本地提取内容,上传(您认为不建议使用)或触发AWS Lambda函数,该函数使用代码将文件提取到云中的临时空间中,然后上传到你的水桶。
无论哪种方式,您都需要使用zipfile库的python代码,这只是在计算机上运行代码或在AWS资源(Lambda)上运行代码的问题。
Lambda入门: https://docs.aws.amazon.com/lambda/latest/dg/getting-started-create-function.html
使用zipfile示例提取Zipfile: https://docs.python.org/3/library/zipfile.html