-
Notifications
You must be signed in to change notification settings - Fork 121
/
AwsSigv4Signer.js
52 lines (47 loc) · 1.39 KB
/
AwsSigv4Signer.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/*
* 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.
*
*/
'use strict';
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;