【问题标题】:Amazon S3: What are considered PUT/COPY/POST/LIST request?Amazon S3:什么是 PUT/COPY/POST/LIST 请求?
【发布时间】:2012-03-03 17:49:31
【问题描述】:

请确认是否正确:

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

POSTLIST 怎么样?

附加问题,get_bucket_filesize() 和 get_object_filesize()(来自 PHP SDK)是否被视为 LIST 请求?

【问题讨论】:

    标签: php amazon-s3 amazon-web-services


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 很好的解释,但我认为 POST 操作描述可能不是 100% 准确。来自 AWS 文档:“POST 操作是 PUT 的另一种形式,它支持基于浏览器的上传。”
    • 谢谢!我拒绝了编辑,因为它正在改变或多或少是我的看法。我在段落末尾添加了您的建议!
    【解决方案2】:

    PUT 和 POST 之间没有太大区别。以下内容是从 AWS S3 文档中复制而来的。

    POST 是一种PUT 的替代形式,它允许基于浏览器的上传作为将对象放入存储桶的一种方式。 通过 HTTP 标头传递给 PUT 的参数在 multipart/form-data 编码的消息正文中作为表单字段传递给 POST

    http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html

    正如其他人所指定的,LIST 用于列出对象。您可以在以下链接中找到所有操作。

    http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketOps.html

    【讨论】:

      【解决方案3】:

      是的,你是对的。 PUT 正在上传(具体来说,一个文件就是一个 PUT)。我正在关注 PUT 是按文件还是按某些数据包大小,这会使定价变得更加困难。它正在放置一个文件(不参考大小)。

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

      所以我在深入评估我们的成本时了解了 PUT/COPY/POST/LIST 和 GET 请求。我还包括我发现它的地方(想从亚马逊得到它)。欢迎大家指正。

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

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

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

      对于 PUT、GET 和 DELETE,看起来一个文件就是一个事务。这对我来说回答了一个大问题(我不希望他们的 128k 最小大小成为每个 128k 数据包的 PUT……是的,我很偏执)。请参阅这样的问题部分:

      问:如何对我使用 Amazon S3 进行收费和计费?

      请求示例:

      假设您在 3 月份每天将 10,000 个文件传输到 Amazon S3 并从 Amazon S3 传输 20,000 个文件。然后,您在 3 月 31 日删除了 5,000 个文件。

      PUT 请求总数 = 10,000 个请求 x 31 天 = 310,000 个请求

      GET 请求总数 = 20,000 个请求 x 31 天 = 620,000 个请求

      DELETE 请求总数 = 5,000×1 天 = 5,000 个请求

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

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

      我希望这会有所帮助。这确实让我对我们收取的费用更加放心。

      【讨论】:

        猜你喜欢
        • 2020-08-20
        • 2013-10-02
        • 2010-09-11
        • 1970-01-01
        • 1970-01-01
        • 2016-08-05
        相关资源
        最近更新 更多