Пакет Azure: серверу не удалось аутентифицировать запрос при попытке создать пул с помощью Python SDk

Он работает, когда я пытаюсь создать пул в определенной подсети виртуальной сети с помощью пользовательского интерфейса портала Azure, и я могу получить доступ к другим виртуальным машинам в той же подсети с этих вычислительных узлов. Но если я попытаюсь сделать то же самое, используя Python SDK, вот так:

new_pool = batch.models.PoolAddParameter(
            id=pool_id,
            virtual_machine_configuration=batch_models.VirtualMachineConfiguration(
                image_reference=image_ref_to_use,
                node_agent_sku_id=sku_to_use),
            vm_size=constants._POOL_VM_SIZE,
            target_dedicated_nodes=constants._POOL_NODE_COUNT,
            max_tasks_per_node=2,
            task_scheduling_policy=batch.models.TaskSchedulingPolicy(
                node_fill_type=batch.models.ComputeNodeFillType.pack),
            start_task=batch.models.StartTask(
                command_line=azure_helper.wrap_commands_in_shell('linux', task_commands),
                user_identity=batch_models.UserIdentity(auto_user=user),
                wait_for_success=True,
                resource_files=self.application_files),
            network_configuration=batch_models.NetworkConfiguration(subnet_id=constants.AZURE_BATCH_SUBNET_ID),
        )

        try:
            self.batch_client.pool.add(new_pool)
        except batch_models.batch_error.BatchErrorException as err:
            print_exception()
            raise

это дает мне azure.batch.models.batch_error.BatchErrorException: {'lang': u'en-US', 'value': u'Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.\nRequestId:xxxxxxxxxxxxxxxxxxxxxxx\nTime:2018-02-01T15:36:25.5107368Z'}

Если я не укажу network_configuration Параметр при создании пула работает с Python SDK. Мой идентификатор подсети имеет вид /subscriptions/xxxxxxxxxxxxxxxx/resourceGroups/xxxxx-compute/providers/Microsoft.Network/virtualNetworks/xxxxx-compute-vnet/subnets/default

Может кто-нибудь указать мне, почему это может произойти? Создание пулов вручную затруднительно, поскольку мне нужно добавить множество URL-адресов файлов ресурсов.

Спасибо!

1 ответ

Для объединения вычислительного пула с виртуальной сетью требуется проверка подлинности с помощью Azure Active Directory. Пожалуйста, смотрите эту статью для получения дополнительной информации. Требование AAD указано в разделе предварительных требований этой статьи. Пожалуйста, ознакомьтесь с этой статьей полностью, так как она подчеркивает другие важные требования и ограничения при объединении пула с виртуальной сетью.

Вы можете увидеть пример аутентификации с помощью AAD с помощью Python SDK здесь.

Другие вопросы по тегам