in code/SecGuardRails/cfn_validate_lambda.py [0:0]
def get_rules():
# Find table
client = boto3.client('dynamodb')
resource = boto3.resource('dynamodb')
response = client.list_tables()
logTable = ""
for i in range(len(response['TableNames'])):
if "AWS-devsecops" in response['TableNames'][i]:
logTable = response['TableNames'][i]
# Verify that rules are created and if not, create them
response = client.scan(
TableName=logTable,
AttributesToGet=[
'rule',
]
)
if len(response['Items']) == 0:
add_rules(logTable)
time.sleep(45)
# Get all rules from DDB.
# Rules have rule, ruledata, type and weight
rules = dict()
sgRules = []
ec2Rules = []
volRules = []
for n in range(len(response['Items'])):
rule = client.get_item(
TableName=logTable,
Key={
'rule': {'S':response['Items'][n]['rule']['S']}
},
ConsistentRead=True
)['Item']
if rule['category']['S'] == "SecurityGroup":
sgRules.append(rule)
elif rule['category']['S'] == "EC2Instance":
ec2Rules.append(rule)
elif rule['category']['S'] == "Volume":
volRules.append(rule)
rules['sgRules'] = sgRules
rules['ec2Rules'] = ec2Rules
rules['volRules'] = volRules
return rules