aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/extract_lambda.py50
1 files changed, 28 insertions, 22 deletions
diff --git a/src/extract_lambda.py b/src/extract_lambda.py
index 15fe785..8353481 100644
--- a/src/extract_lambda.py
+++ b/src/extract_lambda.py
@@ -1,14 +1,14 @@
-from pg8000.native import Connection, InterfaceError, identifier
-import boto3
import csv
-from botocore.exceptions import ClientError
-import logging
import json
-from datetime import datetime
+import logging
import re
+from datetime import datetime
+import boto3
+from botocore.exceptions import ClientError
+from pg8000.native import Connection, InterfaceError, identifier
-logger = logging.getLogger()
+logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
# DB Exception class
@@ -39,14 +39,13 @@ def lambda_handler(event, context):
"statusCode": 200,
"body": json.dumps("No changes detected, no CSV files were uploaded."),
}
- else:
- return {
- "statusCode": 200,
- "body": json.dumps(
- f"""CSV files processed for {', '.join(any_changes['updated'])} and uploaded successfully.{
- 'The following tables were not updated: '+', '.join(any_changes['no change']) if any_changes['no change'] else ''}"""
- ),
- }
+ return {
+ "statusCode": 200,
+ "body": json.dumps(
+ f"""CSV files processed for {', '.join(any_changes['updated'])} and uploaded successfully.{
+ 'The following tables were not updated: '+', '.join(any_changes['no change']) if any_changes['no change'] else ''}"""
+ ),
+ }
except Exception as e:
logger.error(f"Error: {e}")
return {"statusCode": 500, "body": json.dumps("Internal server error.")}
@@ -55,17 +54,24 @@ def lambda_handler(event, context):
db.close()
-def retrieve_secrets(
- sm_client=boto3.client("secretsmanager"), secret_name="bentley-secrets"
-):
+def retrieve_secrets():
+ secret_name = "bentley-secrets"
+ region_name = "eu-west-2"
+
+ # Create a Secrets Manager client
+ session = boto3.session.Session()
+ client = session.client(service_name="secretsmanager", region_name=region_name)
+
try:
- response = sm_client.get_secret_value(SecretId=secret_name)
- if "SecretString" in response:
- secret = json.loads(response["SecretString"])
- return secret
+ get_secret_value_response = client.get_secret_value(SecretId=secret_name)
except ClientError as e:
- logger.error(f"Could not retrieve secrets: {e}")
+ logger.error(f"Failed to retrieve secret {secret_name}: {str(e)}")
raise e
+ except KeyError:
+ logger.error(f"Secret {secret_name} does not contain a SecretString")
+ raise ValueError(f"Secret {secret_name} does not contain a SecretString")
+
+ return get_secret_value_response["SecretString"]
def connect_to_database() -> Connection:
git.ajschof.me — hosted by ajschofield — powered by cgit