Backend half
This commit is contained in:
+204
@@ -0,0 +1,204 @@
|
||||
var util = require('./util');
|
||||
|
||||
var region_utils = require('./region/utils');
|
||||
var isFipsRegion = region_utils.isFipsRegion;
|
||||
var getRealRegion = region_utils.getRealRegion;
|
||||
|
||||
util.isBrowser = function() { return false; };
|
||||
util.isNode = function() { return true; };
|
||||
|
||||
// node.js specific modules
|
||||
util.crypto.lib = require('crypto');
|
||||
util.Buffer = require('buffer').Buffer;
|
||||
util.domain = require('domain');
|
||||
util.stream = require('stream');
|
||||
util.url = require('url');
|
||||
util.querystring = require('querystring');
|
||||
util.environment = 'nodejs';
|
||||
util.createEventStream = util.stream.Readable ?
|
||||
require('./event-stream/streaming-create-event-stream').createEventStream : require('./event-stream/buffered-create-event-stream').createEventStream;
|
||||
util.realClock = require('./realclock/nodeClock');
|
||||
util.clientSideMonitoring = {
|
||||
Publisher: require('./publisher').Publisher,
|
||||
configProvider: require('./publisher/configuration'),
|
||||
};
|
||||
util.iniLoader = require('./shared-ini').iniLoader;
|
||||
util.getSystemErrorName = require('util').getSystemErrorName;
|
||||
|
||||
util.loadConfig = function(options) {
|
||||
var envValue = options.environmentVariableSelector(process.env);
|
||||
if (envValue !== undefined) {
|
||||
return envValue;
|
||||
}
|
||||
|
||||
var configFile = {};
|
||||
try {
|
||||
configFile = util.iniLoader ? util.iniLoader.loadFrom({
|
||||
isConfig: true,
|
||||
filename: process.env[util.sharedConfigFileEnv]
|
||||
}) : {};
|
||||
} catch (e) {}
|
||||
var sharedFileConfig = configFile[
|
||||
process.env.AWS_PROFILE || util.defaultProfile
|
||||
] || {};
|
||||
var configValue = options.configFileSelector(sharedFileConfig);
|
||||
if (configValue !== undefined) {
|
||||
return configValue;
|
||||
}
|
||||
|
||||
if (typeof options.default === 'function') {
|
||||
return options.default();
|
||||
}
|
||||
return options.default;
|
||||
};
|
||||
|
||||
var AWS;
|
||||
|
||||
/**
|
||||
* @api private
|
||||
*/
|
||||
module.exports = AWS = require('./core');
|
||||
|
||||
require('./credentials');
|
||||
require('./credentials/credential_provider_chain');
|
||||
require('./credentials/temporary_credentials');
|
||||
require('./credentials/chainable_temporary_credentials');
|
||||
require('./credentials/web_identity_credentials');
|
||||
require('./credentials/cognito_identity_credentials');
|
||||
require('./credentials/saml_credentials');
|
||||
require('./credentials/process_credentials');
|
||||
|
||||
// Load the xml2js XML parser
|
||||
AWS.XML.Parser = require('./xml/node_parser');
|
||||
|
||||
// Load Node HTTP client
|
||||
require('./http/node');
|
||||
|
||||
require('./shared-ini/ini-loader');
|
||||
|
||||
// Load custom credential providers
|
||||
require('./credentials/token_file_web_identity_credentials');
|
||||
require('./credentials/ec2_metadata_credentials');
|
||||
require('./credentials/remote_credentials');
|
||||
require('./credentials/ecs_credentials');
|
||||
require('./credentials/environment_credentials');
|
||||
require('./credentials/file_system_credentials');
|
||||
require('./credentials/shared_ini_file_credentials');
|
||||
require('./credentials/process_credentials');
|
||||
require('./credentials/sso_credentials');
|
||||
|
||||
// Setup default providers for credentials chain
|
||||
// If this changes, please update documentation for
|
||||
// AWS.CredentialProviderChain.defaultProviders in
|
||||
// credentials/credential_provider_chain.js
|
||||
AWS.CredentialProviderChain.defaultProviders = [
|
||||
function () { return new AWS.EnvironmentCredentials('AWS'); },
|
||||
function () { return new AWS.EnvironmentCredentials('AMAZON'); },
|
||||
function () { return new AWS.SsoCredentials(); },
|
||||
function () { return new AWS.SharedIniFileCredentials(); },
|
||||
function () { return new AWS.ECSCredentials(); },
|
||||
function () { return new AWS.ProcessCredentials(); },
|
||||
function () { return new AWS.TokenFileWebIdentityCredentials(); },
|
||||
function () { return new AWS.EC2MetadataCredentials(); }
|
||||
];
|
||||
|
||||
// Load custom token providers
|
||||
require('./token');
|
||||
require('./token/token_provider_chain');
|
||||
require('./token/sso_token_provider');
|
||||
|
||||
// Setup default providers for token chain
|
||||
// If this changes, please update documentation for
|
||||
// AWS.TokenProviderChain.defaultProviders in
|
||||
// token/token_provider_chain.js
|
||||
AWS.TokenProviderChain.defaultProviders = [
|
||||
function () { return new AWS.SSOTokenProvider(); },
|
||||
];
|
||||
|
||||
var getRegion = function() {
|
||||
var env = process.env;
|
||||
var region = env.AWS_REGION || env.AMAZON_REGION;
|
||||
if (env[AWS.util.configOptInEnv]) {
|
||||
var toCheck = [
|
||||
{filename: env[AWS.util.sharedCredentialsFileEnv]},
|
||||
{isConfig: true, filename: env[AWS.util.sharedConfigFileEnv]}
|
||||
];
|
||||
var iniLoader = AWS.util.iniLoader;
|
||||
while (!region && toCheck.length) {
|
||||
var configFile = {};
|
||||
var fileInfo = toCheck.shift();
|
||||
try {
|
||||
configFile = iniLoader.loadFrom(fileInfo);
|
||||
} catch (err) {
|
||||
if (fileInfo.isConfig) throw err;
|
||||
}
|
||||
var profile = configFile[env.AWS_PROFILE || AWS.util.defaultProfile];
|
||||
region = profile && profile.region;
|
||||
}
|
||||
}
|
||||
return region;
|
||||
};
|
||||
|
||||
var getBooleanValue = function(value) {
|
||||
return value === 'true' ? true: value === 'false' ? false: undefined;
|
||||
};
|
||||
|
||||
var USE_FIPS_ENDPOINT_CONFIG_OPTIONS = {
|
||||
environmentVariableSelector: function(env) {
|
||||
return getBooleanValue(env['AWS_USE_FIPS_ENDPOINT']);
|
||||
},
|
||||
configFileSelector: function(profile) {
|
||||
return getBooleanValue(profile['use_fips_endpoint']);
|
||||
},
|
||||
default: false,
|
||||
};
|
||||
|
||||
var USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS = {
|
||||
environmentVariableSelector: function(env) {
|
||||
return getBooleanValue(env['AWS_USE_DUALSTACK_ENDPOINT']);
|
||||
},
|
||||
configFileSelector: function(profile) {
|
||||
return getBooleanValue(profile['use_dualstack_endpoint']);
|
||||
},
|
||||
default: false,
|
||||
};
|
||||
|
||||
// Update configuration keys
|
||||
AWS.util.update(AWS.Config.prototype.keys, {
|
||||
credentials: function () {
|
||||
var credentials = null;
|
||||
new AWS.CredentialProviderChain([
|
||||
function () { return new AWS.EnvironmentCredentials('AWS'); },
|
||||
function () { return new AWS.EnvironmentCredentials('AMAZON'); },
|
||||
function () { return new AWS.SharedIniFileCredentials({ disableAssumeRole: true }); }
|
||||
]).resolve(function(err, creds) {
|
||||
if (!err) credentials = creds;
|
||||
});
|
||||
return credentials;
|
||||
},
|
||||
credentialProvider: function() {
|
||||
return new AWS.CredentialProviderChain();
|
||||
},
|
||||
logger: function () {
|
||||
return process.env.AWSJS_DEBUG ? console : null;
|
||||
},
|
||||
region: function() {
|
||||
var region = getRegion();
|
||||
return region ? getRealRegion(region): undefined;
|
||||
},
|
||||
tokenProvider: function() {
|
||||
return new AWS.TokenProviderChain();
|
||||
},
|
||||
useFipsEndpoint: function() {
|
||||
var region = getRegion();
|
||||
return isFipsRegion(region)
|
||||
? true
|
||||
: util.loadConfig(USE_FIPS_ENDPOINT_CONFIG_OPTIONS);
|
||||
},
|
||||
useDualstackEndpoint: function() {
|
||||
return util.loadConfig(USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS);
|
||||
}
|
||||
});
|
||||
|
||||
// Reset configuration
|
||||
AWS.config = new AWS.Config();
|
||||
Reference in New Issue
Block a user