加速写入Amazon S3

Abs*_*Abs 3 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);
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

Ste*_*end 5

亚马逊文档说:

如果从输入流上传,请始终指定设置了内容大小的元数据.否则,输入流的内容必须在发送到Amazon S3之前在内存中缓冲.这可能会导致非常负面的性能影响.

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

其他需要考虑的事项 -

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