backend-printing/helper/azure_client.py (38 lines of code) (raw):
"""Azure client library to interact with the Azure services.
"""
import os
from azure.identity import ManagedIdentityCredential
from azure.storage.blob import BlobClient
from azure.keyvault.secrets import SecretClient
from azure.storage.queue import (
QueueClient,
BinaryBase64DecodePolicy,
BinaryBase64EncodePolicy,
)
from azure.data.tables import TableServiceClient
from helper.constants import KEY_VAULT_URL
class AzureClient:
def __init__(self):
self._credential = ManagedIdentityCredential(
client_id=os.environ["MSI_CLIENT_ID"]
)
self.storage_queue_client = QueueClient.from_connection_string(
conn_str=os.environ["STORAGE_ACCESS_KEY"],
retry_total=3,
queue_name=os.environ["STORAGE_QUEUE_NAME"],
credential=self._credential,
message_encode_policy=BinaryBase64EncodePolicy(),
message_decode_policy=BinaryBase64DecodePolicy(),
)
self.key_vault_client = SecretClient(
vault_url=KEY_VAULT_URL % os.environ["KEY_VAULT_NAME"],
credential=self._credential,
)
self.table_service_client = TableServiceClient.from_connection_string(
conn_str=os.environ["STORAGE_ACCESS_KEY"], retry_total=3
).get_table_client(table_name=os.environ["STORAGE_TABLE_NAME"])
def get_blob_client(self, blob_name):
"""Get the blob client
Args:
blob_name (string): blob name
Returns:
BlobClient: blob client
"""
return BlobClient.from_connection_string(
conn_str=os.environ["STORAGE_ACCESS_KEY"],
container_name=os.environ["STORAGE_CONTAINER_NAME"],
blob_name=blob_name,
credential=self._credential,
)