获取可用于Azure Batch批处理帐户的应用程序包的列表

时间:2019-06-11 03:25:52

标签: azure azure-batch

我正在制作一个启动批处理的python应用程序。 我想通过用户输入来创建一个池。 为简单起见,我只将批处理帐户中存在的所有应用程序添加到池中。 我无法获得可用应用程序包的列表。 这是代码的一部分:

import azure.batch.batch_service_client as batch
from azure.common.credentials import ServicePrincipalCredentials

credentials = ServicePrincipalCredentials(
    client_id='xxxxx',
    secret='xxxxx',
    tenant='xxxx',
    resource="https://batch.core.windows.net/"
)
batch_client = batch.BatchServiceClient(
    credentials,
    base_url=self.AppData['CloudSettings'][0]['BatchAccountURL'])
# Get list of applications
batchApps = batch_client.application.list()

我可以创建一个池,因此凭据很好,并且有应用程序,但是返回的列表为空。 有人可以帮我吗?

谢谢你, 圭多

更新

我尝试过:

import azure.batch.batch_service_client as batch

batchApps = batch.ApplicationOperations.list(batch_client)

import azure.batch.operations as batch_operations

batchApps = batch_operations.ApplicationOperations.list(batch_client)

但是它们似乎不起作用。 batchApps始终为空。 我认为这不是身份验证问题,因为否则我会收到错误消息。 此时,我想知道这是否只是python SDK中的错误?

我使用的SDK版本是:

  • azure.batch:4.1.3

  • 天蓝色:4.0.0

这是空的batchApps变量的屏幕截图:

enter image description here

2 个答案:

答案 0 :(得分:1)

这是您正在寻找的链接:

希望这会有所帮助。

答案 1 :(得分:0)

我最近没有尝试使用Azure Python SDK,但是解决此问题的方法是使用Azure REST API: https://docs.microsoft.com/en-us/rest/api/batchservice/application/list

为了获得授权,我必须创建一个应用程序并授予其访问批处理服务的权限,然后我通过以下请求以编程方式生成令牌:

data = {'grant_type': 'client_credentials',
    'client_id': clientId,
    'client_secret': clientSecret,
    'resource': 'https://batch.core.windows.net/'}

postReply = requests.post('https://login.microsoftonline.com/' + tenantId + '/oauth2/token', data)