in cartography/intel/aws/ec2.py [0:0]
def load_ec2_auto_scaling_groups(session, data, region, current_aws_account_id, aws_update_tag):
ingest_group = """
MERGE (group:AutoScalingGroup{arn: {ARN}})
ON CREATE SET group.firstseen = timestamp(), group.name = {Name}, group.createdtime = {CreatedTime}
SET group.lastupdated = {aws_update_tag}, group.launchconfigurationname = {LaunchConfigurationName},
group.maxsize = {MaxSize}, group.region={Region}
WITH group
MATCH (aa:AWSAccount{id: {AWS_ACCOUNT_ID}})
MERGE (aa)-[r:RESOURCE]->(group)
ON CREATE SET r.firstseen = timestamp()
SET r.lastupdated = {aws_update_tag}
"""
ingest_vpc = """
MERGE (subnet:EC2Subnet{subnetid: {SubnetId}})
ON CREATE SET subnet.firstseen = timestamp()
SET subnet.lastupdated = {aws_update_tag}
WITH subnet
MATCH (group:AutoScalingGroup{arn: {GROUPARN}})
MERGE (subnet)<-[r:VPC_IDENTIFIER]-(group)
ON CREATE SET r.firstseen = timestamp()
SET r.lastupdated = {aws_update_tag}
"""
ingest_instance = """
MERGE (instance:Instance:EC2Instance{instanceid: {InstanceId}})
ON CREATE SET instance.firstseen = timestamp()
SET instance.lastupdated = {aws_update_tag}, instance.region={Region}
WITH instance
MATCH (group:AutoScalingGroup{arn: {GROUPARN}})
MERGE (instance)-[r:MEMBER_AUTO_SCALE_GROUP]->(group)
ON CREATE SET r.firstseen = timestamp()
SET r.lastupdated = {aws_update_tag}
WITH instance
MATCH (aa:AWSAccount{id: {AWS_ACCOUNT_ID}})
MERGE (aa)-[r:RESOURCE]->(instance)
ON CREATE SET r.firstseen = timestamp()
SET r.lastupdated = {aws_update_tag}
"""
for group in data["AutoScalingGroups"]:
name = group["AutoScalingGroupName"]
createtime = group.get("CreatedTime", "")
lauchconfig_name = group.get("LaunchConfigurationName", "")
group_arn = group["AutoScalingGroupARN"]
max_size = group["MaxSize"]
session.run(
ingest_group,
ARN=group_arn,
Name=name,
CreatedTime=str(createtime),
LaunchConfigurationName=lauchconfig_name,
MaxSize=max_size,
AWS_ACCOUNT_ID=current_aws_account_id,
Region=region,
aws_update_tag=aws_update_tag
)
if group.get('VPCZoneIdentifier'):
vpclist = group["VPCZoneIdentifier"]
for vpc in str(vpclist).split(','):
session.run(
ingest_vpc,
SubnetId=vpc,
GROUPARN=group_arn,
aws_update_tag=aws_update_tag
)
if group.get("Instances"):
for instance in group["Instances"]:
instanceid = instance["InstanceId"]
session.run(
ingest_instance,
InstanceId=instanceid,
GROUPARN=group_arn,
AWS_ACCOUNT_ID=current_aws_account_id,
Region=region,
aws_update_tag=aws_update_tag
)