通过Cloudfront上传到S3

3

众所周知,Cloudfront现在支持通过边缘点上传到S3

然而,我不太确定怎么做?我知道它不会完全支持(即不支持授权头和部分上传),但我很想直接上传。

我使用的是PHP,尽管API尚不支持此方法。看起来要做一些比较简单的事情需要完成各种授权里程碑。

有人发现了最佳方法吗?或者有一些建议,因为我正在尝试CURL POST等方法,但都没有成功。


你想通过Cloudfront上传到S3有什么特别的原因吗?我偶尔会看到这方面的问题,但我没有看到任何人真正想要这样做的原因。能否给我解释一下? - Michael - sqlbot
3
简而言之,与将文件上传至不接近您S3终端节点的用户所使用的S3终端节点相比,将文件上传至本地边缘节点速度更快。请记住,S3是区域性的。 - waxical
1
是的,但是当您通过CloudFront上传时,您并没有将文件上传“到”本地边缘位置...您仍然需要将文件上传“到”S3源,并且上传只是通过CloudFront进行代理以到达目的地。上传不会保存到边缘位置。 - Michael - sqlbot
1
是的,但从AWS边缘中心到您的AWS S3位置进行对等连接可能会更快一些。不是吗?我的意思是 - 这是AWS的建议。如果您知道其他情况,请告诉我,这样我们就可以节省时间投资。我很想知道为什么AWS甚至要提供此功能,如果没有任何收益的话。现在我们在远程上传方面遇到了许多延迟/问题。 - waxical
1
似乎大多数关于这个问题的回答都是SO典型的“没有意义”。很高兴能够听到那些尝试过、证明了改进/进行了一些测试等方面的反馈...有人在吗? - waxical
2个回答

4

您应该在AWS文档中阅读关于Amazon S3基于浏览器的POST上传功能的更多信息。向Amazon S3进行POST上传需要您随POST请求和上传一起发送特殊的JSON策略文档。AWS PHP SDK中的S3 PostObject有助于根据提供的选项生成此策略,以及生成其他需要包含在表单/请求中的表单元素值。

尽管我还没有尝试过,但您可能只需要将S3存储桶端点替换为CloudFront分发端点,即可通过CloudFront边缘位置进行上传。此外,请确保配置了您的分发以接受POST请求。要获取更正式的答案,请在 CloudFront论坛上询问Amazon CloudFront团队。

1
你现在应该能够做到这一点,我建议再试一次。确保在签署请求时使用S3存储桶的DNS名称,而不是CloudFront分发的名称。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接