Python 3.x 解压.zip文件并使用python和BOTO3传输到s3 bucket
我正在尝试解压缩s3存储桶中的.zip文件,而不将其下载到我的计算机,并将其复制到另一个s3存储桶 我已经将文件复制到另一个存储桶,现在我只需要解压缩它 我是python新手,所以如果你也能解释一下,那就太棒了Python 3.x 解压.zip文件并使用python和BOTO3传输到s3 bucket,python-3.x,amazon-s3,boto3,Python 3.x,Amazon S3,Boto3,我正在尝试解压缩s3存储桶中的.zip文件,而不将其下载到我的计算机,并将其复制到另一个s3存储桶 我已经将文件复制到另一个存储桶,现在我只需要解压缩它 我是python新手,所以如果你也能解释一下,那就太棒了 import boto3 # set buckets s3bucket = mybucket otherbucket = prodbucket # pass the access keys as variables into the boto session session = S
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)
这在这里得到了很好的解释: S3本身不修改文件。这样,您就可以选择下载、使用代码在本地提取内容、上载(您声明这不是首选)或触发AWS Lambda函数,该函数使用代码将文件提取到云中的临时空间,然后将其上载到您的bucket 无论哪种方式,您都需要使用zipfile库的python代码,只需在您的计算机上运行代码,或者在AWS资源(Lambda)上运行代码即可 Lambda入门: 使用Zipfile示例提取Zipfile:
旁注:AWS Lambda函数的最大可用磁盘空间为500MB(在
/tmp/
中)。如果zip文件+解压文件需要的不止这些,那么使用Lambda是不合适的。(您可能可以将zip文件保存在内存中,而不是磁盘中,但这很棘手。)