我使用 DefaultAzureCredential() from * azure.identity * 来获取凭证并使用它来建立TableServiceClient(azure.data.table)连接。如果我尝试对QueueClient(azure.storage.queue)执行同样的操作,我会得到以下错误。就我对文档的理解,应该可以使用DefaultAzureCredential()来实现。
[2023-05-06T08:40:40.331Z] Response status: 403
Response headers:
'Content-Length': '279'
'Content-Type': 'application/xml'
'Server': 'Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0'
'x-ms-request-id': '30a41a1b-a003-0004-71f6-7f25a6000000'
'x-ms-client-request-id': 'adedb50b-ebe9-11ed-b983-001a7dda7113'
'x-ms-version': 'REDACTED'
'x-ms-error-code': 'REDACTED'
'Date': 'Sat, 06 May 2023 08:40:39 GMT'
我用下面的方式连接。如果我用存储帐户密钥切换凭据,它就可以工作。
credential = DefaultAzureCredential()
queue_service_client = QueueClient(
account_url = os.environ["STORAGE_ENDPOINT_QUEUE"],
credential=credential,
queue_name = "smsnotification"
)
def pushNotifyToQueune(queue_service_client, playerId):
logging.info(f"Push notify to queune")
try:
response = queue_service_client.send_message("m")
logging.info(f"Print response form queune {response}")
except:
logging.info(f"Something goes wrong when pusing notify to queune")
#TODO use ErrorName
我尝试使用存储帐户密钥,它工作正常。DefaultAzureCredential也适用于TableServiceClient,但不适用于Queue。
1条答案
按热度按时间brccelvz1#
请确保为您的用户帐户分配了一个与存储队列相关的RBAC角色。必须根据您的要求为您的用户帐户分配一个或多个
Storage Queue Data Contributor
、Storage Queue Data Message Processor
、Storage Queue Data Message Sender
或Storage Queue Data Reader
角色。