Skip to content

Aayu8982/aws-secret-manager-client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AWS Secret Manager client for Node.js

A package contains Asynchronous and Synchronous functions to perform oprations on AWS Secret Manager.

NPM

Features

  • 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)

Installation

  npm install aws-secret-manager-client --save

Usage/Examples

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} 🚀`)
});

API Reference

Retrieve Secret

  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

Create Secret

  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

Delete Secret

  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

Update Secret

  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

Author

Support

For support and queries, email aayu8982@gmail.com