From dce62eaa370fb96b3c4dfe74e24451950affe456 Mon Sep 17 00:00:00 2001 From: Hammy Date: Fri, 3 Sep 2021 15:05:40 +0100 Subject: [PATCH] Add code for update-lambda --- update_lambda/requirements.txt | 8 +++++++ update_lambda/src/request_handler.py | 31 ++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 update_lambda/requirements.txt create mode 100644 update_lambda/src/request_handler.py diff --git a/update_lambda/requirements.txt b/update_lambda/requirements.txt new file mode 100644 index 0000000..a08ef6d --- /dev/null +++ b/update_lambda/requirements.txt @@ -0,0 +1,8 @@ +boto3==1.18.34 +botocore==1.21.34 +jmespath==0.10.0 +python-dateutil==2.8.2 +s3transfer==0.5.0 +six==1.16.0 +urllib3==1.26.6 +python-decouple==3.4 diff --git a/update_lambda/src/request_handler.py b/update_lambda/src/request_handler.py new file mode 100644 index 0000000..cf7a4fc --- /dev/null +++ b/update_lambda/src/request_handler.py @@ -0,0 +1,31 @@ +from boto3 import Session +from decouple import config + + +def event_handler(event, context): + session: Session = configure_boto3_session() + + bucket_name = event["Records"][0]["s3"]["bucket"]["name"] + s3_key = event["Records"][0]["s3"]["object"]["key"] + + s3_client = session.client('s3') + metadata = s3_client.head_object(Bucket=bucket_name, Key=s3_key) + functionArn = metadata["ResponseMetadata"]["HTTPHeaders"]["x-amz-meta-function-arn"] + + lambda_client = session.client('lambda') + response = lambda_client.update_function_code( + FunctionName=functionArn, + S3Bucket=bucket_name, + S3Key=s3_key, + Publish=True + ) + + print(f"This is the response: {response}") + + +def configure_boto3_session() -> Session: + return Session( + aws_access_key_id=config("aws_access_key_id"), + aws_secret_access_key=config("aws_secret_access_key"), + region_name="eu-west-1" + )