在运行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
- 使用令牌凭据进行身份验证