| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- package entity
- import (
- "errors"
- "log"
- "os"
- "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"
- "github.com/aws/aws-sdk-go/service/s3/s3manager"
- )
- // S3Config S3Config
- type S3Config struct {
- Endpoint string
- AccessKey string
- SecretKey string
- BucketName string
- }
- func (s3Config S3Config) checkNotEmpty() bool {
- return s3Config.Endpoint != "" && s3Config.AccessKey != "" &&
- s3Config.SecretKey != "" && s3Config.BucketName != ""
- }
- func (s3Config S3Config) getSession() (*session.Session, error) {
- if !s3Config.checkNotEmpty() {
- return nil, errors.New("s3 config is empty")
- }
- creds := credentials.NewStaticCredentials(s3Config.AccessKey, s3Config.SecretKey, "")
- _, err := creds.Get()
- if err != nil {
- log.Println(err)
- }
- config := &aws.Config{
- Region: aws.String("cn-north-1"),
- Endpoint: aws.String(s3Config.Endpoint),
- DisableSSL: aws.Bool(false),
- Credentials: creds,
- S3ForcePathStyle: aws.Bool(true),
- }
- mySession, err := session.NewSession(config)
- return mySession, err
- }
- func (s3Config S3Config) CreateBucketIfNotExist() {
- mySession, err := s3Config.getSession()
- if err != nil {
- return
- }
- client := s3.New(mySession)
- head := &s3.HeadBucketInput{
- Bucket: aws.String(s3Config.BucketName),
- }
- _, err = client.HeadBucket(head)
- if err != nil {
- create := &s3.CreateBucketInput{
- Bucket: aws.String(s3Config.BucketName),
- }
- _, err = client.CreateBucket(create)
- if err != nil {
- log.Printf("创建bucket: %s 失败, ERR: %s\n", s3Config.BucketName, err)
- } else {
- log.Printf("创建bucket: %s 成功\n", s3Config.BucketName)
- }
- }
- }
- func (s3Config S3Config) UploadFile(fileName string) {
- mySession, err := s3Config.getSession()
- if err != nil {
- return
- }
- file, err := os.Open(fileName)
- if err != nil {
- log.Println(err)
- return
- }
- defer file.Close()
- uploader := s3manager.NewUploader(mySession)
- _, err = uploader.Upload(&s3manager.UploadInput{
- Bucket: aws.String(s3Config.BucketName),
- Key: aws.String(fileName),
- Body: file,
- })
- if err != nil {
- log.Printf("%s 上传到对象存储失败. ERR: %s \n", fileName, err)
- } else {
- log.Printf("%s 上传到对象存储成功\n", fileName)
- }
- }
|