【问题标题】:Get list of application packages available for a batch account of Azure Batch获取 Azure Batch 批处理帐户可用的应用程序包列表
【发布时间】:2020-02-20 20:04:58
【问题描述】:

我正在制作一个启动批处理的 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 var 的屏幕截图:

【问题讨论】:

  • 您如何确定返回的正文中没有任何内容?您应该注意响应是分页的,并且页面可能是空的,因此您需要确保跟随下一个链接。此外,您应该发布单个 get 操作的结果,以表明列表中实际上没有返回结果。 SDK 的版本也会有所帮助。
  • @brklein 我添加了您要求的信息。你觉得它是空的吗?
  • 列表看起来是空的。我更多的是寻找您认为应该列出的应用程序的获取请求,以确保列出的软件包/它们存在于正确的帐户中。如果您想公开 accountName/requestId,我也可以查看服务日志以验证行为。
  • @brklein 抱歉,我很忙。当然,我从哪里获得 requestId?
  • 是的,如果服务没有给出响应/返回身份验证错误,则应该会出错。您是否激活了您的应用程序包? docs.microsoft.com/en-us/rest/api/batchmanagement/…

标签: azure azure-batch


【解决方案1】:

这是你要找的链接吗:

希望这会有所帮助。

【讨论】:

  • 微软文档是我第一个看的地方(见我的帖子),但它不起作用
【解决方案2】:

我最近没有尝试使用 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-04
    • 2021-04-24
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多