因此,我们都知道通过边缘点Cloudfront now supports uploading to S3。通过Cloudfront上传到S3
但是,我不确定如何做到这一点?我知道它不会完全功能(即不支持授权标题和部分上传),但我热衷于做直接上传。
我正在使用PHP,虽然它没有出现,但是API仍然支持这种方法。做更简单的事情看起来需要各种授权里程碑。
有没有人找到最好的方法来做到这一点,或只是一些建议的最佳方式,因为我试图CURL POST和其他这样的事情无济于事。
因此,我们都知道通过边缘点Cloudfront now supports uploading to S3。通过Cloudfront上传到S3
但是,我不确定如何做到这一点?我知道它不会完全功能(即不支持授权标题和部分上传),但我热衷于做直接上传。
我正在使用PHP,虽然它没有出现,但是API仍然支持这种方法。做更简单的事情看起来需要各种授权里程碑。
有没有人找到最好的方法来做到这一点,或只是一些建议的最佳方式,因为我试图CURL POST和其他这样的事情无济于事。
您应该更多地阅读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团队。
你应该能够做到这一点,我会再试一次。确保在签署请求时使用S3存储桶的DNS名称,而不是您的CloudFront分配。
为什么要通过Cloudfront上传到S3有什么特别的理由吗?我看到过偶尔的问题,但没有看到任何人真的想要这样做的理由。开导我? –
简单地说,上传到本地边缘点的速度比上传到S3端点的用户不是在区域上接近S3端点更快。记住S3是区域性的。 – waxical
是的,但是当你通过cloudfront上传时,你并没有上传到“你的本地边缘位置......你仍然一路上传”到“S3出处,上传只是代理”,通过“cloudfront”那里。上传不会保存到边缘位置。 –