1- from typing import Generator
1+ import logging
2+ from typing import Generator , AsyncGenerator
23
4+ import boto3
35import pika
46from app .config import settings
57from app .search .connect import connect_elasticsearch
810from minio .versioningconfig import VersioningConfig
911from pika .adapters .blocking_connection import BlockingChannel
1012
13+ logger = logging .getLogger (__name__ )
14+ logger .setLevel (logging .DEBUG )
15+
1116
1217async def get_fs () -> Generator :
1318 file_system = Minio (
@@ -24,14 +29,30 @@ async def get_fs() -> Generator:
2429
2530
2631# This will be needed for generating presigned URL for sharing
27- async def get_external_fs () -> Generator :
28- file_system = Minio (
29- settings .MINIO_EXTERNAL_SERVER_URL ,
30- access_key = settings .MINIO_ACCESS_KEY ,
31- secret_key = settings .MINIO_SECRET_KEY ,
32- secure = settings .MINIO_SECURE .lower () == "true" ,
33- )
32+ async def get_external_fs () -> AsyncGenerator [Minio , None ]:
33+ # Either use AWS Identity and Access Management (IAM) to connect to S3 Ïor connect to Minio server
34+ if settings .AWS_IAM :
35+ logger .debug ("AWS IAM enabled for s3 authentication" )
36+ session = boto3 .Session ()
37+ credentials = session .get_credentials ()
38+ credentials = credentials .get_frozen_credentials ()
39+ file_system = Minio (
40+ settings .MINIO_EXTERNAL_SERVER_URL ,
41+ access_key = credentials .access_key ,
42+ secret_key = credentials .secret_key ,
43+ session_token = credentials .token ,
44+ secure = settings .MINIO_SECURE .lower () == "true" ,
45+ )
46+ else :
47+ logger .debug ("Local MinIO authentication" )
48+ file_system = Minio (
49+ settings .MINIO_EXTERNAL_SERVER_URL ,
50+ access_key = settings .MINIO_ACCESS_KEY ,
51+ secret_key = settings .MINIO_SECRET_KEY ,
52+ secure = settings .MINIO_SECURE .lower () == "true" ,
53+ )
3454 clowder_bucket = settings .MINIO_BUCKET_NAME
55+ logger .debug ("Connecting to bucket %s" , clowder_bucket )
3556 if not file_system .bucket_exists (clowder_bucket ):
3657 file_system .make_bucket (clowder_bucket )
3758 file_system .set_bucket_versioning (clowder_bucket , VersioningConfig (ENABLED ))
@@ -44,6 +65,7 @@ def get_rabbitmq() -> BlockingChannel:
4465 parameters = pika .ConnectionParameters (
4566 settings .RABBITMQ_HOST , credentials = credentials
4667 )
68+ logger .debug ("Connecting to rabbitmq at %s" , settings .RABBITMQ_HOST )
4769 connection = pika .BlockingConnection (parameters )
4870 channel = connection .channel ()
4971 return channel
0 commit comments