首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何捕获密钥库SecretClient错误Azure?

如何捕获密钥库SecretClient错误Azure?
EN

Stack Overflow用户
提问于 2020-10-29 22:23:26
回答 1查看 741关注 0票数 0

我是Python新手。我有一个工作的单块程序,我想使用try: - except:来处理错误,将其分解成单独的函数(try:-except:)。

在创建密钥库SecretClient时捕获错误的一些方法是什么?

尝试1:

  • 当我输入一个糟糕的kv_name时,这里什么都不会发生。
  • 我希望它能记录指定的except:消息。
代码语言:javascript
复制
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时,这里也不会发生任何事情。
  • 我希望它会引起一个错误。
代码语言:javascript
复制
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在这里失败!?
代码语言:javascript
复制
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是否已经成功创建?
代码语言:javascript
复制
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>`
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-29 23:52:22

构造函数不检查给定的保险库是否存在,也不检查是否可以访问它,因此在您的尝试中它成功了:您得到一个SecretClient实例,没有引发错误。

如果URL是一个不存在的库,或者是您未被授权访问的库,那么当您第一次尝试一个操作时,您将看到一个错误:

代码语言:javascript
复制
>>> 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

失败的操作会引发在蓝芯中定义的错误,您可以像往常一样使用try/except块来处理这些错误。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64600024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档