@enfo/aws-cdkompliance
Version:
Tagging and compliant resources using the CDK
62 lines • 6.88 kB
JavaScript
;
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.NodejsFunction = exports.validRuntimes = void 0;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
const aws_lambda_nodejs_1 = require("aws-cdk-lib/aws-lambda-nodejs");
const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
const getNameFromRuntime = (runtime) => runtime.name;
/**
* Valid runtimes, does not contain custom runtimes
*/
exports.validRuntimes = [
aws_lambda_1.Runtime.NODEJS_16_X
];
const blackList = [
aws_lambda_1.Runtime.NODEJS,
aws_lambda_1.Runtime.NODEJS_4_3,
aws_lambda_1.Runtime.NODEJS_6_10,
aws_lambda_1.Runtime.NODEJS_8_10,
aws_lambda_1.Runtime.NODEJS_10_X,
aws_lambda_1.Runtime.NODEJS_14_X
].map(getNameFromRuntime);
const latestVersions = {
[getNameFromRuntime(aws_lambda_1.Runtime.NODEJS)]: 'NODEJS_16_X',
[getNameFromRuntime(aws_lambda_1.Runtime.NODEJS_4_3)]: 'NODEJS_16_X',
[getNameFromRuntime(aws_lambda_1.Runtime.NODEJS_6_10)]: 'NODEJS_16_X',
[getNameFromRuntime(aws_lambda_1.Runtime.NODEJS_8_10)]: 'NODEJS_16_X',
[getNameFromRuntime(aws_lambda_1.Runtime.NODEJS_10_X)]: 'NODEJS_16_X',
[getNameFromRuntime(aws_lambda_1.Runtime.NODEJS_12_X)]: 'NODEJS_16_X',
[getNameFromRuntime(aws_lambda_1.Runtime.NODEJS_14_X)]: 'NODEJS_16_X'
};
/**
* Compliant NodeJS Lambda Function.
*
* See README for usage examples
*/
class NodejsFunction extends aws_lambda_nodejs_1.NodejsFunction {
constructor(scope, id, props) {
const { runtime = aws_lambda_1.Runtime.NODEJS_16_X, ...rest } = props;
super(scope, id, {
runtime,
...rest
});
this.node.addValidation({
validate: () => {
return [
...this.checkRuntime()
];
}
});
}
checkRuntime() {
const runtime = getNameFromRuntime(this.runtime);
return (blackList.includes(runtime))
? [`Lambda runtime must be latest runtime available for language. Found ${runtime}, please use ${latestVersions[runtime]} instead`]
: [];
}
}
exports.NodejsFunction = NodejsFunction;
_a = JSII_RTTI_SYMBOL_1;
NodejsFunction[_a] = { fqn: "@enfo/aws-cdkompliance.NodejsFunction", version: "1.1.0" };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFtYmRhLW5vZGVqcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImxhbWJkYS1ub2RlanMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxRUFHc0M7QUFDdEMsdURBQWdEO0FBR2hELE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxPQUFnQixFQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFBO0FBRXJFOztHQUVHO0FBQ1UsUUFBQSxhQUFhLEdBQUc7SUFDM0Isb0JBQU8sQ0FBQyxXQUFXO0NBQ3BCLENBQUE7QUFFRCxNQUFNLFNBQVMsR0FBYTtJQUMxQixvQkFBTyxDQUFDLE1BQU07SUFDZCxvQkFBTyxDQUFDLFVBQVU7SUFDbEIsb0JBQU8sQ0FBQyxXQUFXO0lBQ25CLG9CQUFPLENBQUMsV0FBVztJQUNuQixvQkFBTyxDQUFDLFdBQVc7SUFDbkIsb0JBQU8sQ0FBQyxXQUFXO0NBQ3BCLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUE7QUFFekIsTUFBTSxjQUFjLEdBQTJCO0lBQzdDLENBQUMsa0JBQWtCLENBQUMsb0JBQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLGFBQWE7SUFDbkQsQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsYUFBYTtJQUN2RCxDQUFDLGtCQUFrQixDQUFDLG9CQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxhQUFhO0lBQ3hELENBQUMsa0JBQWtCLENBQUMsb0JBQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLGFBQWE7SUFDeEQsQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsYUFBYTtJQUN4RCxDQUFDLGtCQUFrQixDQUFDLG9CQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxhQUFhO0lBQ3hELENBQUMsa0JBQWtCLENBQUMsb0JBQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLGFBQWE7Q0FDekQsQ0FBQTtBQUVEOzs7O0dBSUc7QUFDSCxNQUFhLGNBQWUsU0FBUSxrQ0FBb0I7SUFDdEQsWUFBYSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEwQjtRQUNuRSxNQUFNLEVBQUUsT0FBTyxHQUFHLG9CQUFPLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFBO1FBQ3hELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsT0FBTztZQUNQLEdBQUcsSUFBSTtTQUNSLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQ3RCLFFBQVEsRUFBRSxHQUFHLEVBQUU7Z0JBQ2IsT0FBTztvQkFDTCxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUU7aUJBQ3ZCLENBQUE7WUFDSCxDQUFDO1NBQ0YsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVTLFlBQVk7UUFDcEIsTUFBTSxPQUFPLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ2hELE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2xDLENBQUMsQ0FBQyxDQUFDLHVFQUF1RSxPQUFPLGdCQUFnQixjQUFjLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztZQUNuSSxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQ1IsQ0FBQzs7QUFyQkgsd0NBc0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgTm9kZWpzRnVuY3Rpb24gYXMgTGFtYmRhTm9kZWpzRnVuY3Rpb24sXG4gIE5vZGVqc0Z1bmN0aW9uUHJvcHNcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ub2RlanMnXG5pbXBvcnQgeyBSdW50aW1lIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSdcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnXG5cbmNvbnN0IGdldE5hbWVGcm9tUnVudGltZSA9IChydW50aW1lOiBSdW50aW1lKTogc3RyaW5nID0+IHJ1bnRpbWUubmFtZVxuXG4vKipcbiAqIFZhbGlkIHJ1bnRpbWVzLCBkb2VzIG5vdCBjb250YWluIGN1c3RvbSBydW50aW1lc1xuICovXG5leHBvcnQgY29uc3QgdmFsaWRSdW50aW1lcyA9IFtcbiAgUnVudGltZS5OT0RFSlNfMTZfWFxuXVxuXG5jb25zdCBibGFja0xpc3Q6IHN0cmluZ1tdID0gW1xuICBSdW50aW1lLk5PREVKUyxcbiAgUnVudGltZS5OT0RFSlNfNF8zLFxuICBSdW50aW1lLk5PREVKU182XzEwLFxuICBSdW50aW1lLk5PREVKU184XzEwLFxuICBSdW50aW1lLk5PREVKU18xMF9YLFxuICBSdW50aW1lLk5PREVKU18xNF9YXG5dLm1hcChnZXROYW1lRnJvbVJ1bnRpbWUpXG5cbmNvbnN0IGxhdGVzdFZlcnNpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBbZ2V0TmFtZUZyb21SdW50aW1lKFJ1bnRpbWUuTk9ERUpTKV06ICdOT0RFSlNfMTZfWCcsXG4gIFtnZXROYW1lRnJvbVJ1bnRpbWUoUnVudGltZS5OT0RFSlNfNF8zKV06ICdOT0RFSlNfMTZfWCcsXG4gIFtnZXROYW1lRnJvbVJ1bnRpbWUoUnVudGltZS5OT0RFSlNfNl8xMCldOiAnTk9ERUpTXzE2X1gnLFxuICBbZ2V0TmFtZUZyb21SdW50aW1lKFJ1bnRpbWUuTk9ERUpTXzhfMTApXTogJ05PREVKU18xNl9YJyxcbiAgW2dldE5hbWVGcm9tUnVudGltZShSdW50aW1lLk5PREVKU18xMF9YKV06ICdOT0RFSlNfMTZfWCcsXG4gIFtnZXROYW1lRnJvbVJ1bnRpbWUoUnVudGltZS5OT0RFSlNfMTJfWCldOiAnTk9ERUpTXzE2X1gnLFxuICBbZ2V0TmFtZUZyb21SdW50aW1lKFJ1bnRpbWUuTk9ERUpTXzE0X1gpXTogJ05PREVKU18xNl9YJ1xufVxuXG4vKipcbiAqIENvbXBsaWFudCBOb2RlSlMgTGFtYmRhIEZ1bmN0aW9uLlxuICpcbiAqIFNlZSBSRUFETUUgZm9yIHVzYWdlIGV4YW1wbGVzXG4gKi9cbmV4cG9ydCBjbGFzcyBOb2RlanNGdW5jdGlvbiBleHRlbmRzIExhbWJkYU5vZGVqc0Z1bmN0aW9uIHtcbiAgY29uc3RydWN0b3IgKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBOb2RlanNGdW5jdGlvblByb3BzKSB7XG4gICAgY29uc3QgeyBydW50aW1lID0gUnVudGltZS5OT0RFSlNfMTZfWCwgLi4ucmVzdCB9ID0gcHJvcHNcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHJ1bnRpbWUsXG4gICAgICAuLi5yZXN0XG4gICAgfSlcbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbih7XG4gICAgICB2YWxpZGF0ZTogKCkgPT4ge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIC4uLnRoaXMuY2hlY2tSdW50aW1lKClcbiAgICAgICAgXVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBwcm90ZWN0ZWQgY2hlY2tSdW50aW1lICgpIHtcbiAgICBjb25zdCBydW50aW1lID0gZ2V0TmFtZUZyb21SdW50aW1lKHRoaXMucnVudGltZSlcbiAgICByZXR1cm4gKGJsYWNrTGlzdC5pbmNsdWRlcyhydW50aW1lKSlcbiAgICAgID8gW2BMYW1iZGEgcnVudGltZSBtdXN0IGJlIGxhdGVzdCBydW50aW1lIGF2YWlsYWJsZSBmb3IgbGFuZ3VhZ2UuIEZvdW5kICR7cnVudGltZX0sIHBsZWFzZSB1c2UgJHtsYXRlc3RWZXJzaW9uc1tydW50aW1lXX0gaW5zdGVhZGBdXG4gICAgICA6IFtdXG4gIH1cbn1cbiJdfQ==