enhance s3 create bucket logic, only create if not found

This commit is contained in:
Byron Wang
2025-05-27 17:04:26 +08:00
parent 6e84671a14
commit 1f32c5f031
2 changed files with 11 additions and 6 deletions
+10 -6
View File
@@ -3,6 +3,7 @@ package s3
import (
"bytes"
"context"
"errors"
"io"
"strings"
"time"
@@ -11,6 +12,7 @@ import (
"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"
"github.com/aws/smithy-go"
"github.com/langgenius/dify-cloud-kit/oss"
)
@@ -83,14 +85,16 @@ func NewS3Storage(args oss.OSSArgs) (oss.OSS, error) {
Bucket: aws.String(bucket),
})
if err != nil {
_, err = client.CreateBucket(context.TODO(), &s3.CreateBucketInput{
Bucket: aws.String(bucket),
})
if err != nil {
return nil, err
var apiErr smithy.APIError
if errors.As(err, &apiErr) && apiErr.ErrorCode() == "NotFound" {
_, err = client.CreateBucket(context.TODO(), &s3.CreateBucketInput{
Bucket: aws.String(bucket),
})
if err != nil {
return nil, err
}
}
}
return &S3Storage{bucket: bucket, client: client}, nil
}
+1
View File
@@ -78,6 +78,7 @@ var allCases = []testArgsCases{
Bucket: os.Getenv("TENCNET_COS_BUCKET"),
},
},
skip: true,
},
}