1
1
var util = require ( './util' ) ;
2
2
3
+ var region_utils = require ( './region/utils' ) ;
4
+ var isFipsRegion = region_utils . isFipsRegion ;
5
+ var getRealRegion = region_utils . getRealRegion ;
6
+
3
7
util . isBrowser = function ( ) { return false ; } ;
4
8
util . isNode = function ( ) { return true ; } ;
5
9
@@ -96,6 +100,44 @@ AWS.CredentialProviderChain.defaultProviders = [
96
100
function ( ) { return new AWS . EC2MetadataCredentials ( ) ; }
97
101
] ;
98
102
103
+ var getRegion = function ( ) {
104
+ var env = process . env ;
105
+ var region = env . AWS_REGION || env . AMAZON_REGION ;
106
+ if ( env [ AWS . util . configOptInEnv ] ) {
107
+ var toCheck = [
108
+ { filename : env [ AWS . util . sharedCredentialsFileEnv ] } ,
109
+ { isConfig : true , filename : env [ AWS . util . sharedConfigFileEnv ] }
110
+ ] ;
111
+ var iniLoader = AWS . util . iniLoader ;
112
+ while ( ! region && toCheck . length ) {
113
+ var configFile = { } ;
114
+ var fileInfo = toCheck . shift ( ) ;
115
+ try {
116
+ configFile = iniLoader . loadFrom ( fileInfo ) ;
117
+ } catch ( err ) {
118
+ if ( fileInfo . isConfig ) throw err ;
119
+ }
120
+ var profile = configFile [ env . AWS_PROFILE || AWS . util . defaultProfile ] ;
121
+ region = profile && profile . region ;
122
+ }
123
+ }
124
+ return region ;
125
+ } ;
126
+
127
+ var getBooleanValue = function ( value ) {
128
+ return value === 'true' ? true : value === 'false' ? false : undefined ;
129
+ } ;
130
+
131
+ var USE_FIPS_ENDPOINT_CONFIG_OPTIONS = {
132
+ environmentVariableSelector : function ( env ) {
133
+ return getBooleanValue ( env [ 'AWS_USE_FIPS_ENDPOINT' ] ) ;
134
+ } ,
135
+ configFileSelector : function ( profile ) {
136
+ return getBooleanValue ( profile [ 'use_fips_endpoint' ] ) ;
137
+ } ,
138
+ default : false ,
139
+ } ;
140
+
99
141
// Update configuration keys
100
142
AWS . util . update ( AWS . Config . prototype . keys , {
101
143
credentials : function ( ) {
@@ -116,27 +158,14 @@ AWS.util.update(AWS.Config.prototype.keys, {
116
158
return process . env . AWSJS_DEBUG ? console : null ;
117
159
} ,
118
160
region : function ( ) {
119
- var env = process . env ;
120
- var region = env . AWS_REGION || env . AMAZON_REGION ;
121
- if ( env [ AWS . util . configOptInEnv ] ) {
122
- var toCheck = [
123
- { filename : env [ AWS . util . sharedCredentialsFileEnv ] } ,
124
- { isConfig : true , filename : env [ AWS . util . sharedConfigFileEnv ] }
125
- ] ;
126
- var iniLoader = AWS . util . iniLoader ;
127
- while ( ! region && toCheck . length ) {
128
- var configFile = { } ;
129
- var fileInfo = toCheck . shift ( ) ;
130
- try {
131
- configFile = iniLoader . loadFrom ( fileInfo ) ;
132
- } catch ( err ) {
133
- if ( fileInfo . isConfig ) throw err ;
134
- }
135
- var profile = configFile [ env . AWS_PROFILE || AWS . util . defaultProfile ] ;
136
- region = profile && profile . region ;
137
- }
138
- }
139
- return region ;
161
+ var region = getRegion ( ) ;
162
+ return region ? getRealRegion ( region ) : undefined ;
163
+ } ,
164
+ useFipsEndpoint : function ( ) {
165
+ var region = getRegion ( ) ;
166
+ return isFipsRegion ( region )
167
+ ? true
168
+ : util . loadConfig ( USE_FIPS_ENDPOINT_CONFIG_OPTIONS ) ;
140
169
}
141
170
} ) ;
142
171
0 commit comments