Sfoglia il codice sorgente

Use DefaultAzureCredential for managed identity in azure blob extention (#11559)

tags/0.15.3
te-chan 8 mesi fa
parent
commit
fac83e14bc
Nessun account collegato all'indirizzo email del committer
1 ha cambiato i file con 9 aggiunte e 0 eliminazioni
  1. 9
    0
      api/extensions/storage/azure_blob_storage.py

+ 9
- 0
api/extensions/storage/azure_blob_storage.py Vedi File

from collections.abc import Generator from collections.abc import Generator
from datetime import UTC, datetime, timedelta from datetime import UTC, datetime, timedelta


from azure.identity import DefaultAzureCredential
from azure.storage.blob import AccountSasPermissions, BlobServiceClient, ResourceTypes, generate_account_sas from azure.storage.blob import AccountSasPermissions, BlobServiceClient, ResourceTypes, generate_account_sas


from configs import dify_config from configs import dify_config
self.account_name = dify_config.AZURE_BLOB_ACCOUNT_NAME self.account_name = dify_config.AZURE_BLOB_ACCOUNT_NAME
self.account_key = dify_config.AZURE_BLOB_ACCOUNT_KEY self.account_key = dify_config.AZURE_BLOB_ACCOUNT_KEY


if self.account_key == "managedidentity":
self.credential = DefaultAzureCredential()
else:
self.credential = None

def save(self, filename, data): def save(self, filename, data):
client = self._sync_client() client = self._sync_client()
blob_container = client.get_container_client(container=self.bucket_name) blob_container = client.get_container_client(container=self.bucket_name)
blob_container.delete_blob(filename) blob_container.delete_blob(filename)


def _sync_client(self): def _sync_client(self):
if self.account_key == "managedidentity":
return BlobServiceClient(account_url=self.account_url, credential=self.credential)

cache_key = "azure_blob_sas_token_{}_{}".format(self.account_name, self.account_key) cache_key = "azure_blob_sas_token_{}_{}".format(self.account_name, self.account_key)
cache_result = redis_client.get(cache_key) cache_result = redis_client.get(cache_key)
if cache_result is not None: if cache_result is not None:

Loading…
Annulla
Salva