当前位置: 首页> 汽车> 车展 > go操作aws s3

go操作aws s3

时间:2025/7/9 11:01:02来源:https://blog.csdn.net/clearloe/article/details/140699557 浏览次数: 0次

v2

官方推荐版本,需要go版本>=1.20

安装

go get github.com/aws/aws-sdk-go-v2
go get github.com/aws/aws-sdk-go-v2/config
go get github.com/aws/aws-sdk-go-v2/service/s3

必要参数

bucket: 存储桶的名称

Region: 存储桶所在区域,例us-east-1

accessKeyID: 访问存储桶所需的KeyID

secretAccessKey: 访问存储桶所需的AccessKey

如何获取accessKeyIDsecretAccessKey:指南

var (s3Client *s3.Clientbucket   = "yourbucketname"
)func InitS3Client() {accessKeyID := "xxxxx"secretAccessKey := "xxxxx"cfg, err := config.LoadDefaultConfig(context.TODO(),config.WithRegion("us-east-1"),config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider(accessKeyID, secretAccessKey, "")),)if err != nil {log.Fatalf("unable to load SDK config, %v", err)}s3Client = s3.NewFromConfig(cfg)
}func UploadToS3(filePath, fileName, mimeType string) (string, error) {file, err := os.Open(filePath)if err != nil {return "", fmt.Errorf("failed to open file %q, %v", filePath, err)}defer file.Close()_, err = s3Client.PutObject(context.TODO(), &s3.PutObjectInput{Bucket:      aws.String(bucket),Key:         aws.String(fileName),Body:        file,ContentType: aws.String(mimeType),})if err != nil {return "", fmt.Errorf("failed to upload file to S3, %v", err)}return fmt.Sprintf("https://%s.s3.amazonaws.com/%s", bucket, fileName), nil
}

若不想升级go1.20,可以使用v1版本

v1

安装

go get github.com/aws/aws-sdk-go
var (s3Client *s3.S3bucket   = "yourbucketname"
)func InitS3Client() {accessKeyID := "xxxxx"secretAccessKey := "xxxxx"sess, err := session.NewSession(&aws.Config{Region:      aws.String("us-east-1"),Credentials: credentials.NewStaticCredentials(accessKeyID, secretAccessKey, ""),})if err != nil {log.Fatalf("unable to create AWS session, %v", err)}s3Client = s3.New(sess)
}func UploadToS3(content []byte, fileName, mimeType string) (string, error) {_, err := s3Client.PutObject(&s3.PutObjectInput{Bucket:      aws.String(bucket),Key:         aws.String(fileName),Body:        bytes.NewReader(content),ContentType: aws.String(mimeType),})if err != nil {return "", fmt.Errorf("failed to upload file to S3, %v", err)}return fmt.Sprintf("https://%s.s3.amazonaws.com/%s", bucket, fileName), nil
}
关键字:go操作aws s3

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: