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

Get list of application packages available for a batch account of 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版本是:

这是空 batchApps var 的屏幕截图:

这是您正在寻找的link吗:

希望这对您有所帮助。

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

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

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)