package main import ( "fmt" "log" "os" "strings" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/credentials" "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/s3" ) func main() { if len(os.Args) < 5 { log.Fatalf("Usage: %s ", os.Args[0]) } endpoint := os.Args[1] accessKey := os.Args[2] secretKey := os.Args[3] bucket := os.Args[4] sess, err := session.NewSession(&aws.Config{ Endpoint: aws.String(endpoint), Region: aws.String("us-east-1"), Credentials: credentials.NewStaticCredentials(accessKey, secretKey, ""), S3ForcePathStyle: aws.Bool(true), }) if err != nil { log.Fatal(err) } svc := s3.New(sess) _, err = svc.CreateBucket(&s3.CreateBucketInput{ Bucket: aws.String(bucket), }) if err != nil { // BucketAlreadyExists/BucketAlreadyOwnedByYou are acceptable if strings.Contains(err.Error(), "BucketAlreadyOwnedByYou") || strings.Contains(err.Error(), "BucketAlreadyExists") { fmt.Printf("Bucket %s already exists\n", bucket) } else { log.Fatalf("Failed to create bucket: %v", err) } } else { fmt.Printf("Bucket %s created successfully on %s\n", bucket, endpoint) } }