嗨,我正在.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。有人可以帮我执行上述功能吗?任何帮助,将不胜感激。谢谢
答案 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);}
希望您对问题进行了排序。