def _attach_ec2_subnet_groups()

in cartography/intel/aws/rds.py [0:0]


def _attach_ec2_subnet_groups(neo4j_session, instance, region, current_aws_account_id, aws_update_tag):
    """
    Attach RDS instance to its EC2 subnets
    """
    attach_rds_to_subnet_group = """
    MERGE(sng:DBSubnetGroup{id:{sng_arn}})
    ON CREATE SET sng.firstseen = timestamp()
    SET sng.name = {DBSubnetGroupName},
    sng.vpc_id = {VpcId},
    sng.description = {DBSubnetGroupDescription},
    sng.status = {DBSubnetGroupStatus},
    sng.lastupdated = {aws_update_tag}
    WITH sng
    MATCH(rds:RDSInstance{id:{DBInstanceArn}})
    MERGE(rds)-[r:MEMBER_OF_DB_SUBNET_GROUP]->(sng)
    ON CREATE SET r.firstseen = timestamp()
    SET r.lastupdated = {aws_update_tag}
    """
    if 'DBSubnetGroup' in instance:
        db_sng = instance['DBSubnetGroup']
        arn = _get_db_subnet_group_arn(region, current_aws_account_id, db_sng['DBSubnetGroupName'])
        neo4j_session.run(
            attach_rds_to_subnet_group,
            sng_arn=arn,
            DBSubnetGroupName=db_sng['DBSubnetGroupName'],
            VpcId=db_sng.get("VpcId"),
            DBSubnetGroupDescription=db_sng.get('DBSubnetGroupDescription'),
            DBSubnetGroupStatus=db_sng.get('SubnetGroupStatus'),
            DBInstanceArn=instance['DBInstanceArn'],
            aws_update_tag=aws_update_tag
        )
        _attach_ec2_subnets_to_subnetgroup(neo4j_session, db_sng, region, current_aws_account_id, aws_update_tag)