From 84816255961961143c25656f5d3aaf4e1361b367 Mon Sep 17 00:00:00 2001 From: Radek Simko Date: Wed, 17 Feb 2016 10:54:46 +0000 Subject: [PATCH] Add retry logic to s3_bucket to prevent OperationAborted errors --- builtin/providers/aws/resource_aws_s3_bucket.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/builtin/providers/aws/resource_aws_s3_bucket.go b/builtin/providers/aws/resource_aws_s3_bucket.go index 9c357976e6..011bda91cb 100644 --- a/builtin/providers/aws/resource_aws_s3_bucket.go +++ b/builtin/providers/aws/resource_aws_s3_bucket.go @@ -210,7 +210,20 @@ func resourceAwsS3BucketCreate(d *schema.ResourceData, meta interface{}) error { } } - _, err := s3conn.CreateBucket(req) + err := resource.Retry(5*time.Minute, func() error { + 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 fmt.Errorf("[WARN] Error creating S3 bucket %s, retrying: %s", + bucket, err) + } + return resource.RetryError{Err: err} + } + return nil + }) + if err != nil { return fmt.Errorf("Error creating S3 bucket: %s", err) }