Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

r/aws_s3_bucket: Migrate FindBucket to AWS SDK for Go v2 #33452

Merged
merged 3 commits into from
Sep 13, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 15 additions & 10 deletions internal/service/s3/bucket.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,16 @@ import (
"strings"
"time"

aws_sdkv2 "github.com/aws/aws-sdk-go-v2/aws"
s3_sdkv2 "github.com/aws/aws-sdk-go-v2/service/s3"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/arn"
"github.com/aws/aws-sdk-go/aws/endpoints"
"github.com/aws/aws-sdk-go/aws/request"
"github.com/aws/aws-sdk-go/service/s3"
"github.com/aws/aws-sdk-go/service/s3/s3manager"
"github.com/hashicorp/aws-sdk-go-base/v2/awsv1shim/v2/tfawserr"
tfawserr_sdkv2 "github.com/hashicorp/aws-sdk-go-base/v2/tfawserr"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/id"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry"
Expand Down Expand Up @@ -698,15 +701,15 @@ func ResourceBucket() *schema.Resource {
func resourceBucketCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
var diags diag.Diagnostics
conn := meta.(*conns.AWSClient).S3Conn(ctx)
connSDKv2 := meta.(*conns.AWSClient).S3Client(ctx)

bucket := create.Name(d.Get("bucket").(string), d.Get("bucket_prefix").(string))

awsRegion := meta.(*conns.AWSClient).Region

// Special case: us-east-1 does not return error if the bucket already exists and is owned by
// current account. It also resets the Bucket ACLs.
if awsRegion == endpoints.UsEast1RegionID {
if err := FindBucket(ctx, conn, bucket); err == nil {
if err := findBucket(ctx, connSDKv2, bucket); err == nil {
return create.DiagError(names.S3, create.ErrActionCreating, resNameBucket, bucket, errors.New(ErrMessageBucketAlreadyExists))
}
}
Expand Down Expand Up @@ -759,7 +762,7 @@ func resourceBucketCreate(ctx context.Context, d *schema.ResourceData, meta inte
d.SetId(bucket)

_, err = tfresource.RetryWhenNotFound(ctx, d.Timeout(schema.TimeoutCreate), func() (interface{}, error) {
return nil, FindBucket(ctx, conn, d.Id())
return nil, findBucket(ctx, connSDKv2, d.Id())
})

if err != nil {
Expand All @@ -772,8 +775,9 @@ func resourceBucketCreate(ctx context.Context, d *schema.ResourceData, meta inte
func resourceBucketRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
var diags diag.Diagnostics
conn := meta.(*conns.AWSClient).S3Conn(ctx)
connSDKv2 := meta.(*conns.AWSClient).S3Client(ctx)

err := FindBucket(ctx, conn, d.Id())
err := findBucket(ctx, connSDKv2, d.Id())

if !d.IsNewResource() && tfresource.NotFound(err) {
log.Printf("[WARN] S3 Bucket (%s) not found, removing from state", d.Id())
Expand Down Expand Up @@ -1365,6 +1369,7 @@ func resourceBucketUpdate(ctx context.Context, d *schema.ResourceData, meta inte

func resourceBucketDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
conn := meta.(*conns.AWSClient).S3Conn(ctx)
connSDKv2 := meta.(*conns.AWSClient).S3Client(ctx)

log.Printf("[INFO] Deleting S3 Bucket: %s", d.Id())
_, err := conn.DeleteBucketWithContext(ctx, &s3.DeleteBucketInput{
Expand Down Expand Up @@ -1409,7 +1414,7 @@ func resourceBucketDelete(ctx context.Context, d *schema.ResourceData, meta inte
}

_, err = tfresource.RetryUntilNotFound(ctx, 1*time.Minute, func() (interface{}, error) {
return nil, FindBucket(ctx, conn, d.Id())
return nil, findBucket(ctx, connSDKv2, d.Id())
})

if err != nil {
Expand All @@ -1419,14 +1424,14 @@ func resourceBucketDelete(ctx context.Context, d *schema.ResourceData, meta inte
return nil
}

func FindBucket(ctx context.Context, conn *s3.S3, bucket string) error {
input := &s3.HeadBucketInput{
Bucket: aws.String(bucket),
func findBucket(ctx context.Context, conn *s3_sdkv2.Client, bucket string) error {
input := &s3_sdkv2.HeadBucketInput{
Bucket: aws_sdkv2.String(bucket),
}

_, err := conn.HeadBucketWithContext(ctx, input)
_, err := conn.HeadBucket(ctx, input)

if tfawserr.ErrStatusCodeEquals(err, http.StatusNotFound) || tfawserr.ErrCodeEquals(err, s3.ErrCodeNoSuchBucket) {
if tfawserr_sdkv2.ErrHTTPStatusCodeEquals(err, http.StatusNotFound) || tfawserr_sdkv2.ErrCodeEquals(err, errCodeNoSuchBucket) {
return &retry.NotFoundError{
LastError: err,
LastRequest: input,
Expand Down
4 changes: 2 additions & 2 deletions internal/service/s3/bucket_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2552,7 +2552,7 @@ func testAccCheckBucketDestroy(ctx context.Context) resource.TestCheckFunc {

func testAccCheckBucketDestroyWithProvider(ctx context.Context) acctest.TestCheckWithProviderFunc {
return func(s *terraform.State, provider *schema.Provider) error {
conn := provider.Meta().(*conns.AWSClient).S3Conn(ctx)
conn := provider.Meta().(*conns.AWSClient).S3Client(ctx)

for _, rs := range s.RootModule().Resources {
if rs.Type != "aws_s3_bucket" {
Expand Down Expand Up @@ -2591,7 +2591,7 @@ func testAccCheckBucketExistsWithProvider(ctx context.Context, n string, provide
return fmt.Errorf("No S3 Bucket ID is set")
}

conn := providerF().Meta().(*conns.AWSClient).S3Conn(ctx)
conn := providerF().Meta().(*conns.AWSClient).S3Client(ctx)

return tfs3.FindBucket(ctx, conn, rs.Primary.ID)
}
Expand Down
1 change: 1 addition & 0 deletions internal/service/s3/exports_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ package s3
var (
DeleteAllObjectVersions = deleteAllObjectVersions
EmptyBucket = emptyBucket
FindBucket = findBucket
FindBucketAccelerateConfiguration = findBucketAccelerateConfiguration
FindBucketPolicy = findBucketPolicy
FindBucketVersioning = findBucketVersioning
Expand Down