in reference-artifacts/Custom-Scripts/Conformance-Pack-Converter/generate-config-rules.py [0:0]
def generate_config_impl(data):
parameters = data.get("Parameters", [])
resources = data.get("Resources", {})
for name, props in resources.items():
rule = {}
if props['Type'] != "AWS::Config::ConfigRule":
continue
if not props["Properties"]["Source"] or props["Properties"]["Source"]["Owner"] != 'AWS':
continue
rule['name'] = props["Properties"]["Source"]["SourceIdentifier"]
ruleNames.append(props["Properties"]["Source"]["SourceIdentifier"])
for param_name, value in props["Properties"].get("InputParameters", {}).items():
if 'parameters' not in rule:
rule['parameters'] = {}
if not isinstance(value, dict):
rule['parameters'][param_name] = value
else:
if 'Ref' in value:
if parameters.get(value['Ref']) and parameters.get(value['Ref']).get('Default'):
rule['parameters'][param_name] = parameters[value['Ref']]['Default']
elif 'Fn::If' in value:
true_val = value['Fn::If'][1]
false_val = value['Fn::If'][2] if len(
value['Fn::If']) > 2 else None
if isinstance(true_val, dict) and 'Ref' in true_val:
if parameters.get(true_val['Ref']):
if true_val['Ref'] in pseudo_params:
rule['parameters'][param_name] = true_val['Ref']
elif parameters.get(true_val['Ref']).get('Default'):
rule['parameters'][param_name] = parameters[true_val['Ref']]['Default']
elif isinstance(true_val, str):
rule['parameters'][param_name] = true_val
elif isinstance(false_val, dict):
if parameters.get(false_val['Ref']):
if false_val['Ref'] in pseudo_params:
rule['parameters'][param_name] = false_val['Ref']
elif parameters.get(false_val['Ref']).get('Default'):
rule['parameters'][param_name] = parameters[false_val['Ref']]['Default']
elif isinstance(false_val, str):
rule['parameters'][param_name] = false_val
if param_name not in rule["parameters"]:
rule['parameters'][param_name] = "${REPLACE::%s}" % param_name
rules.append(rule)
return