From 31d01d5efbccbf923e9131c0b67aa916be873e9e Mon Sep 17 00:00:00 2001 From: Alex Schofield Date: Tue, 18 Feb 2025 22:50:57 +0000 Subject: change boto3 endpoint if debug mode is enabled should this go here in 'production' code, even though it's a testing tool? this may be changed in the near future. i've just got a gut feeling that this might not be right. --- obfuscator/csv_reader.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/obfuscator/csv_reader.py b/obfuscator/csv_reader.py index c777998..8f4ebea 100644 --- a/obfuscator/csv_reader.py +++ b/obfuscator/csv_reader.py @@ -1,6 +1,7 @@ import csv import io import boto3 +import os from typing import List, Dict from obfuscator.logger import get_logger from obfuscator.utils import get_s3_path @@ -52,7 +53,19 @@ class CSVReader: bucket, key = get_s3_path(path) logger.debug(f"Reading S3 CSV from: {bucket}/{key}") - client = boto3.client("s3") + # If DEBUG=TRUE, use the localstack endpoint for testing + if os.getenv("DEBUG", "FALSE").upper() == "TRUE": + localstack_endpoint = "http://localhost.localstack.cloud:4566" + logger.debug("Using LocalStack endpoint for S3") + client = boto3.client( + "s3", + endpoint_url=localstack_endpoint, + aws_access_key_id="dummy", + aws_secret_access_key="dummy", + ) + logger.debug(f"endpoint_url: {localstack_endpoint}") + else: + client = boto3.client("s3") try: # Attempt to read the S3 object and return the data as a list of dictionaries -- cgit v1.2.3