|
| 1 | +import os |
| 2 | +import logging |
| 3 | +import jsonpickle |
| 4 | +import boto3 |
| 5 | +from aws_xray_sdk.core import patch_all |
| 6 | +import os |
| 7 | +from neo4j import GraphDatabase |
| 8 | + |
| 9 | +neo4j_uri = os.environ.get('NEO4J_URI') |
| 10 | +neo4j_user = os.environ.get('NEO4J_USERNAME') |
| 11 | +neo4j_password = os.environ.get('NEO4J_PASSWORD') |
| 12 | + |
| 13 | +logger = logging.getLogger() |
| 14 | +logger.setLevel(logging.INFO) |
| 15 | +patch_all() |
| 16 | + |
| 17 | +if neo4j_uri is None or neo4j_user is None or neo4j_password is None: |
| 18 | + logger.info('## ENVIRONMENT VARIABLES\r' + jsonpickle.encode(dict(**os.environ))) |
| 19 | + raise Exception("Missing environment variables for connecting to Aura; double check!") |
| 20 | + |
| 21 | +driver = GraphDatabase.driver(neo4j_uri, auth=(neo4j_user, neo4j_password), |
| 22 | + max_connection_lifetime=5*60, |
| 23 | + keep_alive=True) |
| 24 | + |
| 25 | +client = boto3.client('lambda') |
| 26 | +client.get_account_settings() |
| 27 | + |
| 28 | +def write_graph_record(tx, event): |
| 29 | + val = jsonpickle.encode(event) |
| 30 | + tx.run(""" |
| 31 | + MERGE (e:LambdaEvent { created: datetime(), event: $event }) |
| 32 | + """, event=jsonpickle.encode(event)) |
| 33 | + |
| 34 | +def lambda_handler(event, context): |
| 35 | + logger.info('## ENVIRONMENT VARIABLES\r' + jsonpickle.encode(dict(**os.environ))) |
| 36 | + logger.info('## EVENT\r' + jsonpickle.encode(event)) |
| 37 | + logger.info('## CONTEXT\r' + jsonpickle.encode(context)) |
| 38 | + logger.info("## CONNECTING TO %s" % neo4j_uri) |
| 39 | + |
| 40 | + with driver.session() as session: |
| 41 | + session.write_transaction(write_graph_record, event) |
| 42 | + |
| 43 | + response = client.get_account_settings() |
| 44 | + return response['AccountUsage'] |
0 commit comments