解压缩.zip文件并使用python和boto 3传输到s3存储桶

时间:2019-05-14 17:16:47

标签: python-3.x amazon-s3 boto3

我正在尝试将.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)

1 个答案:

答案 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