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.

Привет @Joanmok, спасибо за новости. Могу ли я узнать, являетесь ли вы владельцем подписки Azure, в которой создан ресурс Azure Synapse Analytics, или какая роль RBAC для подписки и область ресурса назначены для вашей учетной записи пользователя? Есть ли у вас разрешение на создание нового принципа службы (регистрация приложения) в Microsoft Entra (ранее Azure Active Directory) или у вас есть разрешение на добавление учетных данных для приложения? Эта информация может помочь выбрать метод создания нового подключения к службе ARM, используемого в задаче конвейера.

Alvin Zhao - MSFT 26.08.2024 08:25

Привет @Alvin Zhao, я не являюсь владельцем подписки Azure, но являюсь владельцем группы ресурсов. Я прошу владельца создать новый принцип обслуживания (регистрацию приложения) в Microsoft Entra и предоставить новому принципу обслуживания разрешение на аналитику Azure Synapse.

Joanmok 26.08.2024 10:39

Привет @Joanmok, спасибо за твои новости. Найдите мой последний ответ, который поможет вам вручную создать новое подключение к службе ARM. Надеюсь, это сработает и для вас и поможет решить ваш вопрос в этом посте. Оцените свои усилия.

Alvin Zhao - MSFT 26.08.2024 14:48
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
74
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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.

Привет, Элвин, спасибо за ответ. У меня есть два вопроса. 1. Необходимо ли создавать подключение к службе Azure Resource Manager для запуска конвейера в Azure Synapse? 2. Я не хочу писать сценарий Powershell внутри файла yaml. Как я могу сделать это отдельно, но включить в свой файл yaml? Большое спасибо.

Joanmok 23.08.2024 13:53

Соединение со службой ARM используется для хранения информации о субъекте службы (включая метод/информацию аутентификации, такую ​​как секрет клиента), чтобы задача AzurePowerShell могла запускаться Connect-AzAccount в самом начале сценария, что является обязательной командой, которую необходимо выполнить перед Invoke-AzSynapsePipeline и можно избежать утечки или истечения срока действия секрета, если вы используете аутентификацию федерации удостоверений рабочей нагрузки. Тем не менее, НЕТ. Нет необходимости использовать подключение к службе ARM или задачу AzurePowerShell, если вы можете добавить эту команду аутентификации в свой скрипт.

Alvin Zhao - MSFT 23.08.2024 14:07

По вашему второму вопросу, могу ли я предположить, что вы предпочитаете поместить файл сценария .ps1 в свой репозиторий и выполнить этот сценарий? Также можно использовать путь к скрипту вместо встроенного скрипта.

Alvin Zhao - MSFT 23.08.2024 14:10

Привет @Joanmok! Что касается фактических требований, то вы не хотите использовать подключение к службе ARM или сценарий наклона в определении конвейера YAML, не так ли? Или вы можете отредактировать исходное сообщение, указав детали? Я могу продолжить обновлять свой ответ.

Alvin Zhao - MSFT 23.08.2024 14:14

Привет @Alvin, я обновил свой пост с подробностями. Не могли бы вы помочь мне в этом? Я хотел бы выполнить настройку для подключения к службе, а также отдельный сценарий PowerShell для запуска конвейера в моей Azure Synpase через Azure DevOps.

Joanmok 23.08.2024 16:44

Привет, Элвин! Большое спасибо. Не могли бы вы также объяснить выпуск в Azure Devops? Почему нам нужно использовать выпуск в Azure DevOps вместо использования конвейера для последующего развертывания? Заранее спасибо.

Joanmok 26.08.2024 17:21

Привет @Joanmok, Могу ли я узнать, поможет ли мой обновленный ответ на использование команды Invoke-AzSynapsePipeline в файле сценария решить ваш запрос в этом посте? Пожалуйста, не объединяйте несколько вопросов в один, иначе эта тема может быть закрыта из-за отсутствия внимания. Пожалуйста, не стесняйтесь опубликовать новый запрос и воспользоваться мнениями экспертов нашего сообщества. Спасибо за ваш обмен.

Alvin Zhao - MSFT 27.08.2024 08:10

Привет @Alvin Zhao, это действительно помогло и помогло решить мой вопрос. Еще раз спасибо.

Joanmok 27.08.2024 10:46

Привет @Joanmok! Рад узнать, что проблема решена с твоей стороны.

Aguy 27.08.2024 11:17

@Joanmok, И вы можете подумать об этом , чтобы помочь другим с похожими проблемами. Большое спасибо за усилия!

Aguy 27.08.2024 11:17

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