UNPKG

@enfo/aws-cdkompliance

Version:

Tagging and compliant resources using the CDK

83 lines 10.1 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.Function = exports.validRuntimes = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); 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.DOTNET_CORE_3_1, aws_lambda_1.Runtime.GO_1_X, aws_lambda_1.Runtime.JAVA_11, aws_lambda_1.Runtime.NODEJS_16_X, aws_lambda_1.Runtime.PYTHON_3_9, aws_lambda_1.Runtime.RUBY_2_7 ]; const blackList = [ aws_lambda_1.Runtime.DOTNET_CORE_1, aws_lambda_1.Runtime.DOTNET_CORE_2, aws_lambda_1.Runtime.DOTNET_CORE_2_1, 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_12_X, aws_lambda_1.Runtime.NODEJS_14_X, aws_lambda_1.Runtime.PYTHON_2_7, aws_lambda_1.Runtime.PYTHON_3_6, aws_lambda_1.Runtime.PYTHON_3_7, aws_lambda_1.Runtime.PYTHON_3_8, aws_lambda_1.Runtime.RUBY_2_5, aws_lambda_1.Runtime.JAVA_8, aws_lambda_1.Runtime.JAVA_8_CORRETTO ].map(getNameFromRuntime); const latestVersions = { [getNameFromRuntime(aws_lambda_1.Runtime.DOTNET_CORE_1)]: 'DOTNET_CORE_3_1', [getNameFromRuntime(aws_lambda_1.Runtime.DOTNET_CORE_1)]: 'DOTNET_CORE_3_1', [getNameFromRuntime(aws_lambda_1.Runtime.DOTNET_CORE_1)]: 'DOTNET_CORE_3_1', [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', [getNameFromRuntime(aws_lambda_1.Runtime.PYTHON_2_7)]: 'PYTHON_3_9', [getNameFromRuntime(aws_lambda_1.Runtime.PYTHON_3_6)]: 'PYTHON_3_9', [getNameFromRuntime(aws_lambda_1.Runtime.PYTHON_3_7)]: 'PYTHON_3_9', [getNameFromRuntime(aws_lambda_1.Runtime.PYTHON_3_8)]: 'PYTHON_3_9', [getNameFromRuntime(aws_lambda_1.Runtime.RUBY_2_5)]: 'RUBY_2_7', [getNameFromRuntime(aws_lambda_1.Runtime.JAVA_8)]: 'JAVA_11', [getNameFromRuntime(aws_lambda_1.Runtime.JAVA_8_CORRETTO)]: 'JAVA_11' }; /** * Compliant Lambda Function. * * See README for usage examples */ class Function extends aws_lambda_1.Function { constructor(scope, id, props) { super(scope, id, props); 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.Function = Function; _a = JSII_RTTI_SYMBOL_1; Function[_a] = { fqn: "@enfo/aws-cdkompliance.Function", version: "1.1.0" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFtYmRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsdURBQTJGO0FBRzNGLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxPQUFnQixFQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFBO0FBRXJFOztHQUVHO0FBQ1UsUUFBQSxhQUFhLEdBQUc7SUFDM0Isb0JBQU8sQ0FBQyxlQUFlO0lBQ3ZCLG9CQUFPLENBQUMsTUFBTTtJQUNkLG9CQUFPLENBQUMsT0FBTztJQUNmLG9CQUFPLENBQUMsV0FBVztJQUNuQixvQkFBTyxDQUFDLFVBQVU7SUFDbEIsb0JBQU8sQ0FBQyxRQUFRO0NBQ2pCLENBQUE7QUFFRCxNQUFNLFNBQVMsR0FBYTtJQUMxQixvQkFBTyxDQUFDLGFBQWE7SUFDckIsb0JBQU8sQ0FBQyxhQUFhO0lBQ3JCLG9CQUFPLENBQUMsZUFBZTtJQUN2QixvQkFBTyxDQUFDLE1BQU07SUFDZCxvQkFBTyxDQUFDLFVBQVU7SUFDbEIsb0JBQU8sQ0FBQyxXQUFXO0lBQ25CLG9CQUFPLENBQUMsV0FBVztJQUNuQixvQkFBTyxDQUFDLFdBQVc7SUFDbkIsb0JBQU8sQ0FBQyxXQUFXO0lBQ25CLG9CQUFPLENBQUMsV0FBVztJQUNuQixvQkFBTyxDQUFDLFVBQVU7SUFDbEIsb0JBQU8sQ0FBQyxVQUFVO0lBQ2xCLG9CQUFPLENBQUMsVUFBVTtJQUNsQixvQkFBTyxDQUFDLFVBQVU7SUFDbEIsb0JBQU8sQ0FBQyxRQUFRO0lBQ2hCLG9CQUFPLENBQUMsTUFBTTtJQUNkLG9CQUFPLENBQUMsZUFBZTtDQUN4QixDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO0FBRXpCLE1BQU0sY0FBYyxHQUEyQjtJQUM3QyxDQUFDLGtCQUFrQixDQUFDLG9CQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxpQkFBaUI7SUFDOUQsQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCO0lBQzlELENBQUMsa0JBQWtCLENBQUMsb0JBQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLGlCQUFpQjtJQUM5RCxDQUFDLGtCQUFrQixDQUFDLG9CQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxhQUFhO0lBQ25ELENBQUMsa0JBQWtCLENBQUMsb0JBQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLGFBQWE7SUFDdkQsQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsYUFBYTtJQUN4RCxDQUFDLGtCQUFrQixDQUFDLG9CQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxhQUFhO0lBQ3hELENBQUMsa0JBQWtCLENBQUMsb0JBQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLGFBQWE7SUFDeEQsQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsYUFBYTtJQUN4RCxDQUFDLGtCQUFrQixDQUFDLG9CQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxhQUFhO0lBQ3hELENBQUMsa0JBQWtCLENBQUMsb0JBQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLFlBQVk7SUFDdEQsQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsWUFBWTtJQUN0RCxDQUFDLGtCQUFrQixDQUFDLG9CQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxZQUFZO0lBQ3RELENBQUMsa0JBQWtCLENBQUMsb0JBQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLFlBQVk7SUFDdEQsQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsVUFBVTtJQUNsRCxDQUFDLGtCQUFrQixDQUFDLG9CQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxTQUFTO0lBQy9DLENBQUMsa0JBQWtCLENBQUMsb0JBQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxFQUFFLFNBQVM7Q0FDekQsQ0FBQTtBQUVEOzs7O0dBSUc7QUFDSCxNQUFhLFFBQVMsU0FBUSxxQkFBYztJQUMxQyxZQUFhLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQW9CO1FBQzdELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQ3RCLFFBQVEsRUFBRSxHQUFHLEVBQUU7Z0JBQ2IsT0FBTztvQkFDTCxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUU7aUJBQ3ZCLENBQUE7WUFDSCxDQUFDO1NBQ0YsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVTLFlBQVk7UUFDcEIsTUFBTSxPQUFPLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ2hELE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2xDLENBQUMsQ0FBQyxDQUFDLHVFQUF1RSxPQUFPLGdCQUFnQixjQUFjLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztZQUNuSSxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQ1IsQ0FBQzs7QUFqQkgsNEJBa0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRnVuY3Rpb24gYXMgTGFtYmRhRnVuY3Rpb24sIEZ1bmN0aW9uUHJvcHMsIFJ1bnRpbWUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJ1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cydcblxuY29uc3QgZ2V0TmFtZUZyb21SdW50aW1lID0gKHJ1bnRpbWU6IFJ1bnRpbWUpOiBzdHJpbmcgPT4gcnVudGltZS5uYW1lXG5cbi8qKlxuICogVmFsaWQgcnVudGltZXMsIGRvZXMgbm90IGNvbnRhaW4gY3VzdG9tIHJ1bnRpbWVzXG4gKi9cbmV4cG9ydCBjb25zdCB2YWxpZFJ1bnRpbWVzID0gW1xuICBSdW50aW1lLkRPVE5FVF9DT1JFXzNfMSxcbiAgUnVudGltZS5HT18xX1gsXG4gIFJ1bnRpbWUuSkFWQV8xMSxcbiAgUnVudGltZS5OT0RFSlNfMTZfWCxcbiAgUnVudGltZS5QWVRIT05fM185LFxuICBSdW50aW1lLlJVQllfMl83XG5dXG5cbmNvbnN0IGJsYWNrTGlzdDogc3RyaW5nW10gPSBbXG4gIFJ1bnRpbWUuRE9UTkVUX0NPUkVfMSxcbiAgUnVudGltZS5ET1RORVRfQ09SRV8yLFxuICBSdW50aW1lLkRPVE5FVF9DT1JFXzJfMSxcbiAgUnVudGltZS5OT0RFSlMsXG4gIFJ1bnRpbWUuTk9ERUpTXzRfMyxcbiAgUnVudGltZS5OT0RFSlNfNl8xMCxcbiAgUnVudGltZS5OT0RFSlNfOF8xMCxcbiAgUnVudGltZS5OT0RFSlNfMTBfWCxcbiAgUnVudGltZS5OT0RFSlNfMTJfWCxcbiAgUnVudGltZS5OT0RFSlNfMTRfWCxcbiAgUnVudGltZS5QWVRIT05fMl83LFxuICBSdW50aW1lLlBZVEhPTl8zXzYsXG4gIFJ1bnRpbWUuUFlUSE9OXzNfNyxcbiAgUnVudGltZS5QWVRIT05fM184LFxuICBSdW50aW1lLlJVQllfMl81LFxuICBSdW50aW1lLkpBVkFfOCxcbiAgUnVudGltZS5KQVZBXzhfQ09SUkVUVE9cbl0ubWFwKGdldE5hbWVGcm9tUnVudGltZSlcblxuY29uc3QgbGF0ZXN0VmVyc2lvbnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIFtnZXROYW1lRnJvbVJ1bnRpbWUoUnVudGltZS5ET1RORVRfQ09SRV8xKV06ICdET1RORVRfQ09SRV8zXzEnLFxuICBbZ2V0TmFtZUZyb21SdW50aW1lKFJ1bnRpbWUuRE9UTkVUX0NPUkVfMSldOiAnRE9UTkVUX0NPUkVfM18xJyxcbiAgW2dldE5hbWVGcm9tUnVudGltZShSdW50aW1lLkRPVE5FVF9DT1JFXzEpXTogJ0RPVE5FVF9DT1JFXzNfMScsXG4gIFtnZXROYW1lRnJvbVJ1bnRpbWUoUnVudGltZS5OT0RFSlMpXTogJ05PREVKU18xNl9YJyxcbiAgW2dldE5hbWVGcm9tUnVudGltZShSdW50aW1lLk5PREVKU180XzMpXTogJ05PREVKU18xNl9YJyxcbiAgW2dldE5hbWVGcm9tUnVudGltZShSdW50aW1lLk5PREVKU182XzEwKV06ICdOT0RFSlNfMTZfWCcsXG4gIFtnZXROYW1lRnJvbVJ1bnRpbWUoUnVudGltZS5OT0RFSlNfOF8xMCldOiAnTk9ERUpTXzE2X1gnLFxuICBbZ2V0TmFtZUZyb21SdW50aW1lKFJ1bnRpbWUuTk9ERUpTXzEwX1gpXTogJ05PREVKU18xNl9YJyxcbiAgW2dldE5hbWVGcm9tUnVudGltZShSdW50aW1lLk5PREVKU18xMl9YKV06ICdOT0RFSlNfMTZfWCcsXG4gIFtnZXROYW1lRnJvbVJ1bnRpbWUoUnVudGltZS5OT0RFSlNfMTRfWCldOiAnTk9ERUpTXzE2X1gnLFxuICBbZ2V0TmFtZUZyb21SdW50aW1lKFJ1bnRpbWUuUFlUSE9OXzJfNyldOiAnUFlUSE9OXzNfOScsXG4gIFtnZXROYW1lRnJvbVJ1bnRpbWUoUnVudGltZS5QWVRIT05fM182KV06ICdQWVRIT05fM185JyxcbiAgW2dldE5hbWVGcm9tUnVudGltZShSdW50aW1lLlBZVEhPTl8zXzcpXTogJ1BZVEhPTl8zXzknLFxuICBbZ2V0TmFtZUZyb21SdW50aW1lKFJ1bnRpbWUuUFlUSE9OXzNfOCldOiAnUFlUSE9OXzNfOScsXG4gIFtnZXROYW1lRnJvbVJ1bnRpbWUoUnVudGltZS5SVUJZXzJfNSldOiAnUlVCWV8yXzcnLFxuICBbZ2V0TmFtZUZyb21SdW50aW1lKFJ1bnRpbWUuSkFWQV84KV06ICdKQVZBXzExJyxcbiAgW2dldE5hbWVGcm9tUnVudGltZShSdW50aW1lLkpBVkFfOF9DT1JSRVRUTyldOiAnSkFWQV8xMSdcbn1cblxuLyoqXG4gKiBDb21wbGlhbnQgTGFtYmRhIEZ1bmN0aW9uLlxuICpcbiAqIFNlZSBSRUFETUUgZm9yIHVzYWdlIGV4YW1wbGVzXG4gKi9cbmV4cG9ydCBjbGFzcyBGdW5jdGlvbiBleHRlbmRzIExhbWJkYUZ1bmN0aW9uIHtcbiAgY29uc3RydWN0b3IgKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBGdW5jdGlvblByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcylcbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbih7XG4gICAgICB2YWxpZGF0ZTogKCkgPT4ge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIC4uLnRoaXMuY2hlY2tSdW50aW1lKClcbiAgICAgICAgXVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBwcm90ZWN0ZWQgY2hlY2tSdW50aW1lICgpIHtcbiAgICBjb25zdCBydW50aW1lID0gZ2V0TmFtZUZyb21SdW50aW1lKHRoaXMucnVudGltZSlcbiAgICByZXR1cm4gKGJsYWNrTGlzdC5pbmNsdWRlcyhydW50aW1lKSlcbiAgICAgID8gW2BMYW1iZGEgcnVudGltZSBtdXN0IGJlIGxhdGVzdCBydW50aW1lIGF2YWlsYWJsZSBmb3IgbGFuZ3VhZ2UuIEZvdW5kICR7cnVudGltZX0sIHBsZWFzZSB1c2UgJHtsYXRlc3RWZXJzaW9uc1tydW50aW1lXX0gaW5zdGVhZGBdXG4gICAgICA6IFtdXG4gIH1cbn1cbiJdfQ==