""" Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. SPDX-License-Identifier: MIT-0 """ from cfnlint.rules import CloudFormationLintRule, RuleMatch class GetAz(CloudFormationLintRule): """Check if GetAz values are correct""" id = "E1015" shortdesc = "GetAz validation of parameters" description = "Making sure the GetAz function is properly configured" source_url = "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-getavailabilityzones.html" tags = ["functions", "getaz"] def match(self, cfn): matches = [] getaz_objs = cfn.search_deep_keys("Fn::GetAZs") for getaz_obj in getaz_objs: getaz_value = getaz_obj[-1] if isinstance(getaz_value, str): if getaz_value != "" and getaz_value not in cfn.regions: message = ( "GetAZs should be of empty or string of valid region for {0}" ) matches.append( RuleMatch( getaz_obj[:-1], message.format("/".join(map(str, getaz_obj[:-1]))), ) ) elif isinstance(getaz_value, dict): if len(getaz_value) == 1: if isinstance(getaz_value, dict): for key, value in getaz_value.items(): if key != "Ref" or value != "AWS::Region": message = ( "GetAZs should be of Ref to AWS::Region for {0}" ) matches.append( RuleMatch( getaz_obj[:-1], message.format( "/".join(map(str, getaz_obj[:-1])) ), ) ) else: message = "GetAZs should be of Ref to AWS::Region for {0}" matches.append( RuleMatch( getaz_obj[:-1], message.format("/".join(map(str, getaz_obj[:-1]))), ) ) else: message = "GetAZs should be of Ref to AWS::Region for {0}" matches.append( RuleMatch( getaz_obj[:-1], message.format("/".join(map(str, getaz_obj[:-1]))), ) ) return matches
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
__pycache__ | Folder | 0755 |
|
|
Base64.py | File | 1.72 KB | 0644 |
|
Cidr.py | File | 11.94 KB | 0644 |
|
DynamicReferenceSecureString.py | File | 5.72 KB | 0644 |
|
FindInMap.py | File | 11.25 KB | 0644 |
|
FindInMapKeys.py | File | 3.89 KB | 0644 |
|
GetAtt.py | File | 6.05 KB | 0644 |
|
GetAz.py | File | 2.76 KB | 0644 |
|
If.py | File | 1.45 KB | 0644 |
|
ImportValue.py | File | 2.45 KB | 0644 |
|
Join.py | File | 8.63 KB | 0644 |
|
Length.py | File | 3.31 KB | 0644 |
|
Not.py | File | 978 B | 0644 |
|
Ref.py | File | 1.02 KB | 0644 |
|
RefExist.py | File | 1.26 KB | 0644 |
|
RefInCondition.py | File | 1.36 KB | 0644 |
|
RelationshipConditions.py | File | 5.35 KB | 0644 |
|
Select.py | File | 4.41 KB | 0644 |
|
Split.py | File | 3.11 KB | 0644 |
|
Sub.py | File | 9.49 KB | 0644 |
|
SubNeeded.py | File | 5.48 KB | 0644 |
|
SubNotJoin.py | File | 2 KB | 0644 |
|
SubParametersUsed.py | File | 1.4 KB | 0644 |
|
SubUnneeded.py | File | 1.27 KB | 0644 |
|
ToJsonString.py | File | 1.75 KB | 0644 |
|
__init__.py | File | 106 B | 0644 |
|