github.com/1aal/kubeblocks@v0.0.0-20231107070852-e1c03e598921/test/e2e/util/s3_util.go (about) 1 /* 2 Copyright (C) 2022-2023 ApeCloud Co., Ltd 3 4 This file is part of KubeBlocks project 5 6 This program is free software: you can redistribute it and/or modify 7 it under the terms of the GNU Affero General Public License as published by 8 the Free Software Foundation, either version 3 of the License, or 9 (at your option) any later version. 10 11 This program is distributed in the hope that it will be useful 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU Affero General Public License for more details. 15 16 You should have received a copy of the GNU Affero General Public License 17 along with this program. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 20 package util 21 22 import ( 23 _ "io" 24 "log" 25 "os" 26 "path/filepath" 27 "strings" 28 29 "github.com/aws/aws-sdk-go/aws" 30 "github.com/aws/aws-sdk-go/aws/session" 31 "github.com/aws/aws-sdk-go/service/s3" 32 ) 33 34 func UploadToS3(fileName, s3Directory, bucketName string) error { 35 sess, err := session.NewSession(&aws.Config{ 36 Region: aws.String("cn-northwest-1"), 37 }) 38 if err != nil { 39 log.Fatal("Error creating AWS session:", err) 40 return err 41 } 42 svc := s3.New(sess) 43 file, err := os.Open(fileName) 44 if err != nil { 45 log.Fatal(err) 46 return err 47 } 48 name := strings.Split(fileName, "/") 49 _, err = svc.PutObject(&s3.PutObjectInput{ 50 Bucket: aws.String(bucketName), 51 Key: aws.String(filepath.Join(s3Directory, name[len(name)-1])), 52 Body: file, 53 }) 54 if err != nil { 55 log.Fatal(err) 56 } 57 log.Println("file uploaded successfully") 58 return err 59 }