haven-secrets-core
Version:
Core for Haven, the easy to use centralized secrets manager.
39 lines (31 loc) • 1.43 kB
JavaScript
import constructTableName from "../utils/constructTableName.js";
import getLatestVersion from "../aws/dynamodb/items/getLatestVersion.js";
import updateItemAttribute from "../aws/dynamodb/items/updateItemAttribute.js";
import encryptItem from "../aws/encryption/encryptItem.js";
import putItem from "../aws/dynamodb/items/putItem.js";
import putLoggingItem from "../aws/dynamodb/items/putLoggingItem.js";
import { keyAlias } from "../utils/config.js";
const getVersion = async (secretName, tableName) => {
const version = await getLatestVersion(secretName, tableName);
if (version) {
await updateItemAttribute(secretName, version, tableName, "Latest", false);
return String(Number(version) + 1);
} else {
return "1";
}
};
const putSecret = async (project, environment, secretName, secretValue) => {
let version = "";
try {
const tableName = constructTableName(project, environment);
version = await getVersion(secretName, tableName);
const encryptedSecret = await encryptItem(secretName, secretValue, version, tableName, keyAlias);
await putItem(secretName, encryptedSecret, version, tableName);
putLoggingItem(project, environment, "put", secretName, version, "Successful");
} catch (error) {
console.log(`${error.code}: ${error.message}`);
putLoggingItem(project, environment, "put", secretName, version, error.code);
return error;
}
};
export default putSecret;