aws-parameter-cache
Version:
Parameter cache for AWS System Manager Parameter Store and AWS Secrets Manager
45 lines • 6.92 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Secret = void 0;
const client_secrets_manager_1 = require("@aws-sdk/client-secrets-manager");
const refreshable_1 = require("./refreshable");
class Secret extends refreshable_1.Refreshable {
constructor(props) {
super(props.maxAge);
this.secretId = props.secretId;
this.versionId = props.versionId;
this.versionStage = props.versionStage;
this.key = props.key;
this.secretsManagerClient = new client_secrets_manager_1.SecretsManagerClient({ ...props.secretsManagerClientConfig });
}
get secretString() {
return this.getSecretString();
}
async getSecretString() {
if (!this.cachedResponse || this.isExpired()) {
this.refresh();
}
if (this.cachedResponse) {
const data = await this.cachedResponse;
if (data.SecretString) {
return this.key
? JSON.parse(data.SecretString)[this.key]
: data.SecretString;
}
}
throw new Error(`The secretString is missing for secret ${this.secretId}`);
}
refreshParameter() {
this.cachedResponse = this.getSecretValue();
}
getSecretValue() {
const command = new client_secrets_manager_1.GetSecretValueCommand({
SecretId: this.secretId,
VersionId: this.versionId,
VersionStage: this.versionStage,
});
return this.secretsManagerClient.send(command);
}
}
exports.Secret = Secret;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NlY3JldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw0RUFBdUo7QUFDdkosK0NBQTRDO0FBcUI1QyxNQUFhLE1BQU8sU0FBUSx5QkFBVztJQVNyQyxZQUFZLEtBQWtCO1FBQzVCLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQy9CLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUNqQyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7UUFDdkMsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLDZDQUFvQixDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDO0lBQ2hHLENBQUM7SUFFRCxJQUFXLFlBQVk7UUFDckIsT0FBTyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVNLEtBQUssQ0FBQyxlQUFlO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUM1QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDaEI7UUFFRCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdkIsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDO1lBRXZDLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDckIsT0FBTyxJQUFJLENBQUMsR0FBRztvQkFDYixDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztvQkFDekMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7YUFDdkI7U0FDRjtRQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFUyxnQkFBZ0I7UUFDeEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUVPLGNBQWM7UUFDcEIsTUFBTSxPQUFPLEdBQUcsSUFBSSw4Q0FBcUIsQ0FBQztZQUN4QyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtTQUNoQyxDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakQsQ0FBQztDQUNGO0FBcERELHdCQW9EQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlY3JldHNNYW5hZ2VyQ2xpZW50LCBHZXRTZWNyZXRWYWx1ZUNvbW1hbmQsIFNlY3JldHNNYW5hZ2VyQ2xpZW50Q29uZmlnLCBHZXRTZWNyZXRWYWx1ZUNvbW1hbmRPdXRwdXQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtc2VjcmV0cy1tYW5hZ2VyJztcbmltcG9ydCB7IFJlZnJlc2hhYmxlIH0gZnJvbSAnLi9yZWZyZXNoYWJsZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VjcmV0UHJvcHMge1xuICAvKiogU3BlY2lmaWVzIHRoZSBzZWNyZXQgY29udGFpbmluZyB0aGUgdmVyc2lvbiB0aGF0IHlvdSB3YW50IHRvIHJldHJpZXZlLiAqL1xuICBzZWNyZXRJZDogc3RyaW5nO1xuXG4gIC8qKiBTcGVjaWZpZXMgdGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSB2ZXJzaW9uIG9mIHRoZSBzZWNyZXQgdGhhdCB5b3Ugd2FudCB0byByZXRyaWV2ZS4gKi9cbiAgdmVyc2lvbklkPzogc3RyaW5nO1xuXG4gIC8qKiBTcGVjaWZpZXMgdGhlIHNlY3JldCB2ZXJzaW9uIHRoYXQgeW91IHdhbnQgdG8gcmV0cmlldmUgYnkgdGhlIHN0YWdpbmcgbGFiZWwgYXR0YWNoZWQgdG8gdGhlIHZlcnNpb24uICovXG4gIHZlcnNpb25TdGFnZT86IHN0cmluZztcblxuICAvKiogU3BlY2lpZmllcyB0aGUga2V5IG9mIHRoZSBzZWNlcmV0U3RyaW5nIHRoYXQgeW91IHdhbnQgdG8gcmV0aXJldmUuICovXG4gIGtleT86IHN0cmluZztcblxuICAvKiogVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUgaW4gbWlsbGlzZWNvbmRzIGEgcGFyYW1ldGVyIHdpbGwgYmUgY29uc2lkZXJlZCBmcmVzaCAqL1xuICBtYXhBZ2U/OiBudW1iZXI7XG5cbiAgLyoqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NKYXZhU2NyaXB0U0RLL3YzL2xhdGVzdC9jbGllbnRzL2NsaWVudC1zZWNyZXRzLW1hbmFnZXIvaW50ZXJmYWNlcy9zZWNyZXRzbWFuYWdlcmNsaWVudGNvbmZpZy5odG1sICovXG4gIHNlY3JldHNNYW5hZ2VyQ2xpZW50Q29uZmlnPzogU2VjcmV0c01hbmFnZXJDbGllbnRDb25maWc7XG59XG5leHBvcnQgY2xhc3MgU2VjcmV0IGV4dGVuZHMgUmVmcmVzaGFibGUge1xuICBwdWJsaWMgcmVhZG9ubHkgc2VjcmV0SWQ6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHZlcnNpb25JZD86IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHZlcnNpb25TdGFnZT86IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGtleT86IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IHNlY3JldHNNYW5hZ2VyQ2xpZW50OiBTZWNyZXRzTWFuYWdlckNsaWVudDtcbiAgcHJpdmF0ZSBjYWNoZWRSZXNwb25zZT86IFByb21pc2U8R2V0U2VjcmV0VmFsdWVDb21tYW5kT3V0cHV0PjtcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogU2VjcmV0UHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcy5tYXhBZ2UpO1xuICAgIHRoaXMuc2VjcmV0SWQgPSBwcm9wcy5zZWNyZXRJZDtcbiAgICB0aGlzLnZlcnNpb25JZCA9IHByb3BzLnZlcnNpb25JZDtcbiAgICB0aGlzLnZlcnNpb25TdGFnZSA9IHByb3BzLnZlcnNpb25TdGFnZTtcbiAgICB0aGlzLmtleSA9IHByb3BzLmtleTtcbiAgICB0aGlzLnNlY3JldHNNYW5hZ2VyQ2xpZW50ID0gbmV3IFNlY3JldHNNYW5hZ2VyQ2xpZW50KHsgLi4ucHJvcHMuc2VjcmV0c01hbmFnZXJDbGllbnRDb25maWcgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlY3JldFN0cmluZygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmdldFNlY3JldFN0cmluZygpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFNlY3JldFN0cmluZygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGlmICghdGhpcy5jYWNoZWRSZXNwb25zZSB8fCB0aGlzLmlzRXhwaXJlZCgpKSB7XG4gICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jYWNoZWRSZXNwb25zZSkge1xuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuY2FjaGVkUmVzcG9uc2U7XG5cbiAgICAgIGlmIChkYXRhLlNlY3JldFN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5rZXlcbiAgICAgICAgICA/IEpTT04ucGFyc2UoZGF0YS5TZWNyZXRTdHJpbmcpW3RoaXMua2V5XVxuICAgICAgICAgIDogZGF0YS5TZWNyZXRTdHJpbmc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgc2VjcmV0U3RyaW5nIGlzIG1pc3NpbmcgZm9yIHNlY3JldCAke3RoaXMuc2VjcmV0SWR9YCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVmcmVzaFBhcmFtZXRlcigpOiB2b2lkIHtcbiAgICB0aGlzLmNhY2hlZFJlc3BvbnNlID0gdGhpcy5nZXRTZWNyZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTZWNyZXRWYWx1ZSgpOiBQcm9taXNlPEdldFNlY3JldFZhbHVlQ29tbWFuZE91dHB1dD4ge1xuICAgIGNvbnN0IGNvbW1hbmQgPSBuZXcgR2V0U2VjcmV0VmFsdWVDb21tYW5kKHtcbiAgICAgIFNlY3JldElkOiB0aGlzLnNlY3JldElkLFxuICAgICAgVmVyc2lvbklkOiB0aGlzLnZlcnNpb25JZCxcbiAgICAgIFZlcnNpb25TdGFnZTogdGhpcy52ZXJzaW9uU3RhZ2UsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuc2VjcmV0c01hbmFnZXJDbGllbnQuc2VuZChjb21tYW5kKTtcbiAgfVxufVxuIl19