簡體   English   中英

如何捕獲 Key Vault SecretClient 錯誤 Azure Python SDK?

[英]How to catch Key Vault SecretClient errors Azure Python SDK?

我是 Python 的新手。 我有一個可以工作的整體程序,我想使用try: - except:分解為單個函數 ( def ) 來處理錯誤。

有哪些方法可以在創建 Key Vault SecretClient捕獲錯誤?

嘗試 1:

  • 當我輸入一個錯誤的kv_name時,這里什么也沒有發生。
  • 我希望它記錄指定的except:消息。
credentials = DefaultAzureCredential()

def create_kv_client(kv_name, credentials):
    try:
        kv_uri = 'https://' + kv_name + '.vault.azure.net'
        kv_client = SecretClient(vault_url=kv_uri, credential=credentials)
    except:
        logging.error('####### Failed to create Key Vault Client #######')
    return kv_client

kv_client = create_kv_client('notmykeyvaultname', credentials)

嘗試 2:

  • 當我輸入一個錯誤的kv_name時,這里也沒有任何kv_name
  • 我希望它會引發錯誤。
credentials = DefaultAzureCredential()

def create_kv_client(kv_name, credentials):
    try:
        kv_uri = 'https://' + kv_name + '.vault.azure.net'
        kv_client = SecretClient(vault_url=kv_uri, credential=credentials)
    except:
        logging.error('####### Failed to create Key Vault Client #######')
    return kv_client

kv_client = create_kv_client('notmykeyvaultname', credentials)

if kv_client == None:
    raise Exception('Failed to create Key Vault Client')

嘗試 3:

  • try: - except:移動到函數調用也沒有觸發日志消息
  • 我希望SecretClient在這里失敗!?
credentials = DefaultAzureCredential()

def create_kv_client(kv_name, credentials):
    kv_uri = 'https://' + kv_name + '.vault.azure.net'
    kv_client = SecretClient(vault_url=kv_uri, credential=credentials)
    return kv_client

try:
    kv_client = create_kv_client('notmykeyvaultname', credentials)
except:
    logging.info('####### Failed to create Key Vault client #######')

完整性檢查:

  • 當我在函數運行命令時,失敗的SecretClient的輸出不是None
  • 我可以在這里掛鈎什么來確定SecretClient已成功創建?
credentials = DefaultAzureCredential()

kv_uri = 'https://' + 'notmykeyvaultname' + '.vault.azure.net'

kv_client = SecretClient(vault_url=kv_uri, credential=credentials)

kv_client

`<azure.keyvault.secrets._client.SecretClient at 0x1512046b370>`

構造函數不會檢查給定的保險庫是否存在,或者您是否可以訪問它,因此在您的嘗試中它會成功:您獲得一個SecretClient實例,沒有引發錯誤。

如果 URL 是不存在的保管庫或您無權訪問的保管庫的 URL,則在您第一次嘗試操作時會看到錯誤:

>>> vault_url = "https://nonexistentvaultdoesnotexist.vault.azure.net"
>>> client = SecretClient(vault_url, DefaultAzureCredential())
>>> client.get_secret('secret_name')
Traceback (most recent call last):
...
azure.core.exceptions.ServiceRequestError: <urllib3.connection.VerifiedHTTPSConnection object at 0x000001E313946198>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed

失敗的操作會引發azure-core 中定義的錯誤,您可以像往常一樣使用 try/except 塊處理這些錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM