1- from typing import Generator
1+ import logging
2+ from typing import 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 )
1115
12- async def get_fs () -> Generator :
13- file_system = Minio (
14- settings .MINIO_SERVER_URL ,
15- access_key = settings .MINIO_ACCESS_KEY ,
16- secret_key = settings .MINIO_SECRET_KEY ,
17- secure = False ,
18- )
16+
17+ async def get_fs () -> AsyncGenerator [Minio , None ]:
18+ # Either use AWS Identity and Access Management (IAM) to connect to S3 or connect to Minio server
19+ if settings .AWS_IAM :
20+ logger .debug ("AWS IAM enabled for s3 authentication" )
21+ session = boto3 .Session ()
22+ credentials = session .get_credentials ()
23+ credentials = credentials .get_frozen_credentials ()
24+ file_system = Minio (
25+ settings .MINIO_EXTERNAL_SERVER_URL ,
26+ access_key = credentials .access_key ,
27+ secret_key = credentials .secret_key ,
28+ session_token = credentials .token ,
29+ secure = settings .MINIO_SECURE .lower () == "true" ,
30+ )
31+ else :
32+ logger .debug ("Local MinIO authentication" )
33+ file_system = Minio (
34+ settings .MINIO_EXTERNAL_SERVER_URL ,
35+ access_key = settings .MINIO_ACCESS_KEY ,
36+ secret_key = settings .MINIO_SECRET_KEY ,
37+ secure = settings .MINIO_SECURE .lower () == "true" ,
38+ )
1939 clowder_bucket = settings .MINIO_BUCKET_NAME
2040 if not file_system .bucket_exists (clowder_bucket ):
2141 file_system .make_bucket (clowder_bucket )
@@ -24,14 +44,30 @@ async def get_fs() -> Generator:
2444
2545
2646# 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- )
47+ async def get_external_fs () -> AsyncGenerator [Minio , None ]:
48+ # Either use AWS Identity and Access Management (IAM) to connect to S3 or connect to Minio server
49+ if settings .AWS_IAM :
50+ logger .debug ("AWS IAM enabled for s3 authentication" )
51+ session = boto3 .Session ()
52+ credentials = session .get_credentials ()
53+ credentials = credentials .get_frozen_credentials ()
54+ file_system = Minio (
55+ settings .MINIO_EXTERNAL_SERVER_URL ,
56+ access_key = credentials .access_key ,
57+ secret_key = credentials .secret_key ,
58+ session_token = credentials .token ,
59+ secure = settings .MINIO_SECURE .lower () == "true" ,
60+ )
61+ else :
62+ logger .debug ("Local MinIO authentication" )
63+ file_system = Minio (
64+ settings .MINIO_EXTERNAL_SERVER_URL ,
65+ access_key = settings .MINIO_ACCESS_KEY ,
66+ secret_key = settings .MINIO_SECRET_KEY ,
67+ secure = settings .MINIO_SECURE .lower () == "true" ,
68+ )
3469 clowder_bucket = settings .MINIO_BUCKET_NAME
70+ logger .debug ("Connecting to bucket %s" , clowder_bucket )
3571 if not file_system .bucket_exists (clowder_bucket ):
3672 file_system .make_bucket (clowder_bucket )
3773 file_system .set_bucket_versioning (clowder_bucket , VersioningConfig (ENABLED ))
@@ -44,6 +80,7 @@ def get_rabbitmq() -> BlockingChannel:
4480 parameters = pika .ConnectionParameters (
4581 settings .RABBITMQ_HOST , credentials = credentials
4682 )
83+ logger .debug ("Connecting to rabbitmq at %s" , settings .RABBITMQ_HOST )
4784 connection = pika .BlockingConnection (parameters )
4885 channel = connection .channel ()
4986 return channel
0 commit comments