创建存储桶时出现间歇性“当前正在对此资源执行冲突的条件操作”



我们在创建新存储桶时,在 CI 管道中间歇性地看到了conflicting conditional operation。我们使用随机名称创建存储桶,因此不应有冲突的操作。我们使用 terraform-aws-provider(它使用 aws-sdk-go(来创建此存储桶。看起来他们打电话给CreateBucket后跟TagResource.我们怀疑此错误是由于提供程序在调用TagResource之前未调用WaitUntilBucketExists。这似乎合理吗?如果是这样,我们可以向 terraform aws 提供商提出问题或 PR。

根据你说的对的地形代码,他们似乎没有使用WaitUntilBucketExists,你可以在这里检查一下 https://github.com/terraform-providers/terraform-provider-aws/blob/27e2f31ac052cf5dce63036756337be08f2ffa30/aws/resource_aws_s3_bucket.go#L442

err := resource.Retry(5*time.Minute, func() *resource.RetryError {
    log.Printf("[DEBUG] Trying to create new S3 bucket: %q", bucket)
    _, err := s3conn.CreateBucket(req)
    if awsErr, ok := err.(awserr.Error); ok {
        if awsErr.Code() == "OperationAborted" {
            log.Printf("[WARN] Got an error while trying to create S3 bucket %s: %s", bucket, err)
            return resource.RetryableError(
                fmt.Errorf("[WARN] Error creating S3 bucket %s, retrying: %s",
                    bucket, err))

所以基本上他们重试 5 分钟...我想你可以打开一个 Github 问题,甚至更好的是,创建一个 PR :)

顺便说一句,你达到了创建存储桶的 5 分钟限制很奇怪......所以我想知道您的 CI 是否会达到 AWS API 速率限制的阈值。是这样吗?您是否一次创建多个存储桶?

最新更新