@@ -39,17 +39,22 @@ class Configuration
39
39
self ::OPTION_ROLE_SESSION_NAME => true ,
40
40
];
41
41
42
+ // Put fallback options into groups to avoid mixing of provided config and environment variables
42
43
private const FALLBACK_OPTIONS = [
43
- self ::OPTION_REGION => ['AWS_REGION ' , 'AWS_DEFAULT_REGION ' ],
44
- self ::OPTION_PROFILE => ['AWS_PROFILE ' , 'AWS_DEFAULT_PROFILE ' ],
45
- self ::OPTION_ACCESS_KEY_ID => ['AWS_ACCESS_KEY_ID ' , 'AWS_ACCESS_KEY ' ],
46
- self ::OPTION_SECRET_ACCESS_KEY => ['AWS_SECRET_ACCESS_KEY ' , 'AWS_SECRET_KEY ' ],
47
- self ::OPTION_SESSION_TOKEN => 'AWS_SESSION_TOKEN ' ,
48
- self ::OPTION_SHARED_CREDENTIALS_FILE => 'AWS_SHARED_CREDENTIALS_FILE ' ,
49
- self ::OPTION_SHARED_CONFIG_FILE => 'AWS_CONFIG_FILE ' ,
50
- self ::OPTION_ROLE_ARN => 'AWS_ROLE_ARN ' ,
51
- self ::OPTION_WEB_IDENTITY_TOKEN_FILE => 'AWS_WEB_IDENTITY_TOKEN_FILE ' ,
52
- self ::OPTION_ROLE_SESSION_NAME => 'AWS_ROLE_SESSION_NAME ' ,
44
+ [self ::OPTION_REGION => ['AWS_REGION ' , 'AWS_DEFAULT_REGION ' ]],
45
+ [self ::OPTION_PROFILE => ['AWS_PROFILE ' , 'AWS_DEFAULT_PROFILE ' ]],
46
+ [
47
+ self ::OPTION_ACCESS_KEY_ID => ['AWS_ACCESS_KEY_ID ' , 'AWS_ACCESS_KEY ' ],
48
+ self ::OPTION_SECRET_ACCESS_KEY => ['AWS_SECRET_ACCESS_KEY ' , 'AWS_SECRET_KEY ' ],
49
+ self ::OPTION_SESSION_TOKEN => 'AWS_SESSION_TOKEN ' ,
50
+ ],
51
+ [self ::OPTION_SHARED_CREDENTIALS_FILE => 'AWS_SHARED_CREDENTIALS_FILE ' ],
52
+ [self ::OPTION_SHARED_CONFIG_FILE => 'AWS_CONFIG_FILE ' ],
53
+ [
54
+ self ::OPTION_ROLE_ARN => 'AWS_ROLE_ARN ' ,
55
+ self ::OPTION_WEB_IDENTITY_TOKEN_FILE => 'AWS_WEB_IDENTITY_TOKEN_FILE ' ,
56
+ self ::OPTION_ROLE_SESSION_NAME => 'AWS_ROLE_SESSION_NAME ' ,
57
+ ],
53
58
];
54
59
55
60
private const DEFAULT_OPTIONS = [
@@ -69,26 +74,32 @@ public static function create(array $options)
69
74
throw new InvalidArgument (\sprintf ('Invalid option(s) "%s" passed to "%s::%s". ' , \implode ('", " ' , \array_keys ($ invalidOptions )), __CLASS__ , __METHOD__ ));
70
75
}
71
76
72
- foreach (self ::FALLBACK_OPTIONS as $ option => $ envVariableNames ) {
73
- if (isset ($ options [$ option ])) {
74
- continue ;
77
+ foreach (self ::FALLBACK_OPTIONS as $ fallbackGroup ) {
78
+ // prevent mixing env variables with config keys
79
+ foreach ($ fallbackGroup as $ option => $ envVariableNames ) {
80
+ if (isset ($ options [$ option ])) {
81
+ continue 2 ;
82
+ }
75
83
}
76
84
77
- foreach ((array ) $ envVariableNames as $ envVariableName ) {
78
- if (false !== $ value = \getenv ($ envVariableName )) {
79
- $ options [$ option ] = $ value ;
85
+ foreach ($ fallbackGroup as $ option => $ envVariableNames ) {
86
+ $ envVariableNames = (array ) $ envVariableNames ;
87
+ foreach ($ envVariableNames as $ envVariableName ) {
88
+ if (false !== $ value = \getenv ($ envVariableName )) {
89
+ $ options [$ option ] = $ value ;
80
90
81
- break ;
91
+ break ;
92
+ }
82
93
}
83
94
}
84
95
}
85
96
86
- foreach (self ::DEFAULT_OPTIONS as $ option => $ defaultValue ) {
87
- if (isset ($ options [$ option ])) {
97
+ foreach (self ::DEFAULT_OPTIONS as $ optionTrigger => $ defaultValue ) {
98
+ if (isset ($ options [$ optionTrigger ])) {
88
99
continue ;
89
100
}
90
101
91
- $ options [$ option ] = $ defaultValue ;
102
+ $ options [$ optionTrigger ] = $ defaultValue ;
92
103
}
93
104
94
105
$ configuration = new Configuration ();
0 commit comments