加速写入Amazon S3

时间:2011-10-24 17:19:47

标签: c# amazon-s3

我正在尝试使用C#将图像上传到Amazon S3:

PutObjectRequest titledRequest = null;

S3Response response = null;

using (var memoryStream = new MemoryStream())
{

    image.Save(memoryStream, ImageFormat.Png);

    titledRequest = new PutObjectRequest();

    titledRequest.WithBucketName(bucketName)
                 .WithKey(keyName)
                 .WithCannedACL(S3CannedACL.PublicRead)
                 .WithInputStream(memoryStream);

    response = client.PutObject(titledRequest);
}

如您所见,我不是在本地保存图像文件,而是将其流式传输到S3。但是,出于某种原因,对于50kb文件,此过程大约需要50秒!

我的上传速度没有任何问题,超过1mbps。

我想知道首先保存文件并上传会更快吗?

有什么我应该考虑加快上传过程吗?再一次,在宽带方面没有问题!

1 个答案:

答案 0 :(得分:5)

Amazon docs说:

  

如果从输入流上传,请始终使用   内容大小设置。否则输入流的内容必须   在发送到Amazon S3之前缓冲在内存中。这可能会导致   非常消极的性能影响。

很难相信这可能是你的问题,但你应该遵循的最佳做法。

需要考虑的其他事项 -

  • 您是否需要指定其他ObjectMetadata来告诉S3如何处理 你的形象?
  • 存储桶存在,或者创建是第一个对象的一部分 发送操作?