Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 解压.zip文件并使用python和BOTO3传输到s3 bucket_Python 3.x_Amazon S3_Boto3 - Fatal编程技术网

Python 3.x 解压.zip文件并使用python和BOTO3传输到s3 bucket

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

我正在尝试解压缩s3存储桶中的.zip文件,而不将其下载到我的计算机,并将其复制到另一个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)

这在这里得到了很好的解释:

S3本身不修改文件。这样,您就可以选择下载、使用代码在本地提取内容、上载(您声明这不是首选)或触发AWS Lambda函数,该函数使用代码将文件提取到云中的临时空间,然后将其上载到您的bucket

无论哪种方式,您都需要使用zipfile库的python代码,只需在您的计算机上运行代码,或者在AWS资源(Lambda)上运行代码即可

Lambda入门:

使用Zipfile示例提取Zipfile:

旁注:AWS Lambda函数的最大可用磁盘空间为500MB(在
/tmp/
中)。如果zip文件+解压文件需要的不止这些,那么使用Lambda是不合适的。(您可能可以将zip文件保存在内存中,而不是磁盘中,但这很棘手。)