UNPKG

@enfo/aws-cdkompliance

Version:

Tagging and compliant resources using the CDK

62 lines 6.88 kB
"use strict"; 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==