From 71f721cd3e895cf8bc24f8fe6bfe2476d37e66cf Mon Sep 17 00:00:00 2001 From: Kazunori Kojima Date: Sat, 24 Sep 2016 16:50:04 +0900 Subject: [PATCH] provider/aws: Fix failed remove S3 lifecycle_rule --- builtin/providers/aws/resource_aws_s3_bucket.go | 17 +++++++++++++++++ .../aws/resource_aws_s3_bucket_test.go | 6 ++++++ 2 files changed, 23 insertions(+) diff --git a/builtin/providers/aws/resource_aws_s3_bucket.go b/builtin/providers/aws/resource_aws_s3_bucket.go index 215721f3b..5e6bf256b 100644 --- a/builtin/providers/aws/resource_aws_s3_bucket.go +++ b/builtin/providers/aws/resource_aws_s3_bucket.go @@ -1241,6 +1241,23 @@ func resourceAwsS3BucketLifecycleUpdate(s3conn *s3.S3, d *schema.ResourceData) e lifecycleRules := d.Get("lifecycle_rule").([]interface{}) + if len(lifecycleRules) == 0 { + i := &s3.DeleteBucketLifecycleInput{ + Bucket: aws.String(bucket), + } + + err := resource.Retry(1*time.Minute, func() *resource.RetryError { + if _, err := s3conn.DeleteBucketLifecycle(i); err != nil { + return resource.NonRetryableError(err) + } + return nil + }) + if err != nil { + return fmt.Errorf("Error putting S3 lifecycle: %s", err) + } + return nil + } + rules := make([]*s3.LifecycleRule, 0, len(lifecycleRules)) for i, lifecycleRule := range lifecycleRules { diff --git a/builtin/providers/aws/resource_aws_s3_bucket_test.go b/builtin/providers/aws/resource_aws_s3_bucket_test.go index 38e529b09..221a87fd6 100644 --- a/builtin/providers/aws/resource_aws_s3_bucket_test.go +++ b/builtin/providers/aws/resource_aws_s3_bucket_test.go @@ -566,6 +566,12 @@ func TestAccAWSS3Bucket_Lifecycle(t *testing.T) { "aws_s3_bucket.bucket", "lifecycle_rule.1.noncurrent_version_expiration.80908210.days", "365"), ), }, + resource.TestStep{ + Config: testAccAWSS3BucketConfig(rInt), + Check: resource.ComposeTestCheckFunc( + testAccCheckAWSS3BucketExists("aws_s3_bucket.bucket"), + ), + }, }, }) }