Azure Python SDK取Key Vault密钥初始化Storage Account TableService报错
报错原因
Azure Key Vault的SecretClient.get_secret()方法返回的不是纯字符串类型的密钥值,而是KeyVaultSecret类的实例对象,该对象包含密钥值、版本、过期时间、标签等多类元数据。你直接将该对象传入TableService的account_name、account_key参数,而SDK内部会对传入的账号密钥调用字符串方法strip()做格式处理,KeyVaultSecret对象没有该方法,因此抛出属性不存在的报错。
修复方法
所有调用get_secret()获取密钥的位置,都需要额外访问返回对象的value属性,拿到实际存储的字符串类型密钥值再传入业务接口即可。
关键代码修正示例
原报错行修正:
table_service_out = TableService( account_name=client.get_secret("GATEWAY-Account-Name-out").value, account_key=client.get_secret("GATEWAY-Account-Key-out").value ) table_service_in = TableService( account_name=client.get_secret("GATEWAY-Account-Name-in").value, account_key=client.get_secret("GATEWAY-Account-Key-in").value )
其余所有get_secret调用同步修正:
# 连接串、账号密钥等取值都加.value connection_string = client.get_secret("GATEWAY-Connection-String").value account_key = client.get_secret("GATEWAY-Account-Key").value # 后续循环内的目标存储密钥也要修正 target_connection_string = client.get_secret("GATEWAY-Target-Connection-String").value target_account_key = client.get_secret("GATEWAY-Target-Account-Key").value
内容的提问来源于stack exchange,提问作者Nayden Van
相关产品推荐
相关产品推荐

