【问题标题】:S3 Wait function on direct resource access?S3 直接资源访问的等待功能?
【发布时间】:2016-10-19 18:01:26
【问题描述】:

有没有办法告诉 S3 在响应之前等待一个对象?我想通过 HTTP(S) 请求直接针对 S3 端点执行此操作。

我知道这个函数存在于 PHP SDK 中 http://docs.aws.amazon.com/aws-sdk-php/v2/guide/feature-waiters.html#

但是,当直接从 S3 端点下载资源时,您可以应用此等待功能吗? (没有 SDK)?

【问题讨论】:

    标签: rest amazon-web-services amazon-s3 eventual-consistency


    【解决方案1】:

    答案是肯定的,但不是真的。

    是的,因为 SDK 可以做的所有事情都可以用您自己的代码来完成,因为 SDK 使用相同的文档化公共 API 来访问服务...... SDK 没有特权接口...... . 但是,话又说回来,不是真的,因为waiter logic 几乎是一种幻觉,一种方便的虚构。它不是在“准备好时告诉我”的意义上等待服务......它实际上只是轮询服务以检查相关资源的状态。它们只是一种方便,因此您不必编写自己的轮询重试逻辑。

    所以,你当然可以......但要做到这一点,你只需要不断询问,直到你得到你期望的回应......我认为这不是你希望的答案。

    但是,当您说“等待一个对象”时,只要PUT 返回成功,一个新对象(不是覆盖)就应该可用。覆盖和删除是最终一致的,但新对象的一致性是立即的。

    其中一个例外是在 S3 的 us-east-1 区域,只有在您使用 s3-external-1.amazonaws.com 或 s3.dualstack.us-east-1.amazonaws 时才正式提供即时一致性.com 端点,而不是 s3.amazonaws.com 端点。

    【讨论】:

    • 迈克尔感谢您的回复。你说得对,我不是在谈论通过 SDK 进行轮询。我实际上是在谈论让 S3 为我轮询并保持 HTTP 请求打开,直到对象实际在服务器上显示(存在)。我有一个需要从服务器加载资源的浏览器,但并不是所有资源在它需要的时候都可用。我希望能够将我的浏览器指向这些将在 10 秒内完成的位置。所以对象是异步创建的,我想同步等待它们,如果这有意义的话。
    • 所以我认为这个问题的答案是;不,S3 从服务器端本身不具备此功能。如果您希望它向 AWS 团队添加功能请求。
    • 正确,S3 没有此本机功能。我不隶属于 AWS,因此我不能将其作为功能请求的可行性进行讨论,尽管这似乎不太可能。该功能可以用 Javascript 或使用重试请求或与S3 event notifications 集成的代理服务器来模拟。
    • 是的,我完全理解您可以在客户端或使用代理进行轮询。对于我的特定用例,我没有能力使用客户端 SDK,如果我不需要(出于成本原因),我也不想实现代理。无论如何,我认为我们有我们的答案。感谢您的讨论。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    • 1970-01-01
    • 1970-01-01
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多