11var util = require ( './util' ) ;
22
3+ var region_utils = require ( './region/utils' ) ;
4+ var isFipsRegion = region_utils . isFipsRegion ;
5+ var getRealRegion = region_utils . getRealRegion ;
6+
37util . isBrowser = function ( ) { return false ; } ;
48util . isNode = function ( ) { return true ; } ;
59
@@ -96,6 +100,44 @@ AWS.CredentialProviderChain.defaultProviders = [
96100 function ( ) { return new AWS . EC2MetadataCredentials ( ) ; }
97101] ;
98102
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+
99141// Update configuration keys
100142AWS . util . update ( AWS . Config . prototype . keys , {
101143 credentials : function ( ) {
@@ -116,27 +158,14 @@ AWS.util.update(AWS.Config.prototype.keys, {
116158 return process . env . AWSJS_DEBUG ? console : null ;
117159 } ,
118160 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 ) ;
140169 }
141170} ) ;
142171
0 commit comments