Azure Synapse Analytics 작업 영역에 대한 연속 통합 및 업데이트
CI(연속 통합)는 팀 멤버가 변경 사항을 버전 제어로 커밋할 때마다 코드 작성 및 테스트를 자동화하는 프로세스입니다. CD(지속적인 업데이트)는 여러 테스트 또는 스테이징 환경에서 프로덕션 환경으로 빌드, 테스트, 구성 및 배포하는 프로세스입니다.
Azure Synapse Analytics 작업 영역에서 CI/CD는 모든 엔터티를 한 환경(개발, 테스트, 프로덕션)에서 다른 환경으로 이동합니다. 작업 영역을 다른 작업 영역으로 승격하는 작업은 두 부분으로 구성된 프로세스입니다. 먼저 ARM 템플릿(Azure Resource Manager 템플릿)을 사용하여 작업 영역 리소스(풀 및 작업 영역)를 만들거나 업데이트합니다. 그런 다음, Azure DevOps 또는 GitHub에서 Synapse 작업 영역 배포 도구를 사용하여 SQL 스크립트 및 노트북, Spark 작업 정의, 파이프라인, 데이터 세트와 같은 아티팩트 및 다른 아티팩트를 마이그레이션합니다.
이 문서에서는 Azure DevOps 릴리스 파이프라인 및 GitHub Actions를 사용하여 Azure Synapse 작업 영역을 여러 환경에 배포하는 작업을 자동화하는 방법을 간략하게 설명합니다.
필수 조건
Azure Synapse 작업 영역을 여러 환경에 배포하는 작업을 자동화하려면 다음 필수 구성 요소 및 구성이 준비되어 있어야 합니다. 기본 설정 또는 기존 설정에 따라 Azure DevOps 또는 GitHub를 사용하도록 선택할 수 있습니다.
Azure DevOps
Azure DevOps를 사용하는 경우:
- 릴리스 파이프라인을 실행하도록 Azure DevOps 프로젝트를 준비합니다.
- 코드를 체크 인할 모든 사용자에게 조직 수준에서 기본 액세스 권한을 부여하여 리포지토리를 볼 수 있도록 합니다.
- Azure Synapse 리포지토리에 Owner 권한을 부여합니다.
- 자체 호스팅 Azure DevOps VM 에이전트를 만들었는지 확인하거나 Azure DevOps 호스팅된 에이전트를 사용합니다.
- 리소스 그룹에 대한 Azure Resource Manager 서비스 연결을 만들 수 있는 권한을 부여합니다.
- Microsoft Entra 관리자는 Azure DevOps 조직에 Azure DevOps Synapse 작업 영역 Deployment Agent 확장을 설치해야 합니다.
- 파이프라인을 실행할 기존 서비스 계정을 만들거나 지정합니다. 서비스 계정 대신 개인 액세스 토큰을 사용할 수 있지만 사용자 계정이 삭제된 후에는 파이프라인이 작동하지 않습니다.
GitHub
GitHub를 사용하는 경우:
- Azure Synapse 작업 영역 아티팩트 및 작업 영역 템플릿이 포함된 GitHub 리포지토리를 만듭니다.
- 자체 호스팅된 실행기를 만들었는지 확인하거나 GitHub 호스팅된 실행기를 사용합니다.
Microsoft Entra ID
- 서비스 주체를 사용하는 경우 Microsoft Entra ID에서 배포에 사용할 서비스 주체를 생성합니다.
- 관리 ID를 사용하는 경우, Azure의 VM에서 시스템이 할당한 관리 ID를 에이전트 또는 실행기로 사용하도록 설정하고 Azure Synapse Studio에 Synapse 관리자로 추가합니다.
- Microsoft Entra 관리자 역할을 사용하여 이러한 작업을 완료합니다.
Azure Synapse Analytics
참고 항목
이러한 필수 구성 요소는 동일한 파이프라인, ARM 템플릿 또는 Azure CLI를 사용하여 자동화하고 배포할 수 있지만 이 문서에는 이러한 프로세스가 설명되어 있지 않습니다.
개발에 사용되는 "원본" 작업 영역은 Azure Synapse Studio에서 Git 리포지토리로 구성되어야 합니다. 자세한 내용은 Azure Synapse Studio의 소스 제어를 참조하세요.
배포할 빈 작업 영역을 설정합니다.
- 새 Azure Synapse 작업 영역을 만듭니다.
- 서비스 주체에게 새 Synapse 작업 영역에 다음 권한을 부여합니다.
- Microsoft.Synapse/workspaces/integrationruntimes/write
- Microsoft.Synapse/workspaces/operationResults/read
- Microsoft.Synapse/workspaces/read
- 작업 영역에서 Git 리포지토리 연결을 구성하지 마세요.
- Azure Synapse 작업 영역에서 Studio>관리>액세스 제어로 이동합니다. “Synapse 아티팩트 게시자”를 서비스 주체에 할당합니다. 배포 파이프라인이 관리형 프라이빗 엔드포인트를 배포해야 하는 경우 대신 “Synapse 관리자”를 할당합니다.
- 연결 정보가 Azure Key Vault에 저장된 연결된 서비스를 사용하는 경우 다른 환경에 대해 별도의 키 자격 증명 모음을 유지하는 것이 좋습니다. 또한 각각의 키 자격 증명 모음에 대해 개별 권한 수준을 구성할 수도 있습니다. 예를 들어 팀 멤버에게 프로덕션 비밀에 대한 사용 권한을 부여하지 않을 수 있습니다. 이 접근 방식을 따를 경우 모든 단계에서 동일한 비밀 이름을 유지하는 것이 좋습니다. 동일한 비밀 이름을 유지하는 경우, 별도의 매개 변수인 키 자격 증명 모음 이름이 유일하게 변경되므로 CI/CD 환경에서 각 연결 문자열을 매개 변수화할 필요가 없습니다.
기타 필수 구성 요소
- Spark 풀 및 자체 호스팅 통합 런타임은 작업 영역 배포 작업에서 생성되지 않습니다. 자체 호스팅 통합 런타임을 사용하는 연결된 서비스가 있는 경우 새 작업 영역에서 수동으로 런타임을 만듭니다.
- 개발 작업 영역의 항목이 특정 풀에 연결된 경우, 매개 변수 파일에서 대상 작업 영역의 풀에 대해 동일한 이름을 만들거나 매개 변수화해야 합니다.
- 배포를 시도할 때 프로비전된 SQL 풀이 일시 중지되면 배포가 실패할 수 있습니다.
자세한 내용은 Azure Synapse Analytics의 CI CD 4부 - 릴리스 파이프라인를 참조하세요.
Azure DevOps에서 릴리스 파이프라인 설정
이 섹션에서는 Azure DevOps에서 Azure Synapse 작업 영역을 배포하는 방법을 알아봅니다.
Azure DevOps에서 릴리스에 대해 만든 프로젝트를 엽니다.
왼쪽 메뉴에서 파이프라인>릴리스를 선택합니다.
새 파이프라인을 선택합니다. 기존 파이프라인이 있으면 새로 만들기>새 릴리스 파이프라인을 선택합니다.
빈 작업 템플릿을 선택합니다.
스테이지 이름에 사용자 환경의 이름을 입력합니다.
아티팩트 추가를 선택한 다음 개발 환경에서 Azure Synapse Studio를 사용하여 구성된 Git 리포지토리를 선택합니다. 풀 및 작업 영역 ARM 템플릿을 관리하는 Git 리포지토리를 선택합니다. GitHub를 원본으로 사용하는 경우 GitHub 계정 및 풀 리포지토리에 대한 서비스 연결을 만듭니다. 자세한 내용은 서비스 연결을 참조하세요.
리소스 ARM 템플릿 분기를 선택합니다. 기본 버전의 경우 기본 분기에서 최신 버전을 선택합니다.
아티팩트 기본 분기의 경우 리포지 토리 게시 분기 또는 Synapse 아티팩트가 포함된 기타 게시되지 않은 분기를 선택합니다. 기본적으로 게시 분기는
workspace_publish
입니다. 기본 버전의 경우 기본 분기에서 최신 버전을 선택합니다.
리소스 생성 및 업데이트를 위한 ARM 템플릿의 스테이지 작업 설정
Azure Synapse 작업 영역, Spark 및 SQL 풀 또는 키 자격 증명 모음과 같은 리소스를 배포하는 ARM 템플릿이 있는 경우 해당 리소스를 만들거나 업데이트하는 Azure Resource Manager 배포 작업을 추가합니다.
단계 보기에서 단계 작업 보기를 선택합니다.
새 작업을 만듭니다. ARM 템플릿 배포를 검색한 후 추가를 선택합니다.
배포 작업 탭에서 작업 영역에 대한 구독, 리소스 그룹 및 위치를 선택합니다. 필요한 경우 자격 증명을 제공합니다.
작업에서 리소스 그룹 만들기 또는 업데이트를 선택합니다.
템플릿에서 줄임표 단추(...)를 선택합니다. 작업 영역의 ARM 템플릿으로 이동합니다.
템플릿 매개 변수에서 …를 선택하여 매개 변수 파일을 선택합니다.
템플릿 매개 변수 재정의에서 …를 선택한 다음 작업 영역에 사용할 매개 변수 값을 입력합니다.
배포 모드에서 증분을 선택합니다.
(선택 사항) 권한 부여 및 업데이트 작업 영역 역할 할당에 대해 Azure PowerShell을 추가합니다. 릴리스 파이프라인을 사용하여 Azure Synapse 작업 영역을 만드는 경우 파이프라인의 서비스 주체가 기본 작업 영역 관리자로 추가됩니다. PowerShell을 실행하여 다른 계정에 작업 영역에 대한 액세스 권한을 부여할 수 있습니다.
Warning
전체 배포 모드에서는 새 ARM 템플릿에 지정되지 않은 리소스 그룹의 리소스가 삭제됩니다. 자세한 내용은 Azure Resource Manager 배포 모드를 참조하세요.
Azure Synapse 아티팩트 배포에 대한 스테이지 작업 설정
Synapse 작업 영역 배포 확장을 사용하여 Azure Synapse 작업 영역에 다른 항목을 배포합니다. 배포할 수 있는 항목에는 데이터 세트, SQL 스크립트 및 Notebook, Spark 작업 정의, 통합 런타임, 데이터 흐름, 자격 증명 및 작업 영역의 기타 아티팩트가 포함됩니다.
배포 확장 설치 및 추가
Visual Studio Marketplace에서 확장을 검색하여 가져옵니다.
확장을 설치할 Azure DevOps 조직을 선택합니다.
Azure DevOps 파이프라인의 서비스 주체가 Subscription 권한이 부여되고 작업 영역의 Synapse 작업 영역 관리자로 할당되었는지 확인합니다.
새 작업을 만들려면 Synapse 작업 영역 배포를 검색한 다음 추가를 선택합니다.
배포 작업 구성
배포 태스크는 세 가지 유형의 작업을 지원하며, 유효성 검사만 하고, 배포하고, 유효성을 검사하고, 배포합니다.
참고 항목
이 작업 영역 배포 확장은 이전 버전과 호환되지 않습니다. 최신 버전이 설치되어 있고 사용되는지 확인하세요. Azure DevOps의 개요 및 GitHub 작업의 최신 버전에서 릴리스 정보를 읽을 수 있습니다.
유효성 검사는 작업을 사용하여 게시되지 않은 분기의 Synapse 아티팩트의 유효성을 검사하고 작업 영역 템플릿 및 매개 변수 템플릿 파일을 생성하는 것입니다. 유효성 검사 작업은 YAML 파이프라인에서만 작동합니다. 샘플 YAML 파일은 다음과 같습니다.
pool:
vmImage: ubuntu-latest
resources:
repositories:
- repository: <repository name>
type: git
name: <name>
ref: <user/collaboration branch>
steps:
- checkout: <name>
- task: Synapse workspace deployment@2
continueOnError: true
inputs:
operation: 'validate'
ArtifactsFolder: '$(System.DefaultWorkingDirectory)/ArtifactFolder'
TargetWorkspaceName: '<target workspace name>'
유효성 검사 및 배포 를 사용하여 아티팩트 루트 폴더를 사용하여 게시되지 않은 분기에서 작업 영역을 직접 배포할 수 있습니다.
참고 항목
작업 유형이 유효성 검사 또는 유효성 검사 및 배포로 선택된 경우 배포 작업은 이 엔드포인트 web.azuresynapse.net에서 종속성 JS 파일을 다운로드해야 합니다. VM에서 네트워크 정책이 사용하도록 설정된 경우 엔드포인트 web.azuresynapse.net이 허용되는지 확인하세요.
유효성 검사 및 배포 작업은 클래식 및 YAML 파이프라인 모두에서 작동합니다. 샘플 YAML 파일은 다음과 같습니다.
pool:
vmImage: ubuntu-latest
resources:
repositories:
- repository: <repository name>
type: git
name: <name>
ref: <user/collaboration branch>
steps:
- checkout: <name>
- task: Synapse workspace deployment@2
continueOnError: true
inputs:
operation: 'validateDeploy'
ArtifactsFolder: '$(System.DefaultWorkingDirectory)/ArtifactFolder'
TargetWorkspaceName: 'target workspace name'
azureSubscription: 'target Azure resource manager connection name'
ResourceGroupName: 'target workspace resource group'
DeleteArtifactsNotInTemplate: true
OverrideArmParameters: >
-key1 value1
-key2 value2
배포 작업 배포의 입력에는 작업 영역 게시 분기에 게시한 후 또는 유효성 검사 후에 만들 수 있는 Synapse 작업 영역 템플릿 및 매개 변수 템플릿이 포함됩니다. 버전 1.x와 동일합니다.
사용 사례에 따라 작업 유형을 선택할 수 있습니다. 다음 파트는 배포의 예제입니다.
작업에서 작업 유형을 배포로 선택합니다.
작업의 템플릿 옆에서 …를 선택하여 템플릿 파일을 선택합니다.
템플릿 매개 변수 옆에서 …를 선택하여 매개 변수 파일을 선택합니다.
작업 영역에 대한 연결, 리소스 그룹 및 이름을 선택합니다.
템플릿 매개 변수 재정의 옆에서 …를 선택합니다. 연결된 서비스에 사용되는 연결 문자열 및 계정 키를 포함하여 작업 영역에 사용할 매개 변수 값을 입력합니다. 자세한 정보는 Azure Synapse Analytics의 CI/CD를 참조하세요.
관리형 프라이빗 엔드포인트의 배포는 버전 2.x에서만 지원됩니다. 올바른 버전을 선택하고 템플릿에서 관리형 프라이빗 엔드포인트 배포를 확인합니다.
트리거를 관리하려면 트리거 토글을 사용하여 배포 전에 트리거를 중지할 수 있습니다. 또한 배포 작업 후에 트리거를 다시 시작하는 작업을 추가할 수도 있습니다.
Important
CI/CD 시나리오에서는 서로 다른 환경에서의 통합 런타임 형식이 동일해야 합니다. 예를 들어 개발 환경에 자체 호스팅 통합 런타임이 있는 경우 테스트 및 프로덕션과 같은 다른 환경에서 동일한 통합 런타임을 자체 호스트해야 합니다. 마찬가지로 여러 스테이지에서 통합 런타임을 공유하는 경우 개발, 테스트, 프로덕션과 같은 모든 환경에서 통합 런타임을 연결하고 자체 호스트해야 합니다.
배포용 릴리스 만들기
모든 변경 내용을 저장한 후 릴리스 만들기를 선택하여 수동으로 릴리스를 만들 수 있습니다. 릴리스 만들기를 자동화하는 방법을 알아보려면 Azure DevOps 릴리스 트리거를 참조하세요.
GitHub Actions에서 릴리스 설정
이 섹션에서는 Azure Synapse 작업 영역 배포에 GitHub Actions를 사용하여 GitHub 워크플로를 생성하는 방법을 설명합니다.
GitHub Action for Azure Resource Manager 템플릿을 사용하여 Azure에 작업 영역 및 컴퓨팅 풀에 대한 ARM 템플릿을 자동으로 배포할 수 있습니다.
워크플로 파일
리포지토리의 /.github/workflows/ 경로에 있는 YAML(.yml) 파일에서 GitHub Actions 워크플로를 정의합니다. 이 정의는 워크플로를 구성하는 다양한 단계와 매개 변수를 포함합니다.
.yml 파일에는 두 개의 섹션이 있습니다.
섹션 | 작업 |
---|---|
인증 | 1. 서비스 주체를 정의합니다. 2. GitHub 비밀을 만듭니다. |
Deploy | 작업 영역 아티팩트를 배포합니다. |
GitHub Actions 비밀 구성
GitHub Actions 비밀은 암호화된 환경 변수입니다. 이 리포지토리에 대한 Collaborator 권한이 있는 모든 사용자는 이러한 비밀을 사용하여 리포지토리에서 Actions와 상호 작용할 수 있습니다.
GitHub 리포지토리에서 설정 탭을 선택한 다음 비밀>새 리포지토리 비밀을 선택합니다.
배포에 서비스 주체를 사용하는 경우 클라이언트 ID에 대한 새 비밀을 추가하고 새 클라이언트 비밀을 추가합니다. 구독 ID 및 테넌트 ID를 비밀로 저장하도록 선택할 수도 있습니다.
워크플로 추가
GitHub 리포지토리에서 작업으로 이동합니다.
워크플로 직접 설정을 선택합니다.
워크플로 파일에서
on:
섹션 뒤에 있는 모든 항목을 삭제합니다. 예를 들어 나머지 워크플로는 다음 예제와 같습니다.name: CI on: push: branches: [ master ] pull_request: branches: [ master ]
워크플로 이름을 바꿉니다. Marketplace 탭에서 Synapse 작업 영역 배포 작업을 검색하여 추가합니다.
필요한 값 및 작업 영역 템플릿을 설정합니다.
name: workspace deployment on: push: branches: [ publish_branch ] jobs: release: # You also can use the self-hosted runners. runs-on: windows-latest steps: # Checks out your repository under $GITHUB_WORKSPACE, so your job can access it. - uses: actions/checkout@v2 - uses: azure/synapse-workspace-deployment@release-1.0 with: TargetWorkspaceName: 'target workspace name' TemplateFile: './path of the TemplateForWorkspace.json' ParametersFile: './path of the TemplateParametersForWorkspace.json' OverrideArmParameters: './path of the parameters.yaml' environment: 'Azure Public' resourceGroup: 'target workspace resource group' clientId: ${{secrets.CLIENTID}} clientSecret: ${{secrets.CLIENTSECRET}} subscriptionId: 'subscriptionId of the target workspace' tenantId: 'tenantId' DeleteArtifactsNotInTemplate: 'true' managedIdentity: 'False'
변경 내용을 커밋할 준비가 완료되었습니다. 커밋 시작을 선택하고 제목을 입력한 다음, 설명(선택 사항)을 추가합니다. 그런 다음 새 파일 커밋을 선택합니다.
파일은 리포지토리의 .github/workflows 폴더에 있습니다.
참고 항목
관리 ID는 Azure의 자체 호스팅 VM에서만 지원됩니다. 실행기를 자체 호스팅으로 설정해야 합니다. VM에 시스템 할당 관리 ID를 사용하도록 설정하고, Azure Synapse Studio에 Synapse 관리자로 추가합니다.
배포 검토
작업 영역 템플릿에서 사용자 지정 매개 변수 만들기
자동화된 CI/CD를 사용 중이고 배포 중에 일부 속성을 변경하려고 하지만 기본적으로 속성이 매개 변수화되지 않은 경우 기본 매개 변수 템플릿을 재정의할 수 있습니다.
기본 매개 변수 템플릿을 재정의하려면 Git 분기의 루트 폴더에 template-parameters-definition.json이라는 사용자 지정 매개 변수 템플릿을 만듭니다. 정확하게 이 파일 이름을 사용해야 합니다. Azure Synapse 작업 영역이 협업 분기에서 게시되거나 배포 태스크가 다른 분기의 아티팩트 유효성을 검사하는 경우 이 파일을 읽고 해당 구성을 사용하여 매개 변수를 생성합니다. Azure Synapse 작업 영역은 이 파일을 찾을 수 없는 경우 기본 매개 변수 템플릿을 사용합니다.
사용자 지정 매개 변수 구문
다음 지침을 사용하여 사용자 지정 매개 변수 파일을 만들 수 있습니다.
- 관련 엔터티 형식 아래에 속성 경로를 입력합니다.
- 속성 이름을
*
로 설정하면 해당 속성 아래의 모든 속성(재귀적이 아닌 첫 번째 수준만)을 매개 변수화합니다. 이 구성에 예외를 설정할 수 있습니다. - 문자열로 속성의 값을 설정하면 속성을 매개 변수화하려고 함을 나타냅니다.
<action>:<name>:<stype>
형식을 사용합니다.<action>
은 다음 문자 중 하나일 수 있습니다.=
는 현재 값을 매개 변수의 기본값으로 유지함을 의미합니다.-
는 매개 변수의 기본값을 유지하지 않음을 의미합니다.|
는 연결 문자열 또는 키와 관련한 Azure Key Vault의 비밀에 대한 특수 사례입니다.
<name>
은 매개 변수의 이름입니다. 비어 있는 경우 속성의 이름을 사용합니다. 값이-
문자로 시작하는 경우에는 이름이 짧아집니다. 예를 들어AzureStorage1_properties_typeProperties_connectionString
에서AzureStorage1_connectionString
으로 줄어듭니다.<stype>
은 매개 변수의 형식입니다.<stype>
이 비어 있는 경우 기본 형식은string
입니다. 지원되는 값은string
,securestring
,int
,bool
,object
,secureobject
,array
입니다.
- 파일에서 배열을 지정하면 템플릿의 일치하는 속성이 배열임을 나타냅니다. Azure Synapse는 지정된 정의를 사용하여 배열에서 모든 개체를 반복합니다. 두 번째 개체, 문자열은 각 반복에 대한 매개 변수의 이름으로 사용되는 속성의 이름이 됩니다.
- 정의는 리소스 인스턴스와 관련될 수 없습니다. 모든 정의는 해당 형식의 모든 리소스에 적용됩니다.
- 기본적으로 Key Vault 비밀과 같은 모든 보안 문자열과 연결 문자열, 키, 토큰 등의 보안 문자열은 매개 변수화됩니다.
매개 변수 템플릿 정의 예제
매개 변수 템플릿 정의의 예제는 다음과 같습니다.
{
"Microsoft.Synapse/workspaces/notebooks": {
"properties": {
"bigDataPool": {
"referenceName": "="
}
}
},
"Microsoft.Synapse/workspaces/sqlscripts": {
"properties": {
"content": {
"currentConnection": {
"*": "-"
}
}
}
},
"Microsoft.Synapse/workspaces/pipelines": {
"properties": {
"activities": [{
"typeProperties": {
"waitTimeInSeconds": "-::int",
"headers": "=::object",
"activities": [
{
"typeProperties": {
"url": "-:-webUrl:string"
}
}
]
}
}]
}
},
"Microsoft.Synapse/workspaces/integrationRuntimes": {
"properties": {
"typeProperties": {
"*": "="
}
}
},
"Microsoft.Synapse/workspaces/triggers": {
"properties": {
"typeProperties": {
"recurrence": {
"*": "=",
"interval": "=:triggerSuffix:int",
"frequency": "=:-freq"
},
"maxConcurrency": "="
}
}
},
"Microsoft.Synapse/workspaces/linkedServices": {
"*": {
"properties": {
"typeProperties": {
"accountName": "=",
"username": "=",
"connectionString": "|:-connectionString:secureString",
"secretAccessKey": "|"
}
}
},
"AzureDataLakeStore": {
"properties": {
"typeProperties": {
"dataLakeStoreUri": "="
}
}
},
"AzureKeyVault": {
"properties": {
"typeProperties": {
"baseUrl": "|:baseUrl:secureString"
},
"parameters": {
"KeyVaultURL": {
"type": "=",
"defaultValue": "|:defaultValue:secureString"
}
}
}
}
},
"Microsoft.Synapse/workspaces/datasets": {
"*": {
"properties": {
"typeProperties": {
"folderPath": "=",
"fileName": "="
}
}
}
},
"Microsoft.Synapse/workspaces/credentials" : {
"properties": {
"typeProperties": {
"resourceId": "="
}
}
}
}
다음은 리소스 종류별로 이전 템플릿이 구성되는 방식에 대한 설명입니다.
notebooks
properties/bigDataPool/referenceName
경로의 모든 속성은 해당 기본값을 사용하여 매개 변수화됩니다. 각 Notebook 파일에 대해 연결된 Spark 풀을 매개 변수화할 수 있습니다.
sqlscripts
properties/content/currentConnection
경로의poolName
및databaseName
속성은 템플릿에 기본값이 없는 문자열로 매개 변수화됩니다.
pipelines
activities/typeProperties/waitTimeInSeconds
경로에 있는 모든 속성은 매개 변수화됩니다.waitTimeInSeconds
라는 코드 수준 속성(예:Wait
작업)이 있는 파이프라인의 모든 작업은 기본 이름을 가진 숫자로 매개 변수화됩니다. 이 속성은 Resource Manager 템플릿에 기본값이 없습니다. 대신 Resource Manager를 배포하는 동안 속성이 필수 입력이 됩니다.headers
속성(예:Web
작업에서)은object
형식(Object)으로 매개 변수화됩니다.headers
속성은 원본 팩터리와 동일한 기본값을 갖습니다.
integrationRuntimes
typeProperties
경로에 있는 모든 속성은 해당 기본값을 사용하여 매개 변수화됩니다. 예를 들어IntegrationRuntimes
형식 속성에는computeProperties
및ssisProperties
의 두 가지 속성이 있습니다. 두 속성 유형 모두 해당 기본값과 유형(Object)으로 만들어집니다.
triggers
typeProperties
에서 두 속성은 매개 변수화됩니다.maxConcurrency
속성은 기본값이 있으며string
형식입니다.maxConcurrency
속성의 기본 매개 변수 이름은<entityName>_properties_typeProperties_maxConcurrency
입니다.recurrence
속성도 매개 변수화됩니다.recurrence
속성 아래의 모든 속성은 기본값 및 매개 변수 이름을 사용하여 문자열로 매개 변수화하도록 설정됩니다. 단,int
형식으로 매개 변수화되는interval
속성은 예외입니다. 매개 변수 이름에는<entityName>_properties_typeProperties_recurrence_triggerSuffix
가 접미사로 붙습니다. 마찬가지로freq
속성은 문자열이며 문자열로 매개 변수화됩니다. 그러나freq
속성은 기본값 없이 매개 변수화됩니다. 이름이 단축되고 접미사가 붙습니다(예:<entityName>_freq
).
참고 항목
현재 최대 50개의 트리거가 지원됩니다.
linkedServices
- 연결된 서비스는 고유합니다. 연결된 서비스 및 데이터 세트에는 다양한 형식이 있어 형식별로 사용자 지정할 수 있습니다. 위의 예제에서는
AzureDataLakeStore
형식의 모든 연결된 서비스에 대해 특정 템플릿이 적용됩니다. 다른 모든 템플릿(문자를 사용하여 식별됨)에*
다른 템플릿이 적용됩니다. connectionString
속성은securestring
값으로 매개 변수화됩니다. 기본값은 없습니다. 매개 변수 이름은 단축되고 접미사connectionString
이 붙습니다.secretAccessKey
속성은AzureKeyVaultSecret
값으로 매개 변수화됩니다(예: Amazon S3 연결된 서비스에서). 속성이 자동으로 Azure Key Vault 비밀로 매개 변수화되고 구성된 키 자격 증명 모음에서 페치됩니다. 키 자격 증명 모음 자체를 매개 변수화할 수도 있습니다.
datasets
- 데이터 세트의 형식을 사용자 지정할 수 있지만 명시적 *-level 구성은 필요하지 않습니다. 이전 예에서
typeProperties
아래의 모든 데이터 세트 속성은 매개 변수화됩니다.
CI/CD에 대한 모범 사례
Azure Synapse 작업 영역을 통해 Git 통합을 사용하고 개발에서 테스트, 프로덕션 순서로 변경 내용을 이동하는 CI/CD 파이프라인이 있는 경우 다음 모범 사례를 적용하는 것이 좋습니다.
- 개발 작업 영역만 Git와 통합합니다. Git 통합을 사용하는 경우 개발 Azure Synapse 작업 영역만 Git와 통합합니다. 테스트 및 프로덕션 작업 영역에 대한 변경 내용은 CI/CD를 통해 배포되므로 Git 통합이 필요하지 않습니다.
- 아티팩트를 마이그레이션하기 전에 풀을 준비합니다. 개발 작업 영역의 풀에 연결된 SQL 스크립트 또는 Notebook이 있는 경우 다른 환경의 풀에 동일한 이름을 사용합니다.
- 인프라의 버전 관리를 코드 시나리오로 동기화합니다. 기술 모델에서 인프라(네트워크, 가상 머신, 부하 분산 장치 및 연결 토폴로지)를 관리하려면 DevOps 팀이 소스 코드에 사용하는 것과 동일한 버전 관리를 사용합니다.
- Azure Data Factory 모범 사례를 검토합니다. Data Factory를 사용하는 경우 Data Factory 아티팩트 모범 사례를 참조하세요.
아티팩트 배포 문제 해결
Synapse 작업 영역 배포 작업을 사용하여 Synapse 아티팩트 배포
Azure Synapse에서는 Data Factory와 달리 아티팩트가 Resource Manager 리소스가 아닙니다. ARM 템플릿 배포 작업을 사용하여 Azure Synapse 아티팩트를 배포할 수 없습니다. 대신 Synapse 작업 영역 배포 작업을 사용하여 아티팩트를 배포하고 ARM 리소스(풀 및 작업 영역) 배포에 ARM 배포 작업을 사용합니다. 한편 이 작업은 리소스가 Microsoft.Synapse 형식인 Synapse 템플릿만 지원합니다. 또한 이 작업을 통해 사용자는 Synapse Studio에서 게시를 수동으로 클릭하지 않고도 모든 분기의 변경 내용을 자동으로 배포할 수 있습니다. 다음은 자주 발생하는 몇 가지 문제입니다.
1. 게시 실패: 작업 영역 arm 파일이 20MB를 초과합니다.
Git 공급자에는 파일 크기 제한이 있습니다. 예를 들어 Azure DevOps의 최대 파일 크기는 20Mb입니다. 작업 영역 템플릿 파일 크기가 20Mb를 초과하면 작업 영역 템플릿 파일이 생성되고 git에 동기화되는 Synapse Studio에서 변경 내용을 게시할 때 이 오류가 발생합니다. 이 문제를 해결하려면 유효성 검사 또는 유효성 검사 및 배포 작업과 함께 Synapse 배포 태스크를 사용하여 작업 영역 템플릿 파일을 Synapse Studio에서 수동으로 게시하지 않고도 파이프라인 에이전트에 직접 저장할 수 있습니다.
2. 릴리스의 예기치 않은 토큰 오류
매개 변수 파일에 이스케이프되지 않은 매개 변수 값이 있는 경우 릴리스 파이프라인은 파일을 구문 분석하지 못하고 unexpected token
오류를 생성합니다. 매개 변수를 재정의하거나 Key Vault를 사용하여 매개 변수 값을 검색하는 것이 좋습니다. 이중 이스케이프 문자를 사용하여 문제를 해결할 수도 있습니다.
3. 통합 런타임 배포 실패
관리형 가상 네트워크 사용 작업 영역에서 생성된 작업 영역 템플릿이 있고 일반 작업 영역에 배포하거나 그 반대로 배포하려고 하면 이 오류가 발생합니다.
4. 값을 구문 분석하는 동안 예기치 않은 문자 발생
템플릿 파일을 구문 분석할 수 없습니다. 백 슬래시를 이스케이프하여 시도합니다(예: \\Test01\Test).
5. 작업 영역 정보를 페치하지 못함, 찾을 수 없음
대상 작업 영역 정보가 올바르게 구성되지 않았습니다. 만든 서비스 연결의 범위가 작업 영역이 있는 리소스 그룹으로 범위가 지정되어 있는지 확인합니다.
6. 아티팩트 삭제 실패
확장은 게시 분기에 있는 아티팩트와 템플릿을 비교하고 차이점에 따라 아티팩트를 삭제합니다. 게시 분기에 있는 아티팩트를 삭제하려고 하지 않고 다른 아티팩트에서 참조 또는 종속성이 있는지 확인합니다.
7. 오류로 배포 실패: json 위치 0
템플릿을 수동으로 업데이트하려고 하면 이 오류가 발생합니다. 템플릿을 수동으로 편집하지 않았는지 확인합니다.
8. 잘못된 참조로 인해 문서를 만들거나 업데이트하지 못했습니다.
Synapse의 아티팩트가 다른 아티팩트에서 참조될 수 있습니다. 아티팩트에서 참조되는 특성을 매개 변수화한 경우 올바른 값과 null이 아닌 값을 제공해야 합니다.
9. Notebook 배포에서 배포 상태를 가져오지 못했습니다.
배포하려는 Notebook은 작업 영역 템플릿 파일의 Spark 풀에 연결되어 있지만 배포에서는 풀이 대상 작업 영역에 존재하지 않습니다. 풀 이름을 매개 변수화하지 않으면 환경 간에 풀의 이름이 같은지 확인합니다.