@enfo/aws-cdkompliance
Version:
Tagging and compliant resources using the CDK
83 lines • 10.1 kB
JavaScript
;
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==