Я использую ядро AWS Lambda C# .Net.
Я пытаюсь загрузить файл .jpg, не сохраняя его на локальном компьютере (не разрешено в развернутой функции Lambda)
Я получаю файл в виде шестнадцатеричной строки и могу перекодировать его в двоичный файл, сохранить как файл и даже загрузить из моей локальной отладки в обычном режиме.
int len = image.ImagePayload.Length;
byte[] bin = new byte[len / 2];
for (int i = 0; i < len; i += 2)
{
bin[i / 2] = Convert.ToByte(image.ImagePayload.Substring(i, 2), 16);
}
File.WriteAllBytes(image.ImageName, bin);
PutObjectRequest putObj = new PutObjectRequest
{
BucketName = input.Bucket,
FilePath = image.ImageName,
ContentType = "image/jpg",
Key = image.ImageName
};
PutObjectResponse putResp = S3Client.PutObjectAsync(putObj).Result;
AWS Lambda дает сбой с «файловой системой только для чтения» при полном развертывании
Есть ли способ загрузить на S3 без сохранения данных в файл?





Вместо FilePath вы можете использовать InputStream на PutObjectRequest.
byte bin = ...
using (var stream = new MemoryStream(bin))
{
var request = new PutObjectRequest
{
BucketName = input.Bucket,
InputStream = stream,
ContentType = "image/jpg",
Key = image.ImageName
}
var response = await S3Client.PutObjectAsync(request).ConfigureAwait(false);
}
Ссылка: https://docs.aws.amazon.com/sdkfornet1/latest/apidocs/html/T_Amazon_S3_Model_PutObjectRequest.htm