Azure KeyVault调用Python get_secret()报TypeError: string indices must be integers
问题解决方案
TypeError: string indices must be integers报错本质是Azure Key Vault Python SDK处理异常响应时的格式不匹配:当Key Vault请求失败时,服务端返回了纯字符串格式的错误内容,而非SDK预期的JSON结构,导致SDK尝试提取body["error"]字段时触发类型错误。
你需要按以下步骤逐一修正代码和配置问题:
- 修正租户ID与客户端ID的赋值错误
现有代码中两个参数的取值完全填反,修改为对应正确值即可:# 原错误配置 TENANT_ID = 'client_id' CLIENT_ID = 'tenant_id' # 修正为对应实际值 TENANT_ID = '你的Azure租户ID' CLIENT_ID = '你的服务主体客户端ID' - 修正Key Vault访问URL
标准Key Vault访问URL格式为https://<你的KeyVault名称>.vault.azure.net/,请替换代码中占位符https://vault_url为实际访问地址。 - 修正
get_secret方法的入参
从报错日志可以看到,实际运行的代码中调用get_secret时传入了KEYVAULT_NAME,而非预期的密钥名称SECRET_NAME,修改为:print(_sc.get_secret(SECRET_NAME).value) - 检查Key Vault访问权限
确认你使用的服务主体已经在Key Vault的访问策略中被授予了**获取密钥(Get Secret)**权限,权限不足也会触发请求错误导致该异常。
内容的提问来源于stack exchange,提问作者anaghapramesh
相关产品推荐
相关产品推荐

