将临时文件存储在 .net lambda 中,然后发布到 s3 Bucket

Store temp file in .net lambda and then publish to s3Bucket

我正在生成一个 .csv 文件,以便使用 .net c# Lambda 函数进一步存储在 s3 存储桶中。

这是我遵循的流程:

  1. 生成 .csv 并将其存储在 lambda 函数执行的 /tmp/ 文件夹中。 在此步骤中,我不确定它是否真的将文件保存在该路径中。

        //filepath = @"/tmp/test.csv"
        try
        {
            using (System.IO.StreamWriter file = new System.IO.StreamWriter(@filepath, true))
            {
    
                file.WriteLine(ID + "," + workItemType + "," + title + "," + assignedTo + "," + state + "," + iterationPath);                    
                Console.WriteLine("Successfully added");
            }
        }
        catch (Exception ex)
        {
            throw new ApplicationException(" somethings wrong: ", ex);
        }
    
  2. 将文件上传到 s3 存储桶。

        try
        {
            await client.PutObjectAsync(new Amazon.S3.Model.PutObjectRequest
            {
                BucketName = "mys3bucket",
                Key = "test.csv",
                ContentType = @"/tmp/test.csv"
            });
        await Task.CompletedTask;
        }
        catch (Exception ex)
        {
            Console.WriteLine("Exception in PutS3Object:" + ex.Message);                ;
        }
    

在这最后一步中,我收到此错误消息:

Exception in PutS3Object:The format of value '\tmp\test.csv' is invalid.

我做错了什么?

您需要发送 数据 以包含在 csv 文件中:

    await client.PutObjectAsync(new Amazon.S3.Model.PutObjectRequest
    {
        BucketName = "mys3bucket",
        Key = "test.csv",
        ContentBody = DATAINSTRINGFORMAT,
        ContentType = @"text/csv"
    });

或作为文件路径发送:

    await client.PutObjectAsync(new Amazon.S3.Model.PutObjectRequest
    {
        BucketName = "mys3bucket",
        Key = "test.csv",
        FilePath = FILEPATHONYOURTEMPFOLDER,
        ContentType = @"text/csv"
    });