У меня проблема с платформой .NET Core 2.0, связанная с загрузкой файлов изображений в S3 с помощью AWS SDK.
Когда я выполняю POST на своей конечной точке, работающей на локальной IIES, она работает отлично, и яможет увидеть сгенерированный файл в S3 без каких-либо проблем.
Проблема заключается в следующем: после развертывания без сервера на AWS Lambda та же самая конечная точка .NET Core, которая дала отличный результат в моей локальной среде, ведет себя по-разному, когдаон работает на лямбде.
У меня есть основания подозревать, что это не проблема с ролями, политиками или другими проблемами, связанными с разрешениями.
Почему?Ну, во-первых, Lambda действительно загружает файл на S3, он может читать, перечислять и помещать объекты в корзину без каких-либо проблем.
"Тогда в чем проблема?"Вы можете быть удивлены.Проблема заключается в том, что загруженное изображение становится почти в два раза больше оригинала, а содержимое BYT и полностью изменяется после отправки.Даже байты магического числа меняются, я имею в виду те, что находятся в начале файла, представляющего тип файла.
Это результат:
Первыйодна - это та, которую я загрузил локально, а вторая - это загруженная лямбда-картинка.И да, это одна и та же картина.
Localhost:
Lambda: На случай, если это вообще поможетВот код C #, реализующий SDK S3:
try
{
var region = RegionEndpoint.GetBySystemName(s3Config.Region);
_s3Client = new AmazonS3Client(region);
var fileTransferUtility = new TransferUtility(_s3Client);
using (var memoryStream = new MemoryStream())
{
image.CopyTo(memoryStream);
var fileTransferUtilityRequest = new TransferUtilityUploadRequest
{
InputStream = memoryStream,
Key = fileName,
BucketName = s3Config.BucketName,
CannedACL = S3CannedACL.BucketOwnerFullControl,
ContentType = image.ContentType
};
await fileTransferUtility.UploadAsync(fileTransferUtilityRequest);
var link = "http://{0}.s3-{1}.amazonaws.com".FormatWith(s3Config.BucketName, s3Config.Region);
return ResponseMessages.DocumentUploaded(fileName, link);
}
}
Где «изображение» - это переменная IFormFile.Если есть какая-либо другая информация, которую я могу предоставить для устранения этой ошибки, пожалуйста, дайте мне знать.Спасибо.