@@ -2,18 +2,11 @@ package config
2
2
3
3
import (
4
4
"context"
5
+ "os"
5
6
6
7
"github.com/aws/aws-sdk-go-v2/aws"
7
8
)
8
9
9
- // defaultLoaders are a slice of functions that will read external configuration
10
- // sources for configuration values. These values are read by the AWSConfigResolvers
11
- // using interfaces to extract specific information from the external configuration.
12
- var defaultLoaders = []loader {
13
- loadEnvConfig ,
14
- loadSharedConfigIgnoreNotExist ,
15
- }
16
-
17
10
// defaultAWSConfigResolvers are a slice of functions that will resolve external
18
11
// configuration values into AWS configuration values.
19
12
//
@@ -190,7 +183,7 @@ func LoadDefaultConfig(ctx context.Context, optFns ...func(*LoadOptions) error)
190
183
// assign Load Options to configs
191
184
var cfgCpy = configs {options }
192
185
193
- cfgCpy , err = cfgCpy .AppendFromLoaders (ctx , defaultLoaders )
186
+ cfgCpy , err = cfgCpy .AppendFromLoaders (ctx , resolveConfigLoaders ( & options ) )
194
187
if err != nil {
195
188
return aws.Config {}, err
196
189
}
@@ -202,3 +195,17 @@ func LoadDefaultConfig(ctx context.Context, optFns ...func(*LoadOptions) error)
202
195
203
196
return cfg , nil
204
197
}
198
+
199
+ func resolveConfigLoaders (options * LoadOptions ) []loader {
200
+ loaders := make ([]loader , 2 )
201
+ loaders [0 ] = loadEnvConfig
202
+
203
+ // specification of a profile should cause a load failure if it doesn't exist
204
+ if os .Getenv (awsProfileEnvVar ) != "" || options .SharedConfigProfile != "" {
205
+ loaders [1 ] = loadSharedConfig
206
+ } else {
207
+ loaders [1 ] = loadSharedConfigIgnoreNotExist
208
+ }
209
+
210
+ return loaders
211
+ }
0 commit comments