""" Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. SPDX-License-Identifier: MIT-0 """ from cfnlint.rules import CloudFormationLintRule, RuleMatch class Not(CloudFormationLintRule): """Check if Not values are correct""" id = "E1023" shortdesc = "Validation NOT function configuration" description = "Making sure that NOT functions are list" source_url = "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-conditions.html#intrinsic-function-reference-conditions-not" tags = ["functions", "not"] def match(self, cfn): matches = [] fnnots = cfn.search_deep_keys("Fn::Not") for fnnot in fnnots: if not isinstance(fnnot[-1], list): message = "Function Not {0} should be a list" matches.append( RuleMatch(fnnot, message.format("/".join(map(str, fnnot[:-2])))) ) return matches