12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- var AWS = require('../core');
- /**
- * Represents credentials from the environment.
- *
- * By default, this class will look for the matching environment variables
- * prefixed by a given {envPrefix}. The un-prefixed environment variable names
- * for each credential value is listed below:
- *
- * ```javascript
- * accessKeyId: ACCESS_KEY_ID
- * secretAccessKey: SECRET_ACCESS_KEY
- * sessionToken: SESSION_TOKEN
- * ```
- *
- * With the default prefix of 'AWS', the environment variables would be:
- *
- * AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN
- *
- * @!attribute envPrefix
- * @readonly
- * @return [String] the prefix for the environment variable names excluding
- * the separating underscore ('_').
- */
- AWS.EnvironmentCredentials = AWS.util.inherit(AWS.Credentials, {
- /**
- * Creates a new EnvironmentCredentials class with a given variable
- * prefix {envPrefix}. For example, to load credentials using the 'AWS'
- * prefix:
- *
- * ```javascript
- * var creds = new AWS.EnvironmentCredentials('AWS');
- * creds.accessKeyId == 'AKID' // from AWS_ACCESS_KEY_ID env var
- * ```
- *
- * @param envPrefix [String] the prefix to use (e.g., 'AWS') for environment
- * variables. Do not include the separating underscore.
- */
- constructor: function EnvironmentCredentials(envPrefix) {
- AWS.Credentials.call(this);
- this.envPrefix = envPrefix;
- this.get(function() {});
- },
- /**
- * Loads credentials from the environment using the prefixed
- * environment variables.
- *
- * @callback callback function(err)
- * Called after the (prefixed) ACCESS_KEY_ID, SECRET_ACCESS_KEY, and
- * SESSION_TOKEN environment variables are read. When this callback is
- * called with no error, it means that the credentials information has
- * been loaded into the object (as the `accessKeyId`, `secretAccessKey`,
- * and `sessionToken` properties).
- * @param err [Error] if an error occurred, this value will be filled
- * @see get
- */
- refresh: function refresh(callback) {
- if (!callback) callback = AWS.util.fn.callback;
- if (!process || !process.env) {
- callback(AWS.util.error(
- new Error('No process info or environment variables available'),
- { code: 'EnvironmentCredentialsProviderFailure' }
- ));
- return;
- }
- var keys = ['ACCESS_KEY_ID', 'SECRET_ACCESS_KEY', 'SESSION_TOKEN'];
- var values = [];
- for (var i = 0; i < keys.length; i++) {
- var prefix = '';
- if (this.envPrefix) prefix = this.envPrefix + '_';
- values[i] = process.env[prefix + keys[i]];
- if (!values[i] && keys[i] !== 'SESSION_TOKEN') {
- callback(AWS.util.error(
- new Error('Variable ' + prefix + keys[i] + ' not set.'),
- { code: 'EnvironmentCredentialsProviderFailure' }
- ));
- return;
- }
- }
- this.expired = false;
- AWS.Credentials.apply(this, values);
- callback();
- }
- });
|