"""
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