Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.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
C# 如何通过lambda函数中的部分将归档文件流式传输到S3?_C#_.net_Amazon Web Services_Amazon S3_Aws Lambda - Fatal编程技术网

C# 如何通过lambda函数中的部分将归档文件流式传输到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

我在AmazonS3存储器中存储了很多用户文件。我必须按要求向用户提供所有这些文件

为此,我实现了lambda函数,该函数收集用户文件的路径,创建一个zip归档文件,并将该归档文件存储回s3。用户可以下载它的地方

我的代码如下所示:

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不是一个好的用例