如何在S3中创建数据并将其上传到JSON文件?

时间:2019-11-16 10:14:03

标签: c# amazon-s3 .net-core

嗨,我正在.Net核心中编写Lambda函数。我的要求是Post api将发送员工数据。接收到数据后,我要将其存储在S3存储桶中。我所遵循的方法是,只要Api将数据发送到lambda,Empid都是唯一的。每次我要创建一个json文件时,文件名应等于emp id。我正在尝试按以下方式编写函数。

public async Task<string> FunctionHandler(Employee input, ILambdaContext context)
        {
            string bucketname = "someunquebucket";
            var client = new AmazonS3Client();
            bool doesBucketExists = await AmazonS3Util.DoesS3BucketExistV2Async(client,bucketname);
            if(!doesBucketExists)
            {
                var request = new PutBucketRequest
                {
                    BucketName = "someunquebucket",
                };
            var response = await client.PutBucketAsync(request);
            }
            using (var stream = new MemoryStream(bin))
            {
                var request = new PutObjectRequest
                {
                    BucketName = bucketname,
                    InputStream = stream,
                    ContentType = "application/json",
                    Key = input.emp_id
                };
            var response = await client.PutObjectAsync(request).ConfigureAwait(false);
            }
        }

在上面的代码中,PutObjectRequest用于将数据写入s3存储桶。我添加了一些参数,例如bucketname等。在该函数中,我正在接收Employee数据。现在我想用emp id创建json文件。我找到了上面的代码,但是我不确定用什么代替bin。有人可以帮我执行上述功能吗?任何帮助,将不胜感激。谢谢

1 个答案:

答案 0 :(得分:0)

.Net Core是我的新手,在尝试解决类似问题时遇到了您的帖子。

这是我能够将json响应字符串上载到s3存储桶的方法(希望有帮助)

String timeStamp = DateTime.Now.ToString("yyyyMMddHHmmssfff");
byte[] byteArray = Encoding.ASCII.GetBytes(jsonString);
var seekableStream = new MemoryStream(byteArray);
seekableStream.Position = 0;
var putRequest = new PutObjectRequest
{
    BucketName = this.BucketName,
    Key = timeStamp+"_"+reg + ".json",
    InputStream = seekableStream
};
try
{
var response2 = await this.S3Client.PutObjectAsync(putRequest);}

希望您对问题进行了排序。