使用 Azure Python SDK,我想使用 get_client_from_auth_file
方法返回 KeyVaultClient
,以便从 KeyVault 获取 secret ,而无需通过 KeyVaultManagementClient
。
根据documentation ,似乎可以从任何 SDK 客户端类创建客户端。
我能够做到这一点:
from azure.common.client_factory import get_client_from_auth_file
from azure.mgmt.keyvault import KeyVaultManagementClient
_kv_mgmt_client = get_client_from_auth_file(KeyVaultManagementClient)
但不是这个:
from azure.common.client_factory import get_client_from_auth_file
from azure.keyvault import KeyVaultClient
_kv_client = get_client_from_auth_file(KeyVaultClient)
这是错误消息:TypeError:__init__() 获得意外的关键字参数“base_url”
更新:
经过审核,get_client_from_auth_file
返回多个结果,包括 base_url
,因此以下辅助函数可以解决 TypeError
。
class KeyVaultClientHelper:
def __init__(self, credentials, **kwargs):
self._credentials = credentials
并且 KeyVaultClient 会成功,直到它尝试获取 secret 并返回未经授权
。
helper = get_client_from_auth_file(KeyVaultClientHelper)
client = KeyVaultClient(helper._credentials)
print(client.get_secret("http://my-vault-url...", "MY-KEY", '').value))
但是,我使用具有相同身份验证文件的 ServicePrincipalCredential
成功获取了 secret 。
最佳答案
这是 azure-common 中的一个错误,已在 1.1.22 中修复: https://pypi.org/project/azure-common/1.1.22/
谢谢!
关于python - 是否可以使用服务主体通过 Azure Python SDK 方法 get_client_from_auth_file 返回 KeyVaultClient?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56432363/