2013-11-28 167 views
3

因此,我們都知道通過邊緣點Cloudfront now supports uploading to S3通過Cloudfront上傳到S3

但是,我不確定如何做到這一點?我知道它不會完全功能(即不支持授權標題和部分上傳),但我熱衷於做直接上傳。

我正在使用PHP,雖然它沒有出現,但是API仍然支持這種方法。做更簡單的事情看起來需要各種授權里程碑。

有沒有人找到最好的方法來做到這一點,或只是一些建議的最佳方式,因爲我試圖CURL POST和其他這樣的事情無濟於事。

+0

爲什麼要通過Cloudfront上傳到S3有什麼特別的理由嗎?我看到過偶爾的問題,但沒有看到任何人真的想要這樣做的理由。開導我? –

+2

簡單地說,上傳到本地邊緣點的速度比上傳到S3端點的用戶不是在區域上接近S3端點更快。記住S3是區域性的。 – waxical

+1

是的,但是當你通過cloudfront上傳時,你並沒有上傳到「你的本地邊緣位置......你仍然一路上傳」到「S3出處,上傳只是代理」,通過「cloudfront」那裏。上傳不會保存到邊緣位置。 –

回答

4

您應該更多地閱讀AWS文檔上的browser-based POST uploads feature of Amazon S3。將POST上傳到Amazon S3需要您發送特殊的JSON策略文檔以及POST請求並上傳。適用於PHP的AWS開發工具包中的S3 PostObject class有助於根據您提供的選項生成此策略,並生成需要包含在表單/請求中的其他表單元素值。

儘管我還沒有嘗試過,但您可能只需將您的CloudFront分發端點的S3存儲桶端點換出,以便通過CloudFront邊緣位置進行上載。另外,請確保您的分配已配置爲接受POST請求。爲了得到更正式的答案,我會問CloudFront forum上的Amazon CloudFront團隊。

1

你應該能夠做到這一點,我會再試一次。確保在簽署請求時使用S3存儲桶的DNS名稱,而不是您的CloudFront分配。