Amazon S3:什么被视为 PUT/COPY/POST/LIST 请求?

2022-08-31 01:02:48

请确认此是否正确:

  • PUT 可能正在将文件上传到 S3?
  • COPY 可能正在复制 S3 中的文件?

POSTLIST怎么样?

另外一个问题,get_bucket_filesize() 和 get_object_filesize() (来自 PHP SDK) 是否被视为 LIST 请求?


答案 1

根据我使用S3的经验(以及HTTP协议和REST的基础知识),POST是创建新对象(在S3中,它将是上传新文件),而PUT是创建新对象或更新现有对象(即创建或更新文件)。此外,从 S3 文档中

POST 是 PUT 的另一种形式,它支持基于浏览器的上传,作为将对象放入存储桶的一种方式

例如,每次获取给定 S3 存储桶的内容时,您都会遇到 LIST 操作。您没有问过,但是GET是从S3下载文件,而DELETE显然是删除文件。当然,这些假设取决于您使用的SDK(似乎您正在使用PHP的SDK)及其底层实现。我的论点是,可以使用GET实现下载,使用PUT或POST实现上传,等等。

但是,在查看 S3 REST API 时,我假设 get_bucket_filesize() 是作为 LIST 实现的(存储桶上的 GET 操作带来了响应中每个对象的大小,以及更多的数据),并且 get_object_filesize() 作为 GET 实现(对单个文件使用 HEAD 操作也会将其大小包含在元数据中)。


答案 2

是的,你是对的。PUT 正在上传(具体而言,一个文件就是一个 PUT)。我正在观察PUT是每个文件还是每个数据包大小,这将使定价更加困难。它正在放置一个文件(不参考大小)。

此外,COPY确实在S3中复制文件,但还有更多。见下文。我还找到了对POST和LIST的引用;见下文。

因此,我在深入研究评估我们的成本时学到了PUT/COPY/POST/LIST和GET Requests。我还包括我发现它的地方(想从亚马逊获得它)。欢迎所有更正。

亚马逊的常见问题解答在这里:https://aws.amazon.com/s3/faqs/,我将在下面引用它。

COPY可以是几件事,其中之一是在区域之间复制,这确实需要花费。例如,如果将存储到西弗吉尼亚州,并将 COPY 复制到 CA 北部区域,则会产生费用。从 EC2 复制到 S3(在我推测的同一区域内)不会产生传输成本。请参阅 Q 部分中的亚马逊常见问题解答:Amazon S3 的费用是多少?

注意:写入一个文件,然后重写同一个文件会存储两个版本(除非您删除某些内容)。我猜如果文件完全相同,您不会收取更多费用,但如果我错了,请不要向我发送账单。:-)似乎平均大小(一个月)是计费的。请参阅常见问题解答(上面的链接)

对于 PUT、GET 和 DELETE,似乎一个文件就是一个事务。这为我回答了一个大问题(我不希望他们的128k最小大小成为每个128k数据包的PUT...是的,我是偏执狂)。请参阅“问题”部分,如下所示:

问:我使用 Amazon S3 的费用和计费方式将如何?

请求示例:

假设您在 3 月份将 10000 个文件传输到 Amazon S3,并将 20000 个文件从 Amazon S3 中传输出去。然后,您在 3 月 31 日删除 5,000 个文件。

PUT 请求总数 = 10000 个请求 x 31 天 = 310000 个请求

GET 请求总数 = 20000 个请求 x 31 天 = 620000 个请求

删除请求总数 = 5000×1 天 = 5000 个请求

问题下提到了 LIST:问:我是否可以使用 Amazon S3 API 或管理控制台列出已存档到 Amazon Glacier 的对象?它本质上是获取文件列表...一个目录,如果你愿意的话。

POST在RESTObjectPost下提到.html这里:http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html

我希望这有帮助。这确实让我对我们将收取的费用感到更舒服。


推荐