Skip to content

Commit cef15bc

Browse files
authored
Merge pull request #198 from pracucci/fix-aws-config-from-url
Fixed aws.ConfigFromURL() when URL contains @ but no user/pass
2 parents 9c2ce77 + c5bd04a commit cef15bc

File tree

2 files changed

+18
-5
lines changed

2 files changed

+18
-5
lines changed

aws/config.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,13 @@ func ConfigFromURL(awsURL *url.URL) (*aws.Config, error) {
4040
})
4141

4242
if awsURL.User != nil {
43+
username := awsURL.User.Username()
4344
password, _ := awsURL.User.Password()
44-
creds := credentials.NewStaticCredentials(awsURL.User.Username(), password, "")
45-
config = config.WithCredentials(creds)
45+
46+
// We request at least the username or password being set to enable the static credentials.
47+
if username != "" || password != "" {
48+
config = config.WithCredentials(credentials.NewStaticCredentials(username, password, ""))
49+
}
4650
}
4751

4852
if strings.Contains(awsURL.Host, ".") {

aws/config_test.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,13 @@ func TestAWSConfigFromURL(t *testing.T) {
2424
"dummy",
2525
"http://s3.default.svc.cluster.local:4569",
2626
},
27+
{
28+
"s3://@us-east-1/test-bucket",
29+
"",
30+
"",
31+
"us-east-1",
32+
"",
33+
},
2734
{
2835
"dynamodb://user:[email protected]:8000/cortex",
2936
"user",
@@ -54,10 +61,10 @@ func TestAWSConfigFromURL(t *testing.T) {
5461
cfg, err := ConfigFromURL(parsedURL)
5562
require.NoError(t, err)
5663

57-
if cfg.Credentials == nil {
58-
assert.Equal(t, "", tc.expectedKey)
59-
assert.Equal(t, "", tc.expectedSecret)
64+
if tc.expectedKey == "" && tc.expectedSecret == "" {
65+
assert.Nil(t, cfg.Credentials)
6066
} else {
67+
require.NotNil(t, cfg.Credentials)
6168
val, err := cfg.Credentials.Get()
6269
require.NoError(t, err)
6370
assert.Equal(t, tc.expectedKey, val.AccessKeyID)
@@ -70,6 +77,8 @@ func TestAWSConfigFromURL(t *testing.T) {
7077
if tc.expectedEp != "" {
7178
require.NotNil(t, cfg.Endpoint)
7279
assert.Equal(t, tc.expectedEp, *cfg.Endpoint)
80+
} else {
81+
assert.Nil(t, cfg.Endpoint)
7382
}
7483
})
7584
}

0 commit comments

Comments
 (0)