""" 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 DeprecatedRuntimeEnd(DeprecatedRuntime): """Check if EOL Lambda Function Runtimes are used""" id = "E2531" shortdesc = "Check if EOL Lambda Function Runtimes are used" description = ( "Check if an EOL Lambda Runtime is specified and give an error 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["deprecated"], "%Y-%m-%d") < self.current_date: message = "Deprecated runtime ({0}) specified. Updating disabled since {1}. Please consider updating to {2}" matches.append( RuleMatch( path, message.format( runtime_value, runtime["deprecated"], runtime["successor"] ), ) ) return matches