amazon-web-services - 如何使用boto3快速提取S3中的文件?

标签 amazon-web-services amazon-s3 aws-lambda

我正在尝试找到一种动态提取S3中的.gz文件的方法,无需将其下载到本地,提取然后将其推回S3。

使用boto3 + lambda,我如何实现我的目标?

我在boto3文档中没有看到任何摘录部分。

最佳答案

Amazon S3是一项存储服务。没有内置的功能来处理文件的内容。

但是,您可以使用AWS Lambda函数从S3检索对象,将其解压缩,然后再次上传内容。但是,请注意,Lambda的临时磁盘空间限制为500MB,因此请避免解压缩太多数据。

您可以将S3存储桶配置为在存储桶中创建新文件时触发Lambda函数。然后,Lambda函数将:


使用boto3(假设您喜欢Python)下载新文件
使用zipfile Python库提取文件
使用boto3上传生成的文件


样例代码

import boto3

s3 = boto3.client('s3', use_ssl=False)
s3.upload_fileobj(
    Fileobj=gzip.GzipFile(
        None,
        'rb',
        fileobj=BytesIO(
            s3.get_object(Bucket=bucket, Key=gzip_key)['Body'].read())),
    Bucket=bucket,
    Key=uncompressed_key)

关于amazon-web-services - 如何使用boto3快速提取S3中的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51276201/

相关文章:

amazon-web-services - k8s从集群获取资源花费太多时间

java - Mule 和 Java - 字节 [] 到文件

ruby-on-rails - Amazon S3 只接受标题中没有空格、没有数字的文件?

java - 将 accessdb 表导出到 csv

aws-lambda - 如何使用现有环境生成 AWS CloudFormation

amazon-web-services - AWS 弹性 Beanstalk : terminate RDS then fail to update application version

scala - 由 : java. lang.ClassNotFoundException : org. jets3t.service.ServiceException 引起

amazon-web-services - 了解 AWS 安全组上的 Source 属性

amazon-web-services - 如何在Gradle中命名构建工件的任意名称?

amazon-web-services - 如何从另一个 AWS 账户访问公共(public) S3 存储桶?