s3_delete_buckets_test.go - AWS Code Sample

s3_delete_buckets_test.go

/* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. This file is licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with the License. A copy of the License is located at http://aws.amazon.com/apache2.0/ This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package main import ( "strconv" "strings" "testing" "time" "github.com/google/uuid" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/s3" "github.com/aws/aws-sdk-go/service/s3/s3manager" ) func createBucket(sess *session.Session, bucketName string) error { // Create Amazon S3 service client svc := s3.New(sess) // Create the S3 Bucket _, err := svc.CreateBucket(&s3.CreateBucketInput{ Bucket: aws.String(bucketName), }) if err != nil { return err } // Wait until bucket is created before finishing return svc.WaitUntilBucketExists(&s3.HeadBucketInput{ Bucket: aws.String(bucketName), }) } func populateBucket(sess *session.Session, bucket string) error { s3Svc := s3.New(sess) // Create an uploader with S3 client and default options uploader := s3manager.NewUploaderWithClient(s3Svc) // Add some dummy data to the bucket text := "abc" body := strings.NewReader(text) upParams := &s3manager.UploadInput{ Bucket: &bucket, Key: aws.String("dummy"), Body: body, } _, err := uploader.Upload(upParams) return err } // listBuckets lists the S3 buckets with the given prefix func listBuckets(sess *session.Session, prefix string, t *testing.T) error { // Create S3 service client svc := s3.New(sess) result, err := svc.ListBuckets(nil) if err != nil { t.Log("Could not list buckets") return err } for _, b := range result.Buckets { if strings.HasPrefix(*b.Name, prefix) { t.Log(*b.Name) } } return nil } func TestDeleteBuckets(t *testing.T) { // When the test started thisTime := time.Now() nowString := thisTime.Format("20060102150405") t.Log("Starting unit test at " + nowString) // Initialize a session that the SDK uses to load // credentials from the shared credentials file (~/.aws/credentials) sess := session.Must(session.NewSessionWithOptions(session.Options{ SharedConfigState: session.SharedConfigEnable, })) // Create a unique GUID id := uuid.New() defaultName := id.String() // Create 3 dummy buckets with prefix "dummy-" prefix := "dummy-" for i := 0; i < 3; i++ { name := prefix + defaultName + strconv.Itoa(i) err := createBucket(sess, name) if err != nil { t.Fatal("Could not create bucket: " + name) } t.Log("Created bucket " + name) err = populateBucket(sess, name) if err != nil { t.Fatal("Could not populate bucket") } } // List the buckets t.Log("Buckets that start with " + prefix + ":") err := listBuckets(sess, prefix, t) if err != nil { t.Fatal(err) } // Now delete them err = deleteBucketsByPrefix(sess, prefix) if err != nil { t.Log("You might have to delete these buckets with:") t.Log("go run s3_delete_buckets.go -p dummy-") t.Fatal(err) } else { t.Log("Deleted buckets with prefix " + prefix) } // List the buckets t.Log("Now here are your buckets that start with " + prefix + ":") err = listBuckets(sess, prefix, t) if err != nil { t.Fatal(err) } }