A package contains Asynchronous and Synchronous functions to perform oprations on AWS Secret Manager.
- Fetch Secret (Async/Sync)
- Create Secret (Async/Sync)
- Update Secret (Async/Sync)
- Delete Secret (Async/Sync)
- Rotate Secret (Async/Sync)
- Cancel Rotate Secret (Async/Sync)
npm install aws-secret-manager-client --save
aws-secret-manager-client
is wrapper function for perform aws secret manager operations asynchronously/synchronously, secret manager api basically return promises, for behave like a synchronous function/api we have used deasync-promise which internally transform async function to sync.
const app = require("express")();
const SecretsManager = require("aws-secret-manager-client");
const client = new SecretsManager({ region: "us-east-1" });
// asynchronous
app.get("/getsecret", async (req, res) => {
const response = await client.getSecret("client1/dev/secrets");
res.send({
status: 200,
data: response,
});
});
// synchronous
app.get("/getsecretsync", (req, res) => {
const response = client.getSecretSync("client1/dev/secrets");
res.send({
status: 200,
data: response,
});
});
// synchronous function calling
function getSecretsviafunction(clientId) {
const data = client.getSecretSync(clientId);
return JSON.parse(data.SecretString);
}
console.log(getSecretsviafunction("client1/dev/secrets"));
// asyncronous
app.post("/createsecret", async (req, res) => {
let params = {
Description: "My test database secret created with the CLI",
Name: "MyTestDatabaseSecret",
SecretString: '{"username":"dextor","password":"EXAMPLE-PASSWORD"}',
};
const response = await client.createSecret(params);
res.send({
status: 200,
data: response,
});
});
// synchronous
app.get("/createsecretsync", (req, res) => {
let params = {
Description: "My test database secret created with the CLI",
Name: "MyTestDatabaseSecret 1",
SecretString: '{"username":"dextor","password":"EXAMPLE-PASSWORD"}',
};
const response = client.createSecretSync(params);
res.send({
status: 200,
data: response,
});
});
// synchronous function calling
function createSecretsviafunction(params) {
const data = client.createSecretSync(params);
return data;
}
let params = {
Description: "My test database secret created with the CLI",
Name: "MyTestDatabaseSecret 2",
SecretString: '{"username":"dextor","password":"EXAMPLE-PASSWORD"}',
};
console.log(createSecretsviafunction(params));
// Server
const port = 5001;
app.listen(port,()=>{
console.log(`🚀 Something is cooking on port ${port} 🚀`)
});
client.getSecret(SecretId) || client.getSecretSync(SecretId)
Parameter | Type | Description |
---|---|---|
SecretId |
string |
Required. Your Secret Name |
More Details :- https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SecretsManager.html#getSecretValue-property
client.createSecret(params) || client.createSecretSync(params)
Parameter | Type | Description |
---|---|---|
Name |
string |
Required. The name of the new secret. |
ClientRequestToken |
string |
Optional. SecretString or SecretBinary. |
Description |
string |
Required. The description of the secret. |
KmsKeyId |
string |
Optional The ARN, key ID, or alias of the KMS key to encrypt the secret. If you don't include this field, Secrets Manager uses aws/secretsmanager. |
More Details :- https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SecretsManager.html#createSecret-property
client.deleteSecret(SecretId) || client.deleteSecretSync(SecretId)
Parameter | Type | Description |
---|---|---|
SecretId |
string |
Required. Your Secret Name |
More Details :- https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SecretsManager.html#deleteSecret-property
client.updateSecret(SecretId) || client.updateSecretSync(SecretId)
Parameter | Type | Description |
---|---|---|
SecretId |
string |
Required. Your Secret Name |
SecretString |
string |
Required. "{JSON STRING WITH CREDENTIALS}" |
More Details :- https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SecretsManager.html#updateSecret-property
For support and queries, email [email protected]