Pārlūkot izejas kodu

Merge pull request #10619 from OrenZhang/feat_s3_virtual_path

feat(s3): support for s3 virtual path style
Timothy Jaeryang Baek 2 mēneši atpakaļ
vecāks
revīzija
6c862b8fbf

+ 4 - 0
backend/open_webui/config.py

@@ -678,6 +678,10 @@ S3_REGION_NAME = os.environ.get("S3_REGION_NAME", None)
 S3_BUCKET_NAME = os.environ.get("S3_BUCKET_NAME", None)
 S3_KEY_PREFIX = os.environ.get("S3_KEY_PREFIX", None)
 S3_ENDPOINT_URL = os.environ.get("S3_ENDPOINT_URL", None)
+S3_USE_ACCELERATE_ENDPOINT = (
+    os.environ.get("S3_USE_ACCELERATE_ENDPOINT", "False").lower() == "true"
+)
+S3_ADDRESSING_STYLE = os.environ.get("S3_ADDRESSING_STYLE", None)
 
 GCS_BUCKET_NAME = os.environ.get("GCS_BUCKET_NAME", None)
 GOOGLE_APPLICATION_CREDENTIALS_JSON = os.environ.get(

+ 9 - 0
backend/open_webui/storage/provider.py

@@ -5,6 +5,7 @@ from abc import ABC, abstractmethod
 from typing import BinaryIO, Tuple
 
 import boto3
+from botocore.config import Config
 from botocore.exceptions import ClientError
 from open_webui.config import (
     S3_ACCESS_KEY_ID,
@@ -13,6 +14,8 @@ from open_webui.config import (
     S3_KEY_PREFIX,
     S3_REGION_NAME,
     S3_SECRET_ACCESS_KEY,
+    S3_USE_ACCELERATE_ENDPOINT,
+    S3_ADDRESSING_STYLE,
     GCS_BUCKET_NAME,
     GOOGLE_APPLICATION_CREDENTIALS_JSON,
     AZURE_STORAGE_ENDPOINT,
@@ -98,6 +101,12 @@ class S3StorageProvider(StorageProvider):
             endpoint_url=S3_ENDPOINT_URL,
             aws_access_key_id=S3_ACCESS_KEY_ID,
             aws_secret_access_key=S3_SECRET_ACCESS_KEY,
+            config=Config(
+                s3={
+                    "use_accelerate_endpoint": S3_USE_ACCELERATE_ENDPOINT,
+                    "addressing_style": S3_ADDRESSING_STYLE,
+                },
+            ),
         )
         self.bucket_name = S3_BUCKET_NAME
         self.key_prefix = S3_KEY_PREFIX if S3_KEY_PREFIX else ""