我正在嘗試使用以下代碼從 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 存盤桶檔案中的所有行。
請讓我知道實作這一點的最佳方法嗎?
uj5u.com熱心網友回復:
增加您的 Lambda timeout,(目前)有15 分鐘的硬限制。
如果您的 CSV 處理時間超過 15 分鐘,則 Lambda 函式不是適合您的作業的解決方案 - 它們用于快速處理。
什么是正確的解決方案超出了范圍,但您也許可以利用現貨 EC2 實體、步進函式、在 Fargate 上運行容器等。
相關:為了加快您當前的流程,在開始時向 S3 發出并行請求,然后一次性處理,即創建任務,然后await一次完成所有任務。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/458809.html
標籤:亚马逊网络服务 亚马逊-s3 aws-lambda asp.net-core-6.0
