Yaml-файл Azure DevOps для запуска конвейера в Azure Synapse Analytics

Я работаю над Azure DevOps и Azure Synapse Analytics. Прямо сейчас у меня возникла проблема с интеграцией Azure DevOps с Azure Synpase Analytics. Как я могу использовать файл yaml и Azure PowerShell в Azure DevOps вместе, чтобы активировать конвейер в Azure Synapse Analytics или как запустить конвейер в Azure Synapse через YAML-файл Azure DevOps?

обновление: не могли бы вы рассказать мне, как использовать подключение к службе и как реализовать сценарий PowerShell в Azure DevOps вместо использования сценария наклона в определении конвейера YAML.


74
1

Ответ:

Решено

Обновлять

На основании обсуждений и обновлений предположим, что у вас есть субъект-служба (регистрация приложения) и предоставлена ​​ему роль администратора Synapse в рабочей области Azure Synapse, как показано ниже.

Мы можем вручную создать новое подключение к службе Azure Resource Manager в Azure DevOps для задачи конвейера AzurePowerShell для проверки подлинности этого субъекта-службы с помощью проверки подлинности федерации удостоверений рабочей нагрузки, что позволяет избежать утечки секрета клиента или проблем, вызванных истечением его срока действия. Вот краткие шаги для справки.

  1. In Azure Portal. navigate to Microsoft Entra Id (formerly Azure Active Directory) -> App registrations -> Select the app for authentication -> Keep note of the Application (client) ID and Directory (tenant) ID;

  2. In Azure Portal, collect your Subscription ID and name; Go to the resource group where your Azure Synapse workspace resource locates -> As the resource group Owner, you should be able to assign the app with the Contributor role to the scope of this resource group (this RBAC role assignment is for ARM service connection validation; the permission may not be minimum but is the same role assignment during an automated ARM service connection creation);

  3. In Azure DevOps, browse to your Project Settings -> Pipelines -> Service connections -> New service connection -> Select the type of Azure Resource Manager -> Select Workload Identity federation (manual) -> Give a name for the ARM service connection;

  4. Keep note of the Issuer and Subject identifier -> Input the Subscription Id, Subscription Name, Service Principal Id and Tenant ID from step 1 & 2; you can save the new ARM service connection as a draft now and move on to next step;

  5. In Azure Portal again, Select the app -> Click on Certificates & secrets blade -> Click on Federated credentials tab -> Add credential -> Select Other issuer and Input the Issuer and Subject identifier from step 4;

  6. Go back to Azure DevOps ARM service connection draft to Finish setup -> Click on the Verify and save button;

В соответствии с требованием не использовать встроенный скрипт в определении конвейера YAML вы можете сначала добавить файл сценария .ps1 с примером команды ниже в свой репозиторий. В файле определения конвейера YAML Azure DevOps вы можете ссылаться на новое подключение к службе ARM по его имени в задаче конвейера AzurePowerShell и запускать файл сценария с помощью FilePath.

Invoke-AzSynapsePipeline.ps1

Invoke-AzSynapsePipeline -WorkspaceName "$env:MY_WORKSPACE" -PipelineName "$env:PIPELINE_NAME"

azure-pipeline.yml

variables:
  myWorkspace: azsynapsexxxxxx0
  pipelineName: Pipeline 1

pool:
  vmImage: windows-latest

steps:
- task: AzurePowerShell@5
  inputs:
    azureSubscription: 'ARMSvcCnnAzureSynapseResource0'
    ScriptType: 'FilePath'
    ScriptPath: 'Invoke-AzSynapsePipeline.ps1'
    azurePowerShellVersion: 'LatestVersion'
  env:
    MY_WORKSPACE: $(myWorkspace)
    PIPELINE_NAME: $(pipelineName)


В соответствии с этим документом о выполнении конвейера и триггерах — Фабрика данных Azure и Azure Synapse , вы можете протестировать запуск команды Invoke-AzSynapsePipeline Azure PowerShell в задаче конвейера AzurePowerShell@5 DevOps, чтобы запустить конвейер Azure Synapse.

Вот мой пример YAML-конвейера Azure DevOps для справки.

pool:
  vmImage: windows-latest

steps:
- task: AzurePowerShell@5
  inputs:
    azureSubscription: 'ARMSvcCnnWIFAutoSub1'
    ScriptType: 'InlineScript'
    Inline: |
      Invoke-AzSynapsePipeline -WorkspaceName $(myWorkspace) -PipelineName "Pipeline 1"
    azurePowerShellVersion: 'LatestVersion'

Если вы уже создали подключение к службе Azure Resource Manager в Azure DevOps, убедитесь, что его основной принцип службы, по которому проверяет подлинность конвейер Azure DevOps, предоставлен с достаточным разрешением для запуска конвейера Azure Synapse.