@webda/aws
Version:
Webda AWS Services implementation
104 lines • 2.67 kB
JavaScript
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