C# 如何通过lambda函数中的部分将归档文件流式传输到S3?
我在AmazonS3存储器中存储了很多用户文件。我必须按要求向用户提供所有这些文件 为此,我实现了lambda函数,该函数收集用户文件的路径,创建一个zip归档文件,并将该归档文件存储回s3。用户可以下载它的地方 我的代码如下所示:C# 如何通过lambda函数中的部分将归档文件流式传输到S3?,c#,.net,amazon-web-services,amazon-s3,aws-lambda,C#,.net,Amazon Web Services,Amazon S3,Aws Lambda,我在AmazonS3存储器中存储了很多用户文件。我必须按要求向用户提供所有这些文件 为此,我实现了lambda函数,该函数收集用户文件的路径,创建一个zip归档文件,并将该归档文件存储回s3。用户可以下载它的地方 我的代码如下所示: using (var s3Client = new AmazonS3Client()){ using (var memoryStream = new MemoryStream()){ using (var zip = new ZipArchi
using (var s3Client = new AmazonS3Client()){
using (var memoryStream = new MemoryStream()){
using (var zip = new ZipArchive(memoryStream, ZipArchiveMode.Create, true)){
foreach (var file in m_filePathsOnS3){
var response = await s3Client.GetObjectAsync(m_sourceBucket, file);
var name = file.Split('/').Last();
ZipArchiveEntry entry = zip.CreateEntry(name);
using (Stream entryStream = entry.Open()){
await response.ResponseStream.CopyToAsync(entryStream);
}
}
}
memoryStream.Position = 0;
var putRequest = new PutObjectRequest{
BucketName = m_resultBucket,
Key = m_archivePath,
InputStream = memoryStream
};
await s3Client.PutObjectAsync(putRequest);
}
}
但是,lambda函数的最大内存分配为3008MB。因此,如果我理解正确,当我试图使归档文件超过3008MB时,就会出现问题。
我在寻找一种动态地流式传输和归档文件的方法。
目前,我只看到一种方法—将此lambda函数作为服务移动到EC2实例。您是正确的。还有一个500 MB的磁盘空间限制,这将影响这一点 因此,对于创建可能非常大的zip文件,AWS Lambda不是一个好的用例