繁体   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