amazon-web-services - 如何使用 C# 从 S3 存储桶中读取和处理大型文本/CSV 文件?

标签 amazon-web-services amazon-s3 aws-lambda asp.net-core-6.0

我正在尝试使用以下代码从 s3 存储桶中读取 15 MB CSV 文件。

ListObjectsResponse object1 = await S3Client.ListObjectsAsync("mybucket");
foreach (S3Object s3File in object1.S3Objects)
{
    var response = await S3Client.GetObjectAsync("mybucket", s3File.Key);

    var request = new GetObjectRequest()
    {
        BucketName = "mybucket",
        Key = files.Key
    };

    using (var res = S3Client.GetObjectAsync(request))
    {
        StreamReader sReader = new StreamReader(res.Result.ResponseStream); //Time out here
         string? line = sReader.ReadLine();
    }
}

以上代码适用于较小的文件。但如果文件有超过 100K+ 行,则 lambda 函数在 aws 控制台中超时。我想处理 s3 存储桶文件中的所有行。

能否让我知道实现这个的最佳方法?

最佳答案

增加您的 Lambda 超时,它(目前)的硬限制为 15 minutes .

如果您的 CSV 处理时间超过 15 分钟,Lambda 函数不是适合您的工作的解决方案 - 它们旨在快速处理。

什么是正确的解决方案超出了范围,但您或许可以利用现场 EC2 实例、步骤函数、在 Fargate 上运行容器等。

相关:为了加快您当前的流程,在开始时向 S3 发出并行请求,然后一次性处理,即创建任务,然后立即await

关于amazon-web-services - 如何使用 C# 从 S3 存储桶中读取和处理大型文本/CSV 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71902888/

相关文章:

amazon-web-services - 如何通过Jenkins在EKS中部署kubernetes应用程序

ruby-on-rails - 使用 Heroku 和 Rails 代理来自 S3 的文件

node.js - 为什么这个 AWS lambda 会导致错误 : WARNING: Callback/response already delivered

git - eb deploy --staged 用法

amazon-web-services - 具有自定义授权方的 AWS API Gateway 返回 AuthorizerConfigurationException

java - 将大文件上传到 Amazon S3 时出现问题

amazon-s3 - 允许用户从 AWS s3 或 Cloudfront 批量下载文件

amazon-web-services - 每个 AWS Lambda 的最大事件源映射数是多少?

aws-lambda - 无服务器 : Custom Lambda Function name

amazon-web-services - 如何在不使用.pem文件的情况下SSH到EC2