@@ -21,6 +21,10 @@ import (
2121 "github.com/baetyl/baetyl-cloud/v2/plugin"
2222)
2323
24+ const (
25+ VirtualHost = "virtualHost"
26+ )
27+
2428type awss3Storage struct {
2529 s3Client * s3.S3
2630 cfg * S3Config
@@ -41,7 +45,7 @@ func New() (plugin.Plugin, error) {
4145 return new (awss3Storage ), nil
4246 }
4347
44- sessionProvider , err := newS3Session (cfg .AWSS3 .Endpoint , cfg .AWSS3 .Ak , cfg .AWSS3 .Sk , cfg .AWSS3 .Region , cfg .AWSS3 .PathStyle )
48+ sessionProvider , err := newS3Session (cfg .AWSS3 .Endpoint , cfg .AWSS3 .Ak , cfg .AWSS3 .Sk , cfg .AWSS3 .Region , cfg .AWSS3 .AddressFormat )
4549 if err != nil {
4650 return nil , err
4751 }
@@ -261,7 +265,7 @@ func (c *awss3Storage) GenInternalObjectURL(_, bucket, object string) (*models.O
261265
262266// ListExternalBuckets ListExternalBuckets
263267func (c * awss3Storage ) ListExternalBuckets (info models.ExternalObjectInfo ) ([]models.Bucket , error ) {
264- sessionProvider , err := newS3Session (info .Endpoint , info .Ak , info .Sk , "" , info .PathStyle )
268+ sessionProvider , err := newS3Session (info .Endpoint , info .Ak , info .Sk , "" , info .AddressFormat )
265269 if err != nil {
266270 return nil , err
267271 }
@@ -271,7 +275,7 @@ func (c *awss3Storage) ListExternalBuckets(info models.ExternalObjectInfo) ([]mo
271275
272276// HeadExternalBucket HeadExternalBucket
273277func (c * awss3Storage ) HeadExternalBucket (info models.ExternalObjectInfo , bucket string ) error {
274- sessionProvider , err := newS3Session (info .Endpoint , info .Ak , info .Sk , "" , info .PathStyle )
278+ sessionProvider , err := newS3Session (info .Endpoint , info .Ak , info .Sk , "" , info .AddressFormat )
275279 if err != nil {
276280 return err
277281 }
@@ -281,7 +285,7 @@ func (c *awss3Storage) HeadExternalBucket(info models.ExternalObjectInfo, bucket
281285
282286// ListExternalBucketObjects ListExternalBucketObjects
283287func (c * awss3Storage ) ListExternalBucketObjects (info models.ExternalObjectInfo , bucket string , params * models.ObjectParams ) (* models.ListObjectsResult , error ) {
284- sessionProvider , err := newS3Session (info .Endpoint , info .Ak , info .Sk , "" , info .PathStyle )
288+ sessionProvider , err := newS3Session (info .Endpoint , info .Ak , info .Sk , "" , info .AddressFormat )
285289 if err != nil {
286290 return nil , err
287291 }
@@ -298,7 +302,7 @@ func (c *awss3Storage) ListExternalBucketObjects(info models.ExternalObjectInfo,
298302
299303// GenExternalObjectURL GenExternalObjectURL
300304func (c * awss3Storage ) GenExternalObjectURL (info models.ExternalObjectInfo , bucket , object string ) (* models.ObjectURL , error ) {
301- sessionProvider , err := newS3Session (info .Endpoint , info .Ak , info .Sk , "" , info .PathStyle )
305+ sessionProvider , err := newS3Session (info .Endpoint , info .Ak , info .Sk , "" , info .AddressFormat )
302306 if err != nil {
303307 return nil , err
304308 }
@@ -325,11 +329,15 @@ func (c *awss3Storage) checkInternalSupported() error {
325329 return nil
326330}
327331
328- func newS3Session (endpoint , ak , sk , region string , pathStyle bool ) (* session.Session , error ) {
332+ func newS3Session (endpoint , ak , sk , region , addressFormat string ) (* session.Session , error ) {
329333 if region == "" {
330334 region = "us-east-1"
331335 }
332336
337+ pathStyle := true
338+ if addressFormat == VirtualHost {
339+ pathStyle = false
340+ }
333341 s3Config := & aws.Config {
334342 Credentials : credentials .NewStaticCredentials (ak , sk , "" ),
335343 Endpoint : aws .String (endpoint ),
0 commit comments