在Python中通过秘密名称获取Azure秘密值时出错

问题描述 投票:0回答:1

我在尝试获取秘密值时收到以下错误,

AttributeError: 'coroutine' object has no attribute 'token'
sys:1: RuntimeWarning: coroutine 'AzureCliCredential.get_token' was never awaited

代码-

#secrets.py

   from azure.identity.aio import AzureCliCredential
   from azure.keyvault.secrets import SecretClient
    
    
   KVUri = f"https://{keyVaultName}.vault.azure.net"
    
    
   credential = AzureCliCredential()
    
   secret_client = SecretClient(vault_url=KVUri, credential=credential)    
    
   async def get_secret(name: str):
        secret = await secret_client.get_secret(name)
        return secret.value

#main.py

 async def print_hi(name):
        # Use a breakpoint in the code line below to debug your script.
        print(f'Hi, {name}')  # Press Ctrl+F8 to toggle the breakpoint.
        secret_value = await secrets.get_secret("order-cat-appinsights-instrumentation-key")
        print(f"Secret value is {secret_value}")
       
 
# Press the green button in the gutter to run the script.
if __name__ == '__main__':
    asyncio.run(print_hi('PyCharm'))
    # print_hi('PyCharm')
python azure azure-keyvault azure-identity
1个回答
0
投票

AttributeError:“coroutine”对象没有属性“token”sys:1:RuntimeWarning:coroutine“AzureCliCredential.get_token”从来没有 期待

我同意mycooyp的评论,你需要使用

azure.keyvault.secrets.aio
库来通过
async
过程获取秘密。

您可以使用以下修改后的代码,使用Python SDK获取带有秘密名称的秘密值。

secret.py

from azure.identity.aio import AzureCliCredential
from azure.keyvault.secrets.aio import SecretClient

keyVaultName="xxxx"
KVUri = f"https://{keyVaultName}.vault.azure.net"

async def get_secret(name: str):
    credential = AzureCliCredential()
    async with SecretClient(vault_url=KVUri, credential=credential) as secret_client:
        secret = await secret_client.get_secret(name)
        return secret.value

main.py

import asyncio
import secret

async def print_hi(name):
    print(f'Hi, {name}')
    secret_value = await secret.get_secret("secret3")
    print(f"Secret value is {secret_value}")

if __name__ == '__main__':
    asyncio.run(print_hi('Azure'))

输出:

Hi, Azure
Secret value is Wxxxxxxx

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.