mirror of
https://github.com/langgenius/dify.git
synced 2024-11-16 03:32:23 +08:00
Add ALIYUN_OSS_PATH configuration for Aliyun OSS (#7864)
Some checks are pending
Build and Push API & Web / build (api, DIFY_API_IMAGE_NAME, linux/amd64, build-api-amd64) (push) Waiting to run
Build and Push API & Web / build (api, DIFY_API_IMAGE_NAME, linux/arm64, build-api-arm64) (push) Waiting to run
Build and Push API & Web / build (web, DIFY_WEB_IMAGE_NAME, linux/amd64, build-web-amd64) (push) Waiting to run
Build and Push API & Web / build (web, DIFY_WEB_IMAGE_NAME, linux/arm64, build-web-arm64) (push) Waiting to run
Build and Push API & Web / create-manifest (api, DIFY_API_IMAGE_NAME, merge-api-images) (push) Blocked by required conditions
Build and Push API & Web / create-manifest (web, DIFY_WEB_IMAGE_NAME, merge-web-images) (push) Blocked by required conditions
Some checks are pending
Build and Push API & Web / build (api, DIFY_API_IMAGE_NAME, linux/amd64, build-api-amd64) (push) Waiting to run
Build and Push API & Web / build (api, DIFY_API_IMAGE_NAME, linux/arm64, build-api-arm64) (push) Waiting to run
Build and Push API & Web / build (web, DIFY_WEB_IMAGE_NAME, linux/amd64, build-web-amd64) (push) Waiting to run
Build and Push API & Web / build (web, DIFY_WEB_IMAGE_NAME, linux/arm64, build-web-arm64) (push) Waiting to run
Build and Push API & Web / create-manifest (api, DIFY_API_IMAGE_NAME, merge-api-images) (push) Blocked by required conditions
Build and Push API & Web / create-manifest (web, DIFY_WEB_IMAGE_NAME, merge-web-images) (push) Blocked by required conditions
Co-authored-by: seayon <zhaoxuyang@shouqianba.com>
This commit is contained in:
parent
1510bdbcf6
commit
78989e9049
|
@ -60,7 +60,8 @@ ALIYUN_OSS_SECRET_KEY=your-secret-key
|
||||||
ALIYUN_OSS_ENDPOINT=your-endpoint
|
ALIYUN_OSS_ENDPOINT=your-endpoint
|
||||||
ALIYUN_OSS_AUTH_VERSION=v1
|
ALIYUN_OSS_AUTH_VERSION=v1
|
||||||
ALIYUN_OSS_REGION=your-region
|
ALIYUN_OSS_REGION=your-region
|
||||||
|
# Don't start with '/'. OSS doesn't support leading slash in object names.
|
||||||
|
ALIYUN_OSS_PATH=your-path
|
||||||
# Google Storage configuration
|
# Google Storage configuration
|
||||||
GOOGLE_STORAGE_BUCKET_NAME=yout-bucket-name
|
GOOGLE_STORAGE_BUCKET_NAME=yout-bucket-name
|
||||||
GOOGLE_STORAGE_SERVICE_ACCOUNT_JSON_BASE64=your-google-service-account-json-base64-string
|
GOOGLE_STORAGE_SERVICE_ACCOUNT_JSON_BASE64=your-google-service-account-json-base64-string
|
||||||
|
|
|
@ -38,3 +38,8 @@ class AliyunOSSStorageConfig(BaseSettings):
|
||||||
description="Aliyun OSS authentication version",
|
description="Aliyun OSS authentication version",
|
||||||
default=None,
|
default=None,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
ALIYUN_OSS_PATH: Optional[str] = Field(
|
||||||
|
description="Aliyun OSS path",
|
||||||
|
default=None,
|
||||||
|
)
|
||||||
|
|
|
@ -15,6 +15,7 @@ class AliyunStorage(BaseStorage):
|
||||||
|
|
||||||
app_config = self.app.config
|
app_config = self.app.config
|
||||||
self.bucket_name = app_config.get("ALIYUN_OSS_BUCKET_NAME")
|
self.bucket_name = app_config.get("ALIYUN_OSS_BUCKET_NAME")
|
||||||
|
self.folder = app.config.get("ALIYUN_OSS_PATH")
|
||||||
oss_auth_method = aliyun_s3.Auth
|
oss_auth_method = aliyun_s3.Auth
|
||||||
region = None
|
region = None
|
||||||
if app_config.get("ALIYUN_OSS_AUTH_VERSION") == "v4":
|
if app_config.get("ALIYUN_OSS_AUTH_VERSION") == "v4":
|
||||||
|
@ -30,15 +31,29 @@ class AliyunStorage(BaseStorage):
|
||||||
)
|
)
|
||||||
|
|
||||||
def save(self, filename, data):
|
def save(self, filename, data):
|
||||||
|
if not self.folder or self.folder.endswith("/"):
|
||||||
|
filename = self.folder + filename
|
||||||
|
else:
|
||||||
|
filename = self.folder + "/" + filename
|
||||||
self.client.put_object(filename, data)
|
self.client.put_object(filename, data)
|
||||||
|
|
||||||
def load_once(self, filename: str) -> bytes:
|
def load_once(self, filename: str) -> bytes:
|
||||||
|
if not self.folder or self.folder.endswith("/"):
|
||||||
|
filename = self.folder + filename
|
||||||
|
else:
|
||||||
|
filename = self.folder + "/" + filename
|
||||||
|
|
||||||
with closing(self.client.get_object(filename)) as obj:
|
with closing(self.client.get_object(filename)) as obj:
|
||||||
data = obj.read()
|
data = obj.read()
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def load_stream(self, filename: str) -> Generator:
|
def load_stream(self, filename: str) -> Generator:
|
||||||
def generate(filename: str = filename) -> Generator:
|
def generate(filename: str = filename) -> Generator:
|
||||||
|
if not self.folder or self.folder.endswith("/"):
|
||||||
|
filename = self.folder + filename
|
||||||
|
else:
|
||||||
|
filename = self.folder + "/" + filename
|
||||||
|
|
||||||
with closing(self.client.get_object(filename)) as obj:
|
with closing(self.client.get_object(filename)) as obj:
|
||||||
while chunk := obj.read(4096):
|
while chunk := obj.read(4096):
|
||||||
yield chunk
|
yield chunk
|
||||||
|
@ -46,10 +61,24 @@ class AliyunStorage(BaseStorage):
|
||||||
return generate()
|
return generate()
|
||||||
|
|
||||||
def download(self, filename, target_filepath):
|
def download(self, filename, target_filepath):
|
||||||
|
if not self.folder or self.folder.endswith("/"):
|
||||||
|
filename = self.folder + filename
|
||||||
|
else:
|
||||||
|
filename = self.folder + "/" + filename
|
||||||
|
|
||||||
self.client.get_object_to_file(filename, target_filepath)
|
self.client.get_object_to_file(filename, target_filepath)
|
||||||
|
|
||||||
def exists(self, filename):
|
def exists(self, filename):
|
||||||
|
if not self.folder or self.folder.endswith("/"):
|
||||||
|
filename = self.folder + filename
|
||||||
|
else:
|
||||||
|
filename = self.folder + "/" + filename
|
||||||
|
|
||||||
return self.client.object_exists(filename)
|
return self.client.object_exists(filename)
|
||||||
|
|
||||||
def delete(self, filename):
|
def delete(self, filename):
|
||||||
|
if not self.folder or self.folder.endswith("/"):
|
||||||
|
filename = self.folder + filename
|
||||||
|
else:
|
||||||
|
filename = self.folder + "/" + filename
|
||||||
self.client.delete_object(filename)
|
self.client.delete_object(filename)
|
||||||
|
|
|
@ -285,6 +285,8 @@ ALIYUN_OSS_SECRET_KEY=your-secret-key
|
||||||
ALIYUN_OSS_ENDPOINT=https://oss-ap-southeast-1-internal.aliyuncs.com
|
ALIYUN_OSS_ENDPOINT=https://oss-ap-southeast-1-internal.aliyuncs.com
|
||||||
ALIYUN_OSS_REGION=ap-southeast-1
|
ALIYUN_OSS_REGION=ap-southeast-1
|
||||||
ALIYUN_OSS_AUTH_VERSION=v4
|
ALIYUN_OSS_AUTH_VERSION=v4
|
||||||
|
# Don't start with '/'. OSS doesn't support leading slash in object names.
|
||||||
|
ALIYUN_OSS_PATH=your-path
|
||||||
|
|
||||||
# Tencent COS Configuration
|
# Tencent COS Configuration
|
||||||
# The name of the Tencent COS bucket to use for storing files.
|
# The name of the Tencent COS bucket to use for storing files.
|
||||||
|
|
|
@ -66,6 +66,7 @@ x-shared-env: &shared-api-worker-env
|
||||||
ALIYUN_OSS_ENDPOINT: ${ALIYUN_OSS_ENDPOINT:-}
|
ALIYUN_OSS_ENDPOINT: ${ALIYUN_OSS_ENDPOINT:-}
|
||||||
ALIYUN_OSS_REGION: ${ALIYUN_OSS_REGION:-}
|
ALIYUN_OSS_REGION: ${ALIYUN_OSS_REGION:-}
|
||||||
ALIYUN_OSS_AUTH_VERSION: ${ALIYUN_OSS_AUTH_VERSION:-v4}
|
ALIYUN_OSS_AUTH_VERSION: ${ALIYUN_OSS_AUTH_VERSION:-v4}
|
||||||
|
ALIYUN_OSS_PATHS: ${ALIYUN_OSS_PATH:-}
|
||||||
TENCENT_COS_BUCKET_NAME: ${TENCENT_COS_BUCKET_NAME:-}
|
TENCENT_COS_BUCKET_NAME: ${TENCENT_COS_BUCKET_NAME:-}
|
||||||
TENCENT_COS_SECRET_KEY: ${TENCENT_COS_SECRET_KEY:-}
|
TENCENT_COS_SECRET_KEY: ${TENCENT_COS_SECRET_KEY:-}
|
||||||
TENCENT_COS_SECRET_ID: ${TENCENT_COS_SECRET_ID:-}
|
TENCENT_COS_SECRET_ID: ${TENCENT_COS_SECRET_ID:-}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user