| @@ -1,7 +1,8 @@ | |||
| from collections.abc import Generator | |||
| from datetime import UTC, datetime, timedelta | |||
| from typing import Optional | |||
| from azure.identity import DefaultAzureCredential | |||
| from azure.identity import ChainedTokenCredential, DefaultAzureCredential | |||
| from azure.storage.blob import AccountSasPermissions, BlobServiceClient, ResourceTypes, generate_account_sas | |||
| from configs import dify_config | |||
| @@ -19,6 +20,7 @@ class AzureBlobStorage(BaseStorage): | |||
| self.account_name = dify_config.AZURE_BLOB_ACCOUNT_NAME | |||
| self.account_key = dify_config.AZURE_BLOB_ACCOUNT_KEY | |||
| self.credential: Optional[ChainedTokenCredential] = None | |||
| if self.account_key == "managedidentity": | |||
| self.credential = DefaultAzureCredential() | |||
| else: | |||
| @@ -64,7 +66,7 @@ class AzureBlobStorage(BaseStorage): | |||
| def _sync_client(self): | |||
| if self.account_key == "managedidentity": | |||
| return BlobServiceClient(account_url=self.account_url, credential=self.credential) | |||
| return BlobServiceClient(account_url=self.account_url, credential=self.credential) # type: ignore | |||
| cache_key = "azure_blob_sas_token_{}_{}".format(self.account_name, self.account_key) | |||
| cache_result = redis_client.get(cache_key) | |||