Files
2026-02-28 05:33:16 +08:00

43 lines
904 B
Go

package svc
import (
"context"
"juwan-backend/app/objectstory/rpc/internal/config"
"github.com/aws/aws-sdk-go-v2/aws"
awsConfig "github.com/aws/aws-sdk-go-v2/config"
"github.com/aws/aws-sdk-go-v2/credentials"
"github.com/aws/aws-sdk-go-v2/service/s3"
)
type ObjectStorageSvc struct {
c config.S3ObjectConf
}
func NewObjectStorage(c config.S3ObjectConf) *ObjectStorageSvc {
return &ObjectStorageSvc{
c: c,
}
}
func (s *ObjectStorageSvc) MustNews3Client(ctx context.Context) *s3.Client {
awsCfg, err := awsConfig.LoadDefaultConfig(ctx,
awsConfig.WithRegion(s.c.Region),
awsConfig.WithCredentialsProvider(
credentials.NewStaticCredentialsProvider(
s.c.AccessKey,
s.c.SecretKey,
"",
),
),
)
if err != nil {
panic(err)
}
return s3.NewFromConfig(awsCfg, func(o *s3.Options) {
o.BaseEndpoint = aws.String(s.c.Endpoint)
o.UsePathStyle = s.c.UsePathStyle
})
}