From 85ec1abd444c27510b50f189a6e88e097943180f Mon Sep 17 00:00:00 2001 From: Jonas Hagberg Date: Tue, 23 May 2023 15:35:49 +0200 Subject: [PATCH 1/2] Hotfix boto3 now need ssl and verify to work in production --- app/requirements.txt | 2 +- app/utils/s3.py | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/app/requirements.txt b/app/requirements.txt index 828e3d5d..867a7f5d 100644 --- a/app/requirements.txt +++ b/app/requirements.txt @@ -1,6 +1,6 @@ APScheduler==3.10.0 boto3==1.26.79 -botocore==1.29.79 +botocore==1.29.138 cryptography==39.0.1 endesive==2.0.9 Flask_Caching==2.0.2 diff --git a/app/utils/s3.py b/app/utils/s3.py index 06e1a2d1..01954bac 100644 --- a/app/utils/s3.py +++ b/app/utils/s3.py @@ -22,6 +22,7 @@ def __init__( secret_key, access_key, verify, + use_ssl, cert, private_key, ): # pylint: disable=too-many-arguments @@ -40,6 +41,8 @@ def __init__( self.secret_key = secret_key assert isinstance(verify, (bool, Path)) self.verify = verify + assert isinstance(use_ssl, (bool, Path)) + self.use_ssl = use_ssl assert isinstance(cert, (Path, type(None))) self.cert = cert assert isinstance(private_key, (Path, type(None))) @@ -49,11 +52,8 @@ def __init__( "connect_timeout": 40, } - use_ssl = False - if cert and private_key: config_params["client_cert"] = (cert, private_key) - use_ssl = True config = botocore.client.Config(**config_params) self.s3_client = boto3.client( @@ -148,6 +148,7 @@ def get_s3_client(): secret_key=settings.s3.secret_key, access_key=settings.s3.access_key, verify=settings.s3.verify, + use_ssl=settings.s3.use_ssl, cert=settings.s3.cert, private_key=settings.s3.private_key, ) From d8b1dbf37ecbf7ca36fada978188567c5b929822 Mon Sep 17 00:00:00 2001 From: Jonas Hagberg Date: Tue, 23 May 2023 15:44:46 +0200 Subject: [PATCH 2/2] Update settings --- app/utils/settings.py | 1 + 1 file changed, 1 insertion(+) diff --git a/app/utils/settings.py b/app/utils/settings.py index 475b7825..a791a83b 100644 --- a/app/utils/settings.py +++ b/app/utils/settings.py @@ -39,5 +39,6 @@ s3.secret_key = os.environ.get("S3_SECRETKEY", "secretkeytest") s3.access_key = os.environ.get("S3_ACCESSKEY", "accesskeytest") s3.verify = json.loads(os.environ.get("S3_VERIFY", "True").lower()) +s3.use_ssl = json.loads(os.environ.get("S3_USESSL", "True").lower()) s3.cert = None s3.private_key = None