in frauddetector/frauddetector.py [0:0]
def create_rules(self, rules):
"""Create rules by passing in a list of dictionaries with expressions and outcomes they map to
Args:
:rules: list; list of dictionaries
[{'ruleId': 'name_of_rule',
'expression': 'rule_expression_for_evaluating_rule',
'outcomes': [list_of, outcomes_for, matching_rule]
},
{'ruleId': 'name-of-next-rule'...
]
https://docs.aws.amazon.com/frauddetector/latest/ug/rule-language-reference.html
"""
# ToDo Checks: rules map to existing outcomes
responses = []
try:
existing_rules = [r['ruleId'] for r in self.rules]
except KeyError:
lh.info("create_rules: No pre-existing rules found")
for rule in rules:
if rule['ruleId'] not in existing_rules:
response = self.fd.create_rule(
ruleId=rule['ruleId'],
detectorId=self.detector_name,
description="Rule: " + rule['ruleId'] + " for outcomes " + str(rule['outcomes']),
expression=rule['expression'],
outcomes=rule['outcomes'],
language="DETECTORPL"
)
responses.append(response)
else:
lh.warning("create_rules: rule {} already exists, skipping".format(rule['ruleId']))
responses.append("skipped")
return responses