Create an AWS credentials instance from local credentials
Fetch a credentials instance from your local machine using a very simple fetcher method.
Avoid hardcoding and commiting secure information by using AWS' credentials file for configuration. Some AWS client libraries automatically read this file, but some do not. aws-get-credentials provides a quick and easy method to retrieve a credential file's config.
The aws-get-credentials module exports two methods:
getAWSCredentials- Fetch an AWSCredentialsinstance from local configurationgetAWSProfiles- Get an array of profile names available
Check out the API documentation for more information.
The method getAWSCredentials takes two parameters:
getAWSCredentials(
optionalProfileOverride,
optionalPathOverride,
useEnvironmentVariables = false
) // => Promise.<AWS.Credentials>optionalProfileOverride is an optional override for the profile to use (defaults to an environment variable AWS_DEFAULT_PROFILE first, then "default" lastly). optionalPathOverride is an optional override for the path to the credentials file (defaults to an environment variable AWS_CREDENTIALS_PATH first, and then ~/.aws/credentials lastly).
Providing true for the 3rd parameter, "useEnvironmentVariables", tells getAWSCredentials to return a Credentials instance using the available environment variables instead of trying to read from the local credentials file.
Firstly, import the function:
const { getAWSCredentials } = require("aws-get-credentials");Then use its output (promise):
const s3 = require("s3"); // example library
getAWSCredentials("production")
.then(function(credentials) {
const s3Client = s3.createClient({
s3Options: {
credentials
}
});
const syncOptions = {};
const uploader = s3Client.uploadDir(syncOptions);
return new Promise(function(resolve, reject) {
uploader.on("error", reject);
uploader.on("end", resolve);
});
});This method asynchronously fetches a list of profile names in the credentials file:
const { getAWSProfiles } = require("aws-get-credentials");
getAWSProfiles().then(profiles => {
// [
// "company-prod",
// "company-stag",
// "default"
// ]
});