You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.2 KiB
49 lines
1.2 KiB
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 <endpoint> <accessKey> <secretKey> <bucket>", 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)
|
|
}
|
|
}
|