Amazon S3 的数据传输和 GET 请求之间的区别

Difference between Data Transfer and GET request for Amazon S3

我在查看我的账单时注意到我的数据传输价格几乎占了我账单的 100%,所以我想确保我确切了解数据传输需要什么,即 GET 请求。 仅出于上下文考虑,我将我的网站托管在不同的服务器上,并将其连接到 S3 以存储用户生成的文件。这些文件可供下载。数据传输是否只覆盖用于下载文件的带宽,或者它是否还用于在我的站点上显示我的 s3 上存储的文件之一。因此,例如,如果我在我的 s3 上存储一个 mp3 文件,并在站点上显示该文件以播放(不包括下载),那么是否只是发送一个 GET 请求来获取和显示该文件?对我来说,这些定义有点模棱两可。有帮助吗!?

GET 每次请求费用是处理文件实际请求的费用(检查文件是否存在、检查权限、从存储中获取文件并准备 return请求者),每次下载。

数据传输费用是指每次下载时通过 Internet 将文件内容从 S3 实际传输到请求者的费用。

如果您将 link 添加到您网站上的文件中,但用户没有下载它,浏览器也没有加载它来自动播放、预加载或类似的操作,S3 对此一无所知,因此不会向您收费。如果您使用预签名的 URL 也是如此——除非它们被实际使用,否则不会产生任何费用,因为它们是在您的服务器上生成的。

如果您在页面上包含图像,并且该图像位于 S3 中,则每次查看该页面时,您都需要为请求和传输付费,除非浏览器缓存了该图像。

如果您在 S3 之前使用 CloudFront,以便您的图像或下载 links 指向 CloudFront,您只需支付 S3 的请求费用,而不是 S3 的传输费用,因为 CloudFront将向您收取传输费用而不是 S3(另外,CloudFront 按请求收取费用,但由于 CloudFront 的数据传输费用在某些地区比 S3 略便宜,无论如何,这不一定是一笔坏交易)。