summaryrefslogtreecommitdiff
path: root/internal/blog/s3.go
diff options
from:
to:
context:
space:
mode:
authorGravatar SayaAndy <saya.andy@posteo.com> 2026-04-15 16:31:54 +0700
committerGravatar SayaAndy <saya.andy@posteo.com> 2026-04-15 16:31:54 +0700
commitab557dd4df732c5d461bf7015f9eb0e761c982b7 (patch)
tree5f34d9ffae459c559f7246fbd514a08a88e97d6d /internal/blog/s3.go
parent66b2a96fcca113105043be3cb9c49f8ee7fe240c (diff)
downloadweb-ab557dd4df732c5d461bf7015f9eb0e761c982b7.tar.gz
web-ab557dd4df732c5d461bf7015f9eb0e761c982b7.zip
feat: add usepathstyle flag for s3 config
refactor: use aws-sdk-go-v2/config package for configuring s3 client
Diffstat (limited to 'internal/blog/s3.go')
-rw-r--r--internal/blog/s3.go29
1 files changed, 25 insertions, 4 deletions
diff --git a/internal/blog/s3.go b/internal/blog/s3.go
index de4eb3a..86a6463 100644
--- a/internal/blog/s3.go
+++ b/internal/blog/s3.go
@@ -11,6 +11,7 @@ import (
"github.com/SayaAndy/saya-today-web/config"
"github.com/SayaAndy/saya-today-web/internal/frontmatter"
"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"
)
@@ -27,12 +28,32 @@ func NewS3Client(cfg *config.StorageConfig) (Client, error) {
}
s3cfg := cfg.Config.(*config.S3Config)
- s3cl := s3.New(s3.Options{
- Region: s3cfg.Region,
- BaseEndpoint: aws.String(s3cfg.Endpoint),
- Credentials: credentials.NewStaticCredentialsProvider(s3cfg.AccessKeyID, s3cfg.SecretAccessKey, ""),
+ opts := []func(*awsconfig.LoadOptions) error{
+ awsconfig.WithRegion(s3cfg.Region),
+ }
+ if s3cfg.AccessKeyID != "" && s3cfg.SecretAccessKey != "" {
+ opts = append(opts, awsconfig.WithCredentialsProvider(
+ credentials.NewStaticCredentialsProvider(s3cfg.AccessKeyID, s3cfg.SecretAccessKey, ""),
+ ))
+ }
+
+ awsCfg, err := awsconfig.LoadDefaultConfig(context.Background(), opts...)
+ if err != nil {
+ return nil, fmt.Errorf("load AWS config: %w", err)
+ }
+
+ var s3Opts []func(*s3.Options)
+ if s3cfg.Endpoint != "" {
+ s3Opts = append(s3Opts, func(o *s3.Options) {
+ o.BaseEndpoint = aws.String(s3cfg.Endpoint)
+ })
+ }
+ s3Opts = append(s3Opts, func(o *s3.Options) {
+ o.UsePathStyle = s3cfg.UsePathStyle
})
+ s3cl := s3.NewFromConfig(awsCfg, s3Opts...)
+
return &S3Client{s3cfg.Prefix, s3cfg.BucketName, s3cl}, nil
}