UNPKG

@webda/aws

Version:

Webda AWS Services implementation

104 lines 2.67 kB
import { SecretsManager } from "@aws-sdk/client-secrets-manager"; import { Service, ServiceParameters } from "@webda/core"; import { AWSServiceParameters } from "./aws-mixin.js"; export class AWSSecretsManagerParameters extends AWSServiceParameters(ServiceParameters) { } /** * @WebdaModda */ export default class AWSSecretsManager extends Service { /** * @inheritdoc */ loadParameters(params) { return new AWSSecretsManagerParameters(params); } /** * @inheritdoc */ computeParameters() { this._client = new SecretsManager(this.parameters); } /** * @inheritdoc */ canTriggerConfiguration(_id, _callback) { return false; } /** * @inheritdoc */ async getConfiguration(id) { return this.get(id); } /** * Create a new secret on AWS SecretsManager * * @param id * @param values * @param params */ async create(id, values = {}, params = {}) { params.Name = id; params.SecretString = JSON.stringify(values); await this._client.createSecret(params); } /** * Delete a secret * * @param SecretId to delete * @param RecoveryWindowInDays * @param ForceDeleteWithoutRecovery */ async delete(SecretId, RecoveryWindowInDays = 7, ForceDeleteWithoutRecovery = false) { let params = { RecoveryWindowInDays, SecretId }; if (ForceDeleteWithoutRecovery) { params = { SecretId, ForceDeleteWithoutRecovery }; } await this._client.deleteSecret(params); } /** * Store data in a AWS secret * * @param SecretId * @param value */ async put(SecretId, value) { await this._client.putSecretValue({ SecretId, SecretString: JSON.stringify(value) }); } /** * Return SecretValue * * @param SecretId * @returns JSON.parse of SecretString */ async get(SecretId) { let res = await this._client.getSecretValue({ SecretId }); return JSON.parse(res.SecretString); } /** * @inheritdoc */ getARNPolicy(accountId) { let region = this.parameters.region || "us-east-1"; return { Sid: this.constructor.name + this._name, Effect: "Allow", Action: ["secretsmanager:*"], Resource: ["arn:aws:secretsmanager:" + region + ":" + accountId + ":secret:*"] }; } } export { AWSSecretsManager }; //# sourceMappingURL=secretsmanager.js.map