@middy/secrets-manager
Version:
Secrets Manager middleware for the middy framework
71 lines (69 loc) • 2.37 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(module, "exports", {
enumerable: true,
get: ()=>_default
});
const _util = require("@middy/util");
const _secretsmanagerJs = _interopRequireDefault(require("aws-sdk/clients/secretsmanager.js"));
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
const defaults = {
AwsClient: _secretsmanagerJs.default,
awsClientOptions: {},
awsClientAssumeRole: undefined,
awsClientCapture: undefined,
fetchData: {},
disablePrefetch: false,
cacheKey: 'secrets-manager',
cacheExpiry: -1,
setToContext: false
};
const secretsManagerMiddleware = (opts = {})=>{
const options = {
...defaults,
...opts
};
const fetch = (request, cachedValues = {})=>{
const values = {};
for (const internalKey of Object.keys(options.fetchData)){
if (cachedValues[internalKey]) continue;
values[internalKey] = client.getSecretValue({
SecretId: options.fetchData[internalKey]
}).promise().then((resp)=>(0, _util.jsonSafeParse)(resp.SecretString)).catch((e)=>{
const value = (0, _util.getCache)(options.cacheKey).value ?? {};
value[internalKey] = undefined;
(0, _util.modifyCache)(options.cacheKey, value);
throw e;
});
}
return values;
};
let prefetch, client;
if ((0, _util.canPrefetch)(options)) {
client = (0, _util.createPrefetchClient)(options);
prefetch = (0, _util.processCache)(options, fetch);
}
const secretsManagerMiddlewareBefore = async (request)=>{
if (!client) {
client = await (0, _util.createClient)(options, request);
}
const { value } = prefetch ?? (0, _util.processCache)(options, fetch, request);
Object.assign(request.internal, value);
if (options.setToContext) {
const data = await (0, _util.getInternal)(Object.keys(options.fetchData), request);
Object.assign(request.context, data);
}
prefetch = null;
};
return {
before: secretsManagerMiddlewareBefore
};
};
const _default = secretsManagerMiddleware;
//# sourceMappingURL=index.cjs.map
;