【问题标题】:Why WaitUntilObjectNotExists After Delete?为什么要等到删除后对象不存在?
【发布时间】:2021-06-22 01:08:07
【问题描述】:

我正在查看 delete an object 的 aws sdk-for-go 开发人员指南。

示例代码

_, err = svc.DeleteObject(&s3.DeleteObjectInput{Bucket: aws.String(bucket), Key: aws.String(obj)})
if err != nil {
    exitErrorf("Unable to delete object %q from bucket %q, %v", obj, bucket, err)
}

err = svc.WaitUntilObjectNotExists(&s3.HeadObjectInput{
    Bucket: aws.String(bucket),
    Key:    aws.String(obj),
})

如上所示,该示例调用删除对象 API,然后等待对象不存在
我有以下与此相关的问题:

  1. 调用delete API后为什么要等待检查是否被删除?
  2. 等待检查多长时间? (什么是最大窗口?)。多久检查一次?

在 AWS 文档中找不到任何答案。

【问题讨论】:

  • 我会假设 DeleteObject 操作是一个具有最终一致性的操作,并且在所有 S3 数据中心实现一致性之前使用WaitUntilObjectExists。如果要控制等待时间和最大尝试次数,可以使用WaitUntilObjectExistsWithContext 方法。

标签: go amazon-s3 aws-sdk-go


【解决方案1】:

如前所述,v2 SDK 中的服务员似乎比 v1 SDK 中的少。但是,这可能不是 SDK 的作者完全深思熟虑的选择。似乎还有一些其他的服务员要求herehere。如果您看到 v2 SDK 中缺少一个服务员,它可能还没有被移植过来。

【讨论】:

    【解决方案2】:

    您会很高兴知道在 Go V2 中不存在这样的服务员。它仅在对象存在时提供服务员,这是您在创建资源时需要的。

    【讨论】:

      猜你喜欢
      • 2018-07-20
      • 1970-01-01
      • 1970-01-01
      • 2014-09-09
      • 1970-01-01
      • 2013-01-03
      • 2014-07-07
      • 1970-01-01
      相关资源
      最近更新 更多