diff --git a/.changelog/23278.txt b/.changelog/23278.txt new file mode 100644 index 000000000000..f4d09987a120 --- /dev/null +++ b/.changelog/23278.txt @@ -0,0 +1,7 @@ +```release-note:enhancement +resource/aws_s3_bucket: Add error handling for `NotImplemented` errors when reading `acceleration_status`, `policy`, or `request_payer` into terraform state. +``` + +```release-note:enhancement +resource/aws_s3_bucket: Add error handling for `MethodNotAllowed` and `XNotImplemented` errors when reading `website` into terraform state. +``` \ No newline at end of file diff --git a/internal/service/s3/bucket.go b/internal/service/s3/bucket.go index ce489102cd9b..97efc77bed3a 100644 --- a/internal/service/s3/bucket.go +++ b/internal/service/s3/bucket.go @@ -815,7 +815,7 @@ func resourceBucketRead(d *schema.ResourceData, meta interface{}) error { return nil } - if err != nil && !tfawserr.ErrCodeEquals(err, ErrCodeNoSuchBucketPolicy) { + if err != nil && !tfawserr.ErrCodeEquals(err, ErrCodeNoSuchBucketPolicy, ErrCodeNotImplemented) { return fmt.Errorf("error getting S3 bucket (%s) policy: %w", d.Id(), err) } @@ -909,7 +909,12 @@ func resourceBucketRead(d *schema.ResourceData, meta interface{}) error { return nil } - if err != nil && !tfawserr.ErrCodeEquals(err, ErrCodeNotImplemented, ErrCodeNoSuchWebsiteConfiguration) { + if err != nil && !tfawserr.ErrCodeEquals(err, + ErrCodeMethodNotAllowed, + ErrCodeNotImplemented, + ErrCodeNoSuchWebsiteConfiguration, + ErrCodeXNotImplemented, + ) { return fmt.Errorf("error getting S3 Bucket website configuration: %w", err) } @@ -970,7 +975,7 @@ func resourceBucketRead(d *schema.ResourceData, meta interface{}) error { } // Amazon S3 Transfer Acceleration might not be supported in the region - if err != nil && !tfawserr.ErrCodeEquals(err, ErrCodeMethodNotAllowed, ErrCodeUnsupportedArgument) { + if err != nil && !tfawserr.ErrCodeEquals(err, ErrCodeMethodNotAllowed, ErrCodeUnsupportedArgument, ErrCodeNotImplemented) { return fmt.Errorf("error getting S3 Bucket acceleration configuration: %w", err) } @@ -995,7 +1000,7 @@ func resourceBucketRead(d *schema.ResourceData, meta interface{}) error { return nil } - if err != nil { + if err != nil && !tfawserr.ErrCodeEquals(err, ErrCodeNotImplemented) { return fmt.Errorf("error getting S3 Bucket request payment: %s", err) } diff --git a/internal/service/s3/errors.go b/internal/service/s3/errors.go index 7c7ad0db4f08..51a008e43206 100644 --- a/internal/service/s3/errors.go +++ b/internal/service/s3/errors.go @@ -18,4 +18,9 @@ const ( ErrCodeReplicationConfigurationNotFound = "ReplicationConfigurationNotFoundError" ErrCodeServerSideEncryptionConfigurationNotFound = "ServerSideEncryptionConfigurationNotFoundError" ErrCodeUnsupportedArgument = "UnsupportedArgument" + + // ErrCodeXNotImplemented is returned from Third Party S3 implementations + // and so far has been noticed with calls to GetBucketWebsite. + // Reference: https://github.com/hashicorp/terraform-provider-aws/issues/14645 + ErrCodeXNotImplemented = "XNotImplemented" )