Skip to content

Commit ca45f9b

Browse files
authored
Remove credential config of GetBucketRegion by default (#3081)
* set GetBucketRegion cred to anonymous by default * add changelog
1 parent d3d6370 commit ca45f9b

File tree

4 files changed

+38
-16
lines changed

4 files changed

+38
-16
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"id": "096161d8-acea-4d53-afe3-32ec60aac3db",
3+
"type": "bugfix",
4+
"description": "Enable user to call GetBucketRegion without credential config",
5+
"modules": [
6+
"feature/s3/manager"
7+
]
8+
}

feature/s3/manager/bucket_region.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,20 +63,21 @@ const bucketRegionHeader = "X-Amz-Bucket-Region"
6363
//
6464
// manager.GetBucketRegion(ctx, s3.NewFromConfig(cfg), bucket, func(o *s3.Options) {
6565
// o.Credentials = nil
66-
// // Or
67-
// o.Credentials = aws.AnonymousCredentials{}
6866
// })
6967
//
7068
// The request with anonymous credentials will not be signed.
7169
// Otherwise credentials would be required for private buckets.
7270
func GetBucketRegion(ctx context.Context, client HeadBucketAPIClient, bucket string, optFns ...func(*s3.Options)) (string, error) {
7371
var captureBucketRegion deserializeBucketRegion
7472

75-
clientOptionFns := make([]func(*s3.Options), len(optFns)+1)
73+
clientOptionFns := make([]func(*s3.Options), len(optFns)+2)
7674
clientOptionFns[0] = func(options *s3.Options) {
7775
options.APIOptions = append(options.APIOptions, captureBucketRegion.RegisterMiddleware)
7876
}
79-
copy(clientOptionFns[1:], optFns)
77+
clientOptionFns[1] = func(options *s3.Options) {
78+
options.Credentials = nil
79+
}
80+
copy(clientOptionFns[2:], optFns)
8081

8182
_, err := client.HeadBucket(ctx, &s3.HeadBucketInput{
8283
Bucket: aws.String(bucket),

feature/s3/manager/bucket_region_test.go

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,8 @@ func testSetupGetBucketRegionServer(region string, statusCode int, incHeader boo
3939
}
4040

4141
var testGetBucketRegionCases = []struct {
42-
RespRegion string
43-
StatusCode int
44-
ExpectReqRegion string
42+
RespRegion string
43+
StatusCode int
4544
}{
4645
{
4746
RespRegion: "bucket-region",
@@ -56,9 +55,8 @@ var testGetBucketRegionCases = []struct {
5655
StatusCode: 200,
5756
},
5857
{
59-
RespRegion: "bucket-region",
60-
StatusCode: 200,
61-
ExpectReqRegion: "default-region",
58+
RespRegion: "bucket-region",
59+
StatusCode: 200,
6260
},
6361
}
6462

feature/s3/manager/integ_bucket_region_test.go

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,34 @@ import (
88
"testing"
99

1010
"github.com/aws/aws-sdk-go-v2/aws"
11+
"github.com/aws/aws-sdk-go-v2/credentials"
1112
"github.com/aws/aws-sdk-go-v2/feature/s3/manager"
1213
"github.com/aws/aws-sdk-go-v2/service/s3"
1314
)
1415

1516
func TestInteg_GetBucketRegion(t *testing.T) {
1617
expectRegion := integConfig.Region
17-
18-
region, err := manager.GetBucketRegion(context.Background(), s3.NewFromConfig(integConfig), aws.ToString(bucketName))
19-
if err != nil {
20-
t.Fatalf("expect no error, got %v", err)
18+
cases := map[string]struct {
19+
optFns []func(*s3.Options)
20+
}{
21+
"normal credentials": {[]func(o *s3.Options){}},
22+
"invalid credentials": {[]func(o *s3.Options){
23+
func(o *s3.Options) {
24+
o.Credentials = credentials.NewStaticCredentialsProvider("fakeDummy", "fakeDummy", "")
25+
},
26+
}},
2127
}
2228

23-
if e, a := expectRegion, region; e != a {
24-
t.Errorf("expect %s bucket region, got %s", e, a)
29+
for name, c := range cases {
30+
t.Run(name, func(t *testing.T) {
31+
region, err := manager.GetBucketRegion(context.Background(), s3.NewFromConfig(integConfig, c.optFns...), aws.ToString(bucketName))
32+
if err != nil {
33+
t.Fatalf("expect no error, got %v", err)
34+
}
35+
36+
if e, a := expectRegion, region; e != a {
37+
t.Errorf("expect %s bucket region, got %s", e, a)
38+
}
39+
})
2540
}
2641
}

0 commit comments

Comments
 (0)