Я пытаюсь создать конвейеры Azure Data Factory через Python, используя пример, предоставленный Microsoft здесь:
https://docs.microsoft.com/en-us/azure/data-factory/quickstart-create-data-factory-python
def main():
# Azure subscription ID
subscription_id = '<Specify your Azure Subscription ID>'
# This program creates this resource group. If it's an existing resource group, comment out the code that creates the resource group
rg_name = 'ADFTutorialResourceGroup'
# The data factory name. It must be globally unique.
df_name = '<Specify a name for the data factory. It must be globally unique>'
# Specify your Active Directory client ID, client secret, and tenant ID
credentials = ServicePrincipalCredentials(client_id='<Active Directory application/client ID>', secret='<client secret>', tenant='<Active Directory tenant ID>')
resource_client = ResourceManagementClient(credentials, subscription_id)
adf_client = DataFactoryManagementClient(credentials, subscription_id)
rg_params = {'location':'eastus'}
df_params = {'location':'eastus'}
Однако я не могу передать учетные данные каккак показано выше, так как вход в систему Azure выполняется как отдельный шаг ранее в конвейере, оставляя мне аутентифицированный сеанс для Azure (никакие другие учетные данные не могут быть переданы в этот скрипт).
Перед тем, как запустить код Python длясоздавая конвейер, я делаю "az login" через конвейер развертывания Jenkins, который дает мне аутентифицированный сеанс azurerm.Я должен быть в состоянии повторно использовать этот сеанс в скрипте Python для получения клиента фабрики данных, без повторной аутентификации.
Однако я не уверен, как изменить часть кода для создания клиента, так какне похоже, чтобы были какие-либо примеры, которые используют уже установленный сеанс azurerm:
adf_client = DataFactoryManagementClient(credentials, subscription_id)
rg_params = {'location':'eastus'}
df_params = {'location':'eastus'}
#Create a data factory
df_resource = Factory(location='eastus')
df = adf_client.factories.create_or_update(rg_name, df_name, df_resource)
print_item(df)
while df.provisioning_state != 'Succeeded':
df = adf_client.factories.get(rg_name, df_name)
time.sleep(1)
Документация по аутентификации Microsoft предлагает мне пройти аутентификацию с использованием ранее установленного сеанса следующим образом:
from azure.common.client_factory import get_client_from_cli_profile
from azure.mgmt.compute import ComputeManagementClient
client = get_client_from_cli_profile(ComputeManagementClient)
(ref: https://docs.microsoft.com/en-us/python/azure/python-sdk-azure-authenticate?view=azure-python)
Это работает, однако создание экземпляра объекта фабрики данных Azure завершается неудачно с:
Traceback (most recent call last):
File "post-scripts/check-data-factory.py", line 72, in <module>
main()
File "post-scripts/check-data-factory.py", line 65, in main
df = adf_client.factories.create_or_update(rg_name, data_factory_name, df_resource)
AttributeError: 'ComputeManagementClient' object has no attribute 'factories'
Так что, возможно, для этого требуются дополнительные шаги между получением и получением dfобъект?
Любая подсказка приветствуется!