如何使用Azure进行身份验证,以便使用python行为运行数据工厂管道测试?

时间:2020-10-02 11:09:48

标签: python azure-data-factory python-behave

我在Azure数据工厂上有一个管道,我想编写一个使用python行为的测试。现在,我只想在本地运行测试。由于我没有进行任何身份验证,因此以下命令现在不会运行。

get_client_from_cli_profile(DataFactoryManagementClient)

错误消息说我需要运行“ az登录”来设置帐户。

knack.util.CLIError: Please run 'az login' to setup account.

有人可以举一个例子说明我该怎么做吗?

功能

Feature: Run pipeline
    Scenario: Get pipeline
        Given we get the pipeline

步骤

@given('we get the pipeline')
def get_pipeline(context):
    pipeline_name = "xxx"
    resource_group = "yyy"
    data_factory = "zzz"
    parameters={}
    pipeline = get_datafactory_pipeline(pipeline_name, resource_group, data_factory, parameters)

获取管道的代码

from azure.common.client_factory import get_client_from_cli_profile
from azure.mgmt.datafactory import DataFactoryManagementClient

def get_datafactory_pipeline(pipeline_name, resource_group, data_factory, parameters):
    return get_client_from_cli_profile(DataFactoryManagementClient().pipelines.create_run(
        resource_group_name = resource_group,
        factory_name = data_factory,
        pipeline_name = pipeline_name,
        parameters = parameters)

1 个答案:

答案 0 :(得分:1)

两种方式:

1。安装Azure CLI,然后az login访问Azure。(下载链接:https://docs.microsoft.com/en-us/cli/azure/install-azure-cli

enter image description here

2。无需安装Azure CLI,而是像这样更改代码:

def get_datafactory_pipeline(subscription_id,credentials,pipeline_name, resource_group, data_factory, parameters):
    return DataFactoryManagementClient(credentials,subscription_id).pipelines.create_run(
        resource_group_name=resource_group,
        factory_name=data_factory,
        pipeline_name=pipeline_name,
        parameters=parameters)

和您的步骤如下:

@given('we get the pipeline')
def get_pipeline(context):
    subscription_id = '<Specify your Azure Subscription ID>'
    credentials = ServicePrincipalCredentials(client_id='<Active Directory application/client ID>', secret='<client secret>', tenant='<Active Directory tenant ID>')
    pipeline_name = "xxx"
    resource_group = "yyy"
    data_factory = "zzz"
    parameters={}
    pipeline = get_datafactory_pipeline(subscription_id,credentials,pipeline_name, resource_group, data_factory, parameters)