通过CloudFront分发上传文件

6

如何直接上传文件到CloudFront分发?

目前我使用JavaScript SDK中S3类的putObject方法。

根据文档,我们可以直接上传到分发 http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/AddingObjects.html

当我向distributionname.cloudfront.net发送put请求时,它显示403禁止访问,尽管我在S3中启用了CORS配置。

是否有类似于s3.putObject的方法可以直接上传到CloudFront?

还是应该继续发送到分发的S3源,即buketname.s3.amazonaws.com/?

4个回答

5

据我所知,AWS S3传输加速可用于快速上传对象到S3,但我们上传到S3的方式与启用传输加速之前相同,启用后我们仍然使用AWS控制台上传到S3,那么它如何加速呢? - Arun Kumar

4
在Cloudfront中,不存在上传文件“到”Cloudfront的概念。您提供的链接只是讨论将对象添加到您的起源,而不是分发,尽管亚马逊文档中标题模糊。正如所讨论的那样,您正在将对象添加到起源,以便它们可以通过您的分发访问...而不是实际上向分发添加对象。Cloudfront不提供持久存储,它仅存储(缓存)通过它请求的对象,在从起源获取对象之后(可以是S3,也可以不是)。一旦请求并缓存在Cloudfront边缘位置,对象仍然无法真正意义上地“在”Cloudfront中。它仅存储在已请求它的特定边缘位置,并且仅在其到期或从该位置的Cloudfront缓存中被驱逐之前。
“当边缘位置需要空间时,Amazon CloudFront会删除不太受欢迎的对象以腾出更多流行的对象的空间。这意味着您不经常访问的静态对象不太可能留在Amazon CloudFront的边缘位置缓存中。” —https://aws.amazon.com/cloudfront/details/ 现在,尽管如此... 从技术上讲,可以通过Cloudfront上传对象到S3,但是这种技术并没有将对象“放入”Cloudfront中...它只允许您使用Cloudfront作为代理将对象放入S3中,在不理想的网络条件下提供一些性能改进,但对于Cloudfront在获取对象时的后续行为没有影响,并且不会使已经缓存在全球各地的各个边缘位置的Cloudfront中的旧副本无效。

非常感谢以上所有内容,我无法通过CloudFront将文件上传到s3,因为它给了我一个Forbidden 403的响应。我在postman中将文件放入form-data中,但它没有起作用(POST和PUT已启用)。 - Yahia Bat

2

据我所知,如果您在存储桶上使用传输加速,则上传到该存储桶的对象将首先上传到CloudFront,然后再传输到实际的S3存储桶。


1

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