""" Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. SPDX-License-Identifier: MIT-0 """ from datetime import datetime from cfnlint.rules import RuleMatch from cfnlint.rules.resources.lmbd.DeprecatedRuntime import DeprecatedRuntime class DeprecatedRuntimeEol(DeprecatedRuntime): """Check if EOL Lambda Function Runtimes are used""" id = "W2531" shortdesc = "Check if EOL Lambda Function Runtimes are used" description = ( "Check if an EOL Lambda Runtime is specified and give a warning if used. " ) source_url = ( "https://docs.aws.amazon.com/lambda/latest/dg/runtime-support-policy.html" ) tags = ["resources", "lambda", "runtime"] def check_runtime(self, runtime_value, path): """Check if the given runtime is valid""" matches = [] runtime = self.deprecated_runtimes.get(runtime_value) if runtime: if ( datetime.strptime(runtime["eol"], "%Y-%m-%d") < self.current_date and datetime.strptime(runtime["deprecated"], "%Y-%m-%d") > self.current_date ): message = "EOL runtime ({0}) specified. Runtime is EOL since {1} and updating will be disabled at {2}. Please consider updating to {3}" matches.append( RuleMatch( path, message.format( runtime_value, runtime["eol"], runtime["deprecated"], runtime["successor"], ), ) ) return matches