创建存储桶时,间歇性“当前正在针对此资源执行冲突的条件操作”
Intermittent `A conflicting conditional operation is currently in progress against this resource` when creating bucket
在创建新存储桶时,我们已经在 CI 管道中间歇性地看到 conflicting conditional operation
。我们使用随机名称创建存储桶,因此不应存在冲突操作。我们正在使用 terraform-aws-provider,它使用 aws-sdk-go,来创建这个存储桶。看起来他们调用 CreateBucket
,然后调用 TagResource
。我们怀疑这个错误是由于提供商在调用TagResource
之前没有调用WaitUntilBucketExists
。这看起来合理吗?如果是这样,我们可以向 terraform aws 提供商提出问题或 PR。
根据 terraform 代码,你是对的,他们似乎没有使用 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 速率限制的阈值。会是这样吗?您一次创建多个存储桶吗?
在创建新存储桶时,我们已经在 CI 管道中间歇性地看到 conflicting conditional operation
。我们使用随机名称创建存储桶,因此不应存在冲突操作。我们正在使用 terraform-aws-provider,它使用 aws-sdk-go,来创建这个存储桶。看起来他们调用 CreateBucket
,然后调用 TagResource
。我们怀疑这个错误是由于提供商在调用TagResource
之前没有调用WaitUntilBucketExists
。这看起来合理吗?如果是这样,我们可以向 terraform aws 提供商提出问题或 PR。
根据 terraform 代码,你是对的,他们似乎没有使用 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 速率限制的阈值。会是这样吗?您一次创建多个存储桶吗?