【发布时间】:2022-08-17 08:52:49
【问题描述】:
我编写了一个在 s3 存储桶中上传文件的函数。当我在本地运行我的应用程序时它工作正常。
但是当我在 AWS Lambda 中部署应用程序时,文件上传工作正常,但文件已损坏。上传的文件大小略高于实际文件大小。
txt 文件上传工作正常。
这是我的代码
Guid guid = Guid.NewGuid();
string extension = System.IO.Path.GetExtension(logo.FileName);
var fileName = $\"{guid}{extension}\";
using (var ms = new System.IO.MemoryStream())
{
logo.CopyTo(ms);
ms.Position = 0;
System.IO.Stream stream = ms;
var client = new AmazonS3Client(AppConstants.S3AccessKey, AppConstants.S3SecretKey, Amazon.RegionEndpoint.USEast1);
PutObjectRequest putRequest = new PutObjectRequest
{
BucketName = AppConstants.S3Bucket,
Key = fileName,
InputStream = stream
};
PutObjectResponse response = await client.PutObjectAsync(putRequest);
}
我已经配置了API Gateway for binary data 并使用以下代码更改了 LambdaEntryPoint
RegisterResponseContentEncodingForContentType(\"multipart/form-data\", ResponseContentEncoding.Base64);
还有其他我错过的配置吗?
-
据我所知,AWS 建议使用预签名 URL 进行此类操作。你不能使用它们吗?此外,base64 也可能已损坏,可能会添加二进制媒体类型/到网关可以解决这个问题吗?
标签: amazon-s3 file-upload aws-lambda aws-sdk asp.net-core-3.1