间歇性`当创建存储桶时,当前正在对此资源进行冲突的条件操作

时间:2017-11-17 19:46:27

标签: aws-sdk-go

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

1 个答案:

答案 0 :(得分:0)

根据您正确的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速率限制的门槛。可能是这种情况吗?你一次创建几个桶吗?