【发布时间】:2017-04-24 19:04:57
【问题描述】:
我正在尝试将文件(图像和视频)上传到指向 s3 存储桶的 AWS CloudFront 分配。
目前,我可以使用 HttpClient 使用通过 CloudFront SDK 生成的签名 URL 来获取和放置文件。
using (HttpClient client = new HttpClient())
using (var stream = File.OpenRead(filepath))
using (HttpResponseMessage response = await client.PutAsync(url, new StreamContent(stream)))
{
response.EnsureSuccessStatusCode();
}
我最初尝试了一个 POST,但这根本不起作用(它在 30 秒后超时),我从这个 SO Answer 中发现我需要添加 client.DefaultRequestHeaders.Add("x-amz-acl", "bucket-owner-full-control"); 来给我的对象 ACL 访问权限,所以桶拥有者可以通过控制台访问。
我知道我可以使用 AWS S3 开发工具包上传到 S3,并且可以启用传输加速,但 AWS 常见问题解答指出 CloudFront 在上传较小的文件或数据集 (
除了 CloudFront 分配的初始设置之外,我发现 CloudFront 文档含糊、错误或不存在。
上述方法是通过 CloudFront 将 任何 文件上传到 S3 的正确方法,还是有一种优化的、更强大的方法(例如,分段上传,因此可以恢复更大的文件)-我想优化这个以上传视频,所以如果答案可以集中在这个上,将不胜感激。
【问题讨论】:
-
为什么不直接上传到s3 bucket呢?
-
这是我们目前正在做的,但是对于来自存储桶的世界另一端的用户来说延迟太高了。使用 CloudFront 允许用户上传到边缘站点,然后通过内部 AWS 网络传输到存储桶(类似于 s3 加速传输 - 虽然我承认,我不确定为什么较大的对象应该通过 TA 而较小的对象应该通过 CF - 他们两者都使用边缘位置)。
-
有趣,我不知道 CloudFront 支持这个。
-
@RichardSzalay - 自 2013 年以来是的 (aws.amazon.com/about-aws/whats-new/2013/10/15/…) - 尽管至少可以说文档很少。
-
@MrShoubs - 您目前使用 S3TA 有什么原因吗?
标签: c# .net amazon-web-services amazon-s3 amazon-cloudfront