@opensearch-project/opensearch
Version:
The official OpenSearch client for Node.js
53 lines (47 loc) • 1.43 kB
JavaScript
/*
* Copyright OpenSearch Contributors
* SPDX-License-Identifier: Apache-2.0
*
* The OpenSearch Contributors require contributions made to
* this file be licensed under the Apache-2.0 license or a
* compatible open source license.
*
*/
;
const AwsSigv4SignerError = require('./errors');
const { giveAwsV4Signer, giveAwsCredentialProviderLoader } = require('./shared');
const getAwsSDKCredentialsProvider = async () => {
// First try V3
try {
const awsV3 = await import('@aws-sdk/credential-provider-node');
if (typeof awsV3.defaultProvider === 'function') {
return awsV3.defaultProvider();
}
} catch (err) {
// Ignore
}
try {
const awsV2 = await import('aws-sdk');
if (awsV2.default && typeof awsV2.default.config.getCredentials === 'function') {
return () =>
new Promise((resolve, reject) => {
awsV2.default.config.getCredentials((err, credentials) => {
if (err) {
reject(err);
} else {
resolve(credentials);
}
});
});
}
} catch (err) {
// Ignore
}
throw new AwsSigv4SignerError(
'Unable to find a valid AWS SDK, please provide a valid getCredentials function to AwsSigv4Signer options.'
);
};
const AwsSigv4Signer = giveAwsV4Signer(
giveAwsCredentialProviderLoader(getAwsSDKCredentialsProvider)
);
module.exports = AwsSigv4Signer;