amol- / depot

Toolkit for storing files and attachments in web applications
MIT License
161 stars 41 forks source link

need verify ssl with boto3 #74

Open qxiddd opened 2 years ago

qxiddd commented 2 years ago

Hello!

I need ssl verification and option to set path to my selfsigned certificate when work with S3.

There's no support of parametres verify and use_ssl для boto3.resource (boto3 docs).

Can you add this support to your depot.io.boto3.S3Storage?

Something like this

class S3Storage:
     ...

     def __init__(self, access_key_id, secret_access_key, bucket=None, region_name=None,
                 policy=None, storage_class=None, endpoint_url=None, prefix='',
                 use_ssl=None, verify=None):
         ...
         kw = {}
         ...
         if use_ssl is not None:
             kw['use_ssl'] = use_ssl
         if verify is not None:
             kw['verify'] = verify
         self._s3 = self._conn.resource('s3', **kw)
         ...

Or even this (support of all S3 configuration parametres)

class S3Storage:
     ...

     def __init__(
        self,
        access_key_id,
        secret_access_key,
        bucket=None,
        policy=None,
        storage_class=None,
        prefix='',
        s3_params=None,
    ):
         ...
         s3_params = s3_params or {}
         self._s3 = self._conn.resource('s3', **s3_params)
         ...

so I can configure depot like this

depot.manager.DepotManager.configure(
    'default',
    {
        'depot.backend': 'depot.io.boto3.S3Storage',
        'depot.access_key_id': settings.depot_access_key_id,
        'depot.secret_access_key': settings.depot_secret_access_key,
        'depot.bucket': 'bububucket',
        'depot.policy': settings.depot_policy,

        'depot.s3_params': {
            'endpoint_url': settings.depot_endpoint_url,
            'use_ssl': True,
            'verify': 'certs.pem',
            'config': botocore.config.Config(
                retries={
                    "max_attempts": MAX_RETRIES,
                    "mode": "standard",
                },
                s3={
                    "addressing_style": 'virtual',
                },
            ),
        },
        'depot.prefix': 'default_prefix'
    },
)