我收到错误" failed: AttributeError: 'ServicePrincipalCredentials' object has no attribute 'get_token"



在运行Chaos Toolkit Azure相关的行动手册时,我收到一个错误:;失败:AttributeError:"ServicePrincipalCredentials"对象没有属性"get_token";尽管我已经传入了正确的Secret ID、Tenant ID、Client ID、SUubscription ID和Client Secret ID。即使是SUbscription也对Service Principal拥有完全权限。

简短回答:检查您试图运行的确切代码会有所帮助,但从上述错误来看,您似乎正在尝试以旧的方式使用较新的库。使用基于azure.core的较新SDK库时,请使用azure.identity库中的ClientSecretCredential对象。使用较旧的SDK库时,请使用azure.common库中的ServicePrincipalCredentials

详细答案:Python的Azure库目前正在更新,以共享常见的云模式,如身份验证协议、日志记录、跟踪、传输协议、缓冲响应和重试。

在新版本中,身份验证机制被重新设计,并被azure-identity库取代,以便为所有Azure SDK提供基于Azure Identity的统一身份验证。运行pip install azure-identity获取包。

因此,不要使用azure.common库中的ServicePrincipalCredentials类,而是按如下方式切换为使用ClientSecretCredential

from azure.identity import ClientSecretCredential
from azure.mgmt.compute import ComputeManagementClient
credential = ClientSecretCredential(
tenant_id='xxxxx',
client_id='xxxxx',
client_secret='xxxxx'
)

这里有另一个相关的线程和详细的解决方案:Azure Python SDK:';ServicePrincipalCredentials';对象没有属性';get_token';

附加参考:

  • Azure SDK for Python on GitHub
  • 使用令牌凭据进行身份验证

相关内容

  • 没有找到相关文章

最新更新