@updating-secrets/aws-secrets-manager-adapter 1.0.4 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -25,7 +25,9 @@ export declare class AwsSecretsManagerAdapter extends BaseSecretsAdapter {
|
|
|
25
25
|
protected readonly awsSecretsManager: Readonly<NeededAwsSecretsManagerClient>;
|
|
26
26
|
constructor(awsSecretsManager: Readonly<NeededAwsSecretsManagerClient>);
|
|
27
27
|
/** Loads secrets from the provided `SecretsManagerClient`. */
|
|
28
|
-
loadSecrets(secrets: ProcessedSecretDefinitions):
|
|
28
|
+
loadSecrets(secrets: ProcessedSecretDefinitions): {
|
|
29
29
|
[x: string]: Error | Promise<any>;
|
|
30
|
-
}
|
|
30
|
+
};
|
|
31
|
+
/** Load an entire individual secret from AWS. */
|
|
32
|
+
loadSingleSecret(secretId: string): Promise<any>;
|
|
31
33
|
}
|
|
@@ -13,9 +13,7 @@ export class AwsSecretsManagerAdapter extends BaseSecretsAdapter {
|
|
|
13
13
|
this.awsSecretsManager = awsSecretsManager;
|
|
14
14
|
}
|
|
15
15
|
/** Loads secrets from the provided `SecretsManagerClient`. */
|
|
16
|
-
|
|
17
|
-
/* node:coverage ignore next 1: dynamic imports are not branches */
|
|
18
|
-
const { GetSecretValueCommand } = await import('@aws-sdk/client-secrets-manager');
|
|
16
|
+
loadSecrets(secrets) {
|
|
19
17
|
const cachedSecrets = {};
|
|
20
18
|
return mapObjectValuesSync(secrets, (secretName, secretDefinition) => {
|
|
21
19
|
const awsConfig = secretDefinition.adapterConfig.aws;
|
|
@@ -27,25 +25,7 @@ export class AwsSecretsManagerAdapter extends BaseSecretsAdapter {
|
|
|
27
25
|
return new Error(`Invalid AWS adapter key config for '${secretDefinition.secretName}'.`);
|
|
28
26
|
}
|
|
29
27
|
const secretValue = getOrSet(cachedSecrets, awsSecretName, () => {
|
|
30
|
-
|
|
31
|
-
SecretId: awsSecretName,
|
|
32
|
-
});
|
|
33
|
-
return this.awsSecretsManager.send(sendCommand).then((result) => {
|
|
34
|
-
try {
|
|
35
|
-
const secretValue = result.SecretString;
|
|
36
|
-
if (secretValue) {
|
|
37
|
-
return wrapInTry(() => parseWithJson5(secretValue), {
|
|
38
|
-
fallbackValue: secretValue,
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
throw new Error(`AWS SecretsManager secret '${awsSecretName}' has no string value.`);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
catch (error) {
|
|
46
|
-
return ensureError(error);
|
|
47
|
-
}
|
|
48
|
-
});
|
|
28
|
+
return this.loadSingleSecret(awsSecretName).catch((error) => ensureError(error));
|
|
49
29
|
});
|
|
50
30
|
return secretValue
|
|
51
31
|
.then((awsSecretValue) => {
|
|
@@ -68,4 +48,22 @@ export class AwsSecretsManagerAdapter extends BaseSecretsAdapter {
|
|
|
68
48
|
.catch((reason) => ensureErrorAndPrependMessage(reason, `Failed to load AWS secret '${awsSecretName}'`));
|
|
69
49
|
});
|
|
70
50
|
}
|
|
51
|
+
/** Load an entire individual secret from AWS. */
|
|
52
|
+
async loadSingleSecret(secretId) {
|
|
53
|
+
/* node:coverage ignore next 1: dynamic imports are not branches */
|
|
54
|
+
const { GetSecretValueCommand } = await import('@aws-sdk/client-secrets-manager');
|
|
55
|
+
const sendCommand = new GetSecretValueCommand({
|
|
56
|
+
SecretId: secretId,
|
|
57
|
+
});
|
|
58
|
+
const result = await this.awsSecretsManager.send(sendCommand);
|
|
59
|
+
const secretValue = result.SecretString;
|
|
60
|
+
if (secretValue) {
|
|
61
|
+
return wrapInTry(() => parseWithJson5(secretValue), {
|
|
62
|
+
fallbackValue: secretValue,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
throw new Error(`AWS SecretsManager secret '${secretId}' has no string value.`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
71
69
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@updating-secrets/aws-secrets-manager-adapter",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "AWS Secrets Manager adapter for the updating-secrets package.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"secrets",
|
|
@@ -39,15 +39,15 @@
|
|
|
39
39
|
"test:update": "npm test update"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@augment-vir/assert": "^31.
|
|
43
|
-
"@augment-vir/common": "^31.
|
|
42
|
+
"@augment-vir/assert": "^31.48.0",
|
|
43
|
+
"@augment-vir/common": "^31.48.0",
|
|
44
44
|
"@aws-sdk/client-secrets-manager": "^3.908.0",
|
|
45
|
-
"type-fest": "^5.
|
|
46
|
-
"updating-secrets": "^1.0
|
|
45
|
+
"type-fest": "^5.2.0",
|
|
46
|
+
"updating-secrets": "^1.1.0"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
|
-
"@augment-vir/test": "^31.
|
|
50
|
-
"@types/node": "^24.
|
|
49
|
+
"@augment-vir/test": "^31.48.0",
|
|
50
|
+
"@types/node": "^24.10.0",
|
|
51
51
|
"c8": "^10.1.3",
|
|
52
52
|
"istanbul-smart-text-reporter": "^1.1.5"
|
|
53
53
|
},
|