gpt4 book ai didi

amazon-web-services - AWS Lambda 解压缩 gzip 文件而不将文件保存在本地

转载 作者:行者123 更新时间:2023-12-02 03:56:12 33 4
gpt4 key购买 nike

我正在尝试从 S3 存储桶 (.gzip) 获取文件并将其解压缩到另一个存储桶。如果不将文件保存在本地(我的电脑)上,我无法找到一种方法。有没有办法在 Lambda 上“保存”文件并直接在 S3 上解压缩?谢谢!

最佳答案

例如,这是一个 lambda 代码 ( gist ):

let path = require('path');
let aws = require('aws-sdk');
let s3Client = new aws.S3();
let zlib = require('zlib');
let s3s = require('s3-streams');

const output_bucket = "stackoverflow-bucket";

exports.handler = (event, context, callback) => {
context.callbackWaitsForEmptyEventLoop = false;

event.Records.forEach(record => {
const params = {
Bucket: record.s3.bucket.name,
Key: record.s3.object.key
};

const isGzip = path.extname(params.Key) === ".gz";
let readStream = s3Client.getObject(params).createReadStream();

readStream = isGzip ? readStream.pipe(zlib.createGunzip()) : readStream;
writeStream = s3s.WriteStream(s3Client, { Bucket: output_bucket, Key: path.basename(params.Key, ".gz") });

// begins the actual streaming
readStream.pipe(writeStream);

writeStream.on('end', () => {
callback(null, `Handled ${JSON.stringify(params)}`);
});
});
};

请注意,此代码使用第 3 方库将字节流式传输到 S3(Node.JS SDK 本身不支持)。

为此,文档页面 here ,它描述了在将 lambda 上传到 AWS 之前应该如何打包它。

您可以设置一个 S3 事件来在新文件放入您的源存储桶时触发您的 lambda:

enter image description here

关于amazon-web-services - AWS Lambda 解压缩 gzip 文件而不将文件保存在本地,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43863853/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com