Share via


Azure Synapse Analytics çalışma alanı için sürekli tümleştirme ve teslim

Sürekli tümleştirme (CI), bir ekip üyesi sürüm denetimine bir değişiklik işlediği her seferde kodun derlemesini ve testini otomatikleştirme işlemidir. Sürekli teslim (CD), birden çok test veya hazırlama ortamından üretim ortamına derleme, test etme, yapılandırma ve dağıtma işlemidir.

Azure Synapse Analytics çalışma alanında CI/CD tüm varlıkları bir ortamdan (geliştirme, test, üretim) başka bir ortama taşır. Çalışma alanınızı başka bir çalışma alanına yükseltme, iki aşamadan oluşan bir işlemdir. İlk olarak, çalışma alanı kaynaklarını (havuzlar ve çalışma alanı) oluşturmak veya güncelleştirmek için bir Azure Resource Manager şablonu (ARM şablonu) kullanın. Ardından Azure DevOps'ta veya GitHub'da Synapse Çalışma Alanı Dağıtım araçlarını kullanarak SQL betikleri ve not defterleri, Spark iş tanımları, işlem hatları, veri kümeleri ve diğer yapıtlar gibi yapıtları geçirin.

Bu makalede, Azure Synapse çalışma alanının birden çok ortam için dağıtımını otomatikleştirmek için Azure DevOps yayın işlem hattının ve GitHub Actions'ın nasıl kullanılacağı özetlenmiştir.

Önkoşullar

Azure Synapse çalışma alanının birden çok ortam için dağıtımını otomatikleştirmek için aşağıdaki önkoşulların ve yapılandırmaların geçerli olması gerekir.

Azure DevOps

GitHub

  • Azure Synapse çalışma alanı yapıtlarını ve çalışma alanı şablonunu içeren bir GitHub deposu oluşturun.
  • Şirket içinde barındırılan bir çalıştırıcı oluşturduğunuzdan veya GitHub'da barındırılan bir çalıştırıcı kullandığınızdan emin olun.

Microsoft Entra ID

  • Hizmet sorumlusu kullanıyorsanız, Microsoft Entra Id'de dağıtım için kullanılacak bir hizmet sorumlusu oluşturun.
  • Yönetilen kimlik kullanıyorsanız Azure'daki VM'nizde aracı veya çalıştırıcı olarak sistem tarafından atanan yönetilen kimliği etkinleştirin ve ardından Synapse yöneticisi olarak Azure Synapse Studio'ya ekleyin.
  • Bu eylemleri tamamlamak için Microsoft Entra yönetici rolünü kullanın.

Azure Synapse Analytics

Not

Aynı işlem hattını, ARM şablonunu veya Azure CLI'yı kullanarak bu önkoşulları otomatikleştirebilir ve dağıtabilirsiniz, ancak bu işlemler bu makalede açıklanmamıştır.

  • Geliştirme için kullanılan "kaynak" çalışma alanının Azure Synapse Studio'daki bir Git deposuyla yapılandırılması gerekir. Daha fazla bilgi için bkz . Azure Synapse Studio'da kaynak denetimi.

  • Dağıtılacak boş bir çalışma alanı ayarlayın:

    1. Yeni bir Azure Synapse çalışma alanı oluşturun.
    2. Hizmet sorumlusuna yeni Synapse çalışma alanı için aşağıdaki izinleri verin:
      • Microsoft.Synapse/workspaces/integrationruntimes/write
      • Microsoft.Synapse/workspaces/operationResults/read
      • Microsoft.Synapse/workspaces/read
    3. Çalışma alanında Git deposu bağlantısını yapılandırmayın.
    4. Azure Synapse çalışma alanında Studio>Erişim Denetimini Yönet'e> gidin. 4. Azure Synapse çalışma alanında Studio > Erişim Denetimini Yönet'e > gidin. Hizmet sorumlusuna "Synapse Artifact Publisher" atayın. Dağıtım işlem hattının yönetilen özel uç noktaları dağıtması gerekiyorsa bunun yerine "Synapse Yönetici istrator" atayın.
    5. Bağlantı bilgileri Azure Key Vault'ta depolanan bağlı hizmetleri kullandığınızda, farklı ortamlar için ayrı anahtar kasaları bulundurmanız önerilir. Ayrıca her anahtar kasası için ayrı izin düzeyleri yapılandırabilirsiniz. Örneğin, ekip üyelerinizin üretim gizli dizileri için izinleri olmasını istemeyebilirsiniz. Bu yaklaşımı izlerseniz, tüm aşamalarda aynı gizli dizi adlarını tutmanızı öneririz. Aynı gizli dizi adlarını saklarsanız, ci/CD ortamlarında her bağlantı dizesi parametrelemeniz gerekmez çünkü değişen tek şey anahtar kasası adıdır ve bu da ayrı bir parametredir.

Diğer önkoşullar

  • Spark havuzları ve şirket içinde barındırılan tümleştirme çalışma zamanları bir çalışma alanı dağıtım görevinde oluşturulmaz. Şirket içinde barındırılan tümleştirme çalışma zamanı kullanan bağlı bir hizmetiniz varsa, çalışma zamanını yeni çalışma alanında el ile oluşturun.
  • Geliştirme çalışma alanındaki öğeler belirli havuzlarla ekliyse, parametre dosyasındaki hedef çalışma alanındaki havuzlar için aynı adları oluşturduğunuzdan veya parametreleştirdiğinizden emin olun.
  • Dağıtım yapmaya çalıştığınızda sağlanan SQL havuzlarınız duraklatılırsa dağıtım başarısız olabilir.

Daha fazla bilgi için bkz . Azure Synapse Analytics Bölüm 4 - Yayın işlem hattında CI/CD.

Azure DevOps'ta yayın işlem hattı ayarlama

Bu bölümde, Azure DevOps'ta Azure Synapse çalışma alanı dağıtmayı öğreneceksiniz.

  1. Azure DevOps'ta, sürüm için oluşturduğunuz projeyi açın.

  2. Sol menüde İşlem Hatları Yayınları'nı> seçin.

    Screenshot that shows selecting Pipelines and then Releases on the Azure DevOps menu.

  3. Yeni işlem hattı'ni seçin. Mevcut işlem hatlarınız varsa Yeni Yeni>yayın işlem hattı'yı seçin.

  4. Boş iş şablonunu seçin.

    Screenshot that shows selecting the Empty job template.

  5. Aşama adı alanına ortamınızın adını girin.

  6. Yapıt ekle'yi ve ardından geliştirme ortamınızda Azure Synapse Studio ile yapılandırılan Git deposunu seçin. Havuzlarınızı ve çalışma alanı ARM şablonunuzu yönettiğiniz Git deposunu seçin. Kaynak olarak GitHub kullanıyorsanız GitHub hesabınız için bir hizmet bağlantısı oluşturun ve depoları çekin. Daha fazla bilgi için bkz . hizmet bağlantıları.

    Screenshot that shows selecting GitHub to add a publish branch for a new artifact.

  7. Kaynak ARM şablonu dalını seçin. Varsayılan sürüm için varsayılan daldan en son'ı seçin.

    Screenshot that shows setting the resource ARM template branch.

  8. Yapıtlar Varsayılan dal için Depo yayımlama dalını veya Synapse yapıtlarını içeren diğer yayımlama olmayan dalları seçin. Yayımlama dalı varsayılan olarak şeklindedir workspace_publish. Varsayılan sürüm için varsayılan daldan en son'ı seçin.

    Screenshot that shows setting the artifacts branch.

Arm şablonunun kaynak oluşturması ve güncelleştirmesi için aşama görevi ayarlama

Azure Synapse çalışma alanı, Spark ve SQL havuzu veya anahtar kasası gibi bir kaynak dağıtan bir ARM şablonunuz varsa, bu kaynakları oluşturmak veya güncelleştirmek için bir Azure Resource Manager dağıtım görevi ekleyin:

  1. Aşama görünümünde Aşama görevlerini görüntüle'yi seçin.

    Screenshot that shows setting the stage view.

  2. Yeni bir görev oluşturun. ARM Şablonu Dağıtımı için arama yapın ve Ekle'yi seçin.

  3. Dağıtım Görevleri sekmesinde çalışma alanının aboneliğini, kaynak grubunu ve konumunu seçin. Gerekirse kimlik bilgilerini sağlayın.

  4. Eylem için Kaynak grubu oluştur veya güncelleştir'i seçin.

  5. Şablon için üç nokta düğmesini (...) seçin. Çalışma alanının ARM şablonuna gidin.

  6. Şablon parametreleri için parametre dosyasını seçmek için ... öğesini seçin.

    Screenshot that shows the: workspace and pools deploy.

  7. Şablon parametrelerini geçersiz kıl için ... öğesini seçin ve çalışma alanı için kullanmak istediğiniz parametre değerlerini girin.

  8. Dağıtım modu için Artımlı'yı seçin.

  9. (İsteğe bağlı) İzin için Azure PowerShell ekleyin ve çalışma alanı rol atamasını güncelleştirin. Azure Synapse çalışma alanı oluşturmak için yayın işlem hattı kullanırsanız, işlem hattının hizmet sorumlusu varsayılan çalışma alanı yöneticisi olarak eklenir. Diğer hesaplara çalışma alanına erişim vermek için PowerShell'i çalıştırabilirsiniz.

    Screenshot that demonstrates running a PowerShell script to grant permissions.

Uyarı

Tam dağıtım modunda, kaynak grubundaki yeni ARM şablonunda belirtilmeyen kaynaklar silinir. Daha fazla bilgi için bkz . Azure Resource Manager dağıtım modları.

Azure Synapse yapıtları dağıtımı için aşama görevi ayarlama

Azure Synapse çalışma alanınızdaki diğer öğeleri dağıtmak için Synapse çalışma alanı dağıtım uzantısını kullanın. Dağıtabileceğiniz öğeler arasında veri kümeleri, SQL betikleri ve not defterleri, spark iş tanımları, tümleştirme çalışma zamanı, veri akışı, kimlik bilgileri ve çalışma alanındaki diğer yapıtlar bulunur.

Dağıtım uzantısını yükleme ve ekleme

  1. Visual Studio Market'ten uzantıyı arayın ve alın.

    Screenshot that shows the Synapse workspace deployment extension as it appears in Visual Studio Marketplace.

  2. Uzantıyı yüklemek istediğiniz Azure DevOps kuruluşunu seçin.

    Screenshot that shows selecting an organization in which to install the Synapse workspace deployment extension.

  3. Azure DevOps işlem hattının hizmet sorumlusuna Abonelik izni verildiğinden ve çalışma alanı için Synapse çalışma alanı yöneticisi olarak atandığından emin olun.

  4. Yeni bir görev oluşturmak için Synapse çalışma alanı dağıtımı için arama yapın ve Ekle'yi seçin.

    Screenshot that shows searching for Synapse workspace deployment to create a task.

Dağıtım görevini yapılandırma

Dağıtım görevi 3 tür işlemi destekler; yalnızca doğrulama, dağıtma ve doğrulama ve dağıtma.

Not

içindeki bu çalışma alanı dağıtım uzantısı geriye dönük olarak uyumlu değil. Lütfen en son sürümün yüklendiğinden ve kullanıldığından emin olun. Sürüm notunu Azure DevOps'a genel bakışbölümünde ve GitHub eylemindeki en son sürümde okuyabilirsiniz.

Doğrulama , yayımlama olmayan daldaki Synapse yapıtlarını görevle doğrulamak ve çalışma alanı şablonu ile parametre şablonu dosyasını oluşturmaktır. Doğrulama işlemi yalnızca YAML işlem hattında çalışır. Örnek YAML dosyası aşağıdaki gibidir:

   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>'    

Doğrulama ve dağıtma , çalışma alanını yayımlama olmayan daldan yapıt kök klasörüyle doğrudan dağıtmak için kullanılabilir.

Not

dağıtım görevinin, işlem türü Doğrula veya Doğrula ve dağıt olarak seçildiğinde bu uç noktadan web.azuresynapse.net bağımlılık JS dosyalarını indirmesi gerekir. Sanal makinede ağ ilkeleri etkinleştirildiyse lütfen uç nokta web.azuresynapse.net izin verildiğinden emin olun.

Doğrulama ve dağıtma işlemi hem klasik hem de YAML işlem hattında çalışır. Örnek YAML dosyası aşağıdaki gibidir:

   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

Dağıtma dağıtım işleminin girişleri Synapse çalışma alanı şablonunu ve parametre şablonunu içerir. Bu şablon, çalışma alanı yayımlama dalında yayımlandıktan sonra veya doğrulamadan sonra oluşturulabilir. 1.x sürümüyle aynıdır.

Kullanım örneğine göre işlem türlerini seçebilirsiniz. Aşağıdaki bölümde dağıtıma bir örnek verilmiştir.

  1. Görevde, işlem türünü Dağıt olarak seçin.

    Screenshot that shows the selection of operation deploy.

  2. Görevdeki Şablon'un yanındaki ... öğesini seçerek şablon dosyasını seçin.

  3. Parametre dosyasını seçmek için Şablon parametreleri'nin yanındaki ... öğesini seçin.

  4. Çalışma alanı için bir bağlantı, kaynak grubu ve ad seçin.

  5. Şablon parametrelerini geçersiz kıl'ın yanındaki ... öğesini seçin. Bağlı hizmetlerinizde kullanılan bağlantı dizesi ve hesap anahtarları dahil olmak üzere çalışma alanı için kullanmak istediğiniz parametre değerlerini girin. Daha fazla bilgi için bkz . Azure Synapse Analytics'te CI/CD.

    Screenshot that shows setting up the Synapse deployment task for the workspace.

  6. Yönetilen özel uç noktanın dağıtımı yalnızca sürüm 2.x'te desteklenir. Lütfen doğru sürümü seçtiğinizden emin olun ve Yönetilen özel uç noktaları şablonda dağıt seçeneğini işaretleyin.

    Screenshot that shows selecting version 2.x to deploy private endpoints with synapse deployment task.

  7. Tetikleyicileri yönetmek için tetikleyici iki durumlu düğmesini kullanarak dağıtımdan önce tetikleyicileri durdurabilirsiniz. Ayrıca, dağıtım görevinden sonra tetikleyicileri yeniden başlatmak için bir görev de ekleyebilirsiniz.

    Screenshot that shows managing triggers before and after deployment.

Önemli

CI/CD senaryolarında, farklı ortamlardaki tümleştirme çalışma zamanı türü aynı olmalıdır. Örneğin, geliştirme ortamında şirket içinde barındırılan bir tümleştirme çalışma zamanına sahipseniz, aynı tümleştirme çalışma zamanının test ve üretim gibi diğer ortamlarda şirket içinde barındırılması gerekir. Benzer şekilde, tümleştirme çalışma zamanlarını birden çok aşamada paylaşıyorsanız, tümleştirme çalışma zamanlarının geliştirme, test ve üretim gibi tüm ortamlarda bağlanması ve şirket içinde barındırılması gerekir.

Dağıtım için sürüm oluşturma

Tüm değişiklikleri kaydettikten sonra, sürümü el ile oluşturmak için Yayın oluştur'u seçebilirsiniz. Yayın oluşturmayı otomatikleştirmeyi öğrenmek için bkz . Azure DevOps yayın tetikleyicileri.

Screenshot that shows the New release pipeline pane, with Create release highlighted.

GitHub Actions'ta yayın ayarlama

Bu bölümde, Azure Synapse çalışma alanı dağıtımı için GitHub Actions'ı kullanarak GitHub iş akışları oluşturmayı öğreneceksiniz.

Çalışma alanı ve işlem havuzları için Arm şablonunu Azure'a dağıtma işlemini otomatikleştirmek için Azure Resource Manager için GitHub Actions şablonunu kullanabilirsiniz.

İş akışı dosyası

Deponuzdaki /.github/workflows/ yolundaki bir YAML (.yml) dosyasında GitHub Actions iş akışı tanımlayın. Tanım, iş akışını oluşturan çeşitli adımları ve parametreleri içerir.

.yml dosyasının iki bölümü vardır:

Bölüm Görevler
Kimlik Doğrulaması 1. Hizmet sorumlusu tanımlayın.
2. GitHub gizli dizisi oluşturun.
Dağıtma Çalışma alanı yapıtlarını dağıtın.

GitHub Actions gizli dizilerini yapılandırma

GitHub Actions gizli dizileri şifrelenmiş ortam değişkenleridir. Bu depoda Ortak Çalışan izni olan herkes bu gizli dizileri kullanarak depodaki Eylemler ile etkileşimde bulunabilir.

  1. GitHub deposunda Ayarlar sekmesini ve ardından Gizli Diziler>Yeni depo gizli dizisi'ni seçin.

    Screenshot that shows the GitHub elements to select to create a new repository secret.

  2. İstemci kimliği için yeni bir gizli dizi ekleyin ve dağıtım için hizmet sorumlusunu kullanıyorsanız yeni bir istemci gizli dizisi ekleyin. Ayrıca abonelik kimliğini ve kiracı kimliğini gizli dizi olarak kaydetmeyi de seçebilirsiniz.

İş akışınızı ekleme

GitHub deponuzda Eylemler'e gidin.

  1. İş akışınızı kendiniz ayarlayın'ı seçin.

  2. İş akışı dosyasında, bölümünden on: sonraki her şeyi silin. Örneğin, kalan iş akışınız şu örnekteki gibi görünebilir:

    name: CI
    
    on:
    push:
        branches: [ master ]
    pull_request:
        branches: [ master ]
    
  3. İş akışınızı yeniden adlandırın. Market sekmesinde Synapse çalışma alanı dağıtım eylemini arayın ve eylemi ekleyin.

    Screenshot that shows searching for the Synapse workspace deployment task on the Marketplace tab.

  4. Gerekli değerleri ve çalışma alanı şablonunu ayarlayın:

    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'
    
  5. Değişikliklerinizi işlemeye hazırsınız. İşlemeyi başlat'ı seçin, başlığı girin ve ardından bir açıklama ekleyin (isteğe bağlı). Ardından Yeni dosya işle'yi seçin.

    Screenshot that shows committing the workflow in GitHub.

    Dosya, deponuzdaki .github/workflows klasöründe görünür.

    Not

    Yönetilen kimlik yalnızca Azure'da şirket içinde barındırılan VM'lerde desteklenir. Çalıştırıcıyı şirket içinde barındırılan olarak ayarladığınızdan emin olun. VM'niz için sistem tarafından atanan yönetilen kimliği etkinleştirin ve Synapse yöneticisi olarak Azure Synapse Studio'ya ekleyin.

Dağıtımınızı gözden geçirme

  1. GitHub deponuzda Eylemler'e gidin.

  2. İş akışınızın çalıştırmasının ayrıntılı günlüklerini görmek için ilk sonucu açın:

    Screenshot that shows selecting the workspace deployment log in the repository Actions in GitHub.

Çalışma alanı şablonunda özel parametreler oluşturma

Otomatik CI/CD kullanıyorsanız ve dağıtım sırasında bazı özellikleri değiştirmek istiyorsanız, ancak özellikler varsayılan olarak parametrelenmemişse, varsayılan parametre şablonunu geçersiz kılabilirsiniz.

Varsayılan parametre şablonunu geçersiz kılmak için Git dalınızın kök klasöründe template-parameters-definition.json adlı özel bir parametre şablonu oluşturun. Tam olarak bu dosya adını kullanmanız gerekir. Azure Synapse çalışma alanı işbirliği dalından yayımlandığında veya dağıtım görevi diğer dallardaki yapıtları doğruladığında, bu dosyayı okur ve parametrelerini oluşturmak için yapılandırmasını kullanır. Azure Synapse çalışma alanı bu dosyayı bulamazsa varsayılan parametre şablonunu kullanır.

Özel parametre söz dizimi

Özel parametre dosyası oluşturmak için aşağıdaki yönergeleri kullanabilirsiniz:

  • İlgili varlık türünün altına özellik yolunu girin.
  • Özellik adını olarak * ayarlamak, özelliğin altındaki tüm özellikleri parametreleştirmek istediğinizi gösterir (özyinelemeli olarak değil, yalnızca ilk düzeye kadar). Bu yapılandırmaya özel durumlar ayarlayabilirsiniz.
  • Bir özelliğin değerini dize olarak ayarlamak, özelliği parametreleştirmek istediğinizi gösterir. <action>:<name>:<stype> biçimini kullanın.
    • <action> şu karakterlerden biri olabilir:
      • = , geçerli değeri parametre için varsayılan değer olarak tutma anlamına gelir.
      • - parametresi için varsayılan değeri tutmama anlamına gelir.
      • |bağlantı dizesi veya anahtarlar için Azure Key Vault'tan gizli diziler için özel bir durumdur.
    • <name> parametresinin adıdır. Boşsa, özelliğin adını alır. Değer bir - karakterle başlıyorsa, ad kısaltılır. Örneğin, AzureStorage1_properties_typeProperties_connectionString olarak kısaltılır AzureStorage1_connectionString.
    • <stype> parametrenin türüdür. Boşsa <stype> , varsayılan tür olur string. Desteklenen değerler: , , , , , objectsecureobject ve array. boolintsecurestringstring
  • Dosyada bir dizi belirtilmesi, şablondaki eşleşen özelliğin bir dizi olduğunu gösterir. Azure Synapse, belirtilen tanımı kullanarak dizideki tüm nesneler arasında yineleme gerçekleştirir. İkinci nesne olan dize, her yineleme için parametrenin adı olarak kullanılan özelliğin adı olur.
  • Tanım bir kaynak örneğine özgü olamaz. Herhangi bir tanım, o türe ait tüm kaynaklar için geçerlidir.
  • Varsayılan olarak, tüm güvenli dizeler (Key Vault gizli dizileri gibi) ve güvenli dizeler (bağlantı dizesi, anahtarlar ve belirteçler gibi) parametrelendirilir.

Parametre şablonu tanımı örneği

Parametre şablonu tanımının nasıl göründüğüne bir örnek aşağıda verilmişti:

{
    "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": "="
            }
        }
    }
}

Yukarıdaki şablonun kaynak türüne göre nasıl yapıldığını gösteren bir açıklama aşağıdadır.

notebooks

  • Yoldaki properties/bigDataPool/referenceName herhangi bir özellik, varsayılan değeriyle parametrelendirilir. Her not defteri dosyası için ekli Spark havuzunu parametreleştirebilirsiniz.

sqlscripts

  • properties/content/currentConnection Yolda, hem hem de poolName özellikleri şablonda databaseName varsayılan değerler olmadan dizeler olarak parametrelendirilir.

pipelines

  • Yoldaki activities/typeProperties/waitTimeInSeconds herhangi bir özellik parametreleştirilir. adlı waitTimeInSeconds kod düzeyi özelliğine (örneğin, etkinlik) sahip bir işlem hattındaki Wait herhangi bir etkinlik, varsayılan adla bir sayı olarak parametrelendirilir. Özelliğin Resource Manager şablonunda varsayılan değeri olmaz. Bunun yerine, Resource Manager dağıtımı sırasında özelliğine giriş yapılması gerekir.
  • headers özelliği (örneğin, bir Web etkinlikte) türüyle object parametreleştirilir (Nesne). özelliği, headers kaynak fabrikayla aynı değere sahip varsayılan bir değere sahiptir.

integrationRuntimes

  • Yoldaki typeProperties tüm özellikler, ilgili varsayılan değerleriyle parametrelendirilir. Örneğin, tür özellikleri altında IntegrationRuntimes iki özellik vardır: computeProperties ve ssisProperties. Her iki özellik türü de ilgili varsayılan değerleri ve türleriyle (Object) oluşturulur.

triggers

  • altında typePropertiesiki özellik parametreleştirilir:

    • maxConcurrency özelliği varsayılan bir değere sahiptir ve türüdürstring. Özelliğinin maxConcurrency varsayılan parametre adıdır <entityName>_properties_typeProperties_maxConcurrency.
    • Özelliği recurrence de parametreli hale getirilir. özelliği altındaki recurrence tüm özellikler, varsayılan değerler ve parametre adları ile dizeler olarak parametrelendirilecek şekilde ayarlanır. Özel durum interval , tür olarak int parametreleştirilmiş özelliğidir. Parametre adı ile <entityName>_properties_typeProperties_recurrence_triggerSuffixson eklenmiştir. Benzer şekilde, freq özelliği bir dizedir ve dize olarak parametreleştirilir. Ancak, freq özelliği varsayılan değer olmadan parametreleştirilir. Ad kısaltılır ve gibi <entityName>_freqson eklenmiştir.

    Not

    Şu anda en fazla 50 tetikleyici desteklenmektedir.

linkedServices

  • Bağlı hizmetler benzersizdir. Bağlı hizmetler ve veri kümeleri çok çeşitli türlere sahip olduğundan, türe özgü özelleştirme sağlayabilirsiniz. Yukarıdaki örnekte, türündeki AzureDataLakeStore tüm bağlı hizmetler için belirli bir şablon uygulanır. Diğer tüm kullanıcılar için (karakterin * kullanımıyla tanımlanır), farklı bir şablon uygulanır.
  • connectionString özelliği bir securestring değer olarak parametrelendirilir. Varsayılan değere sahip değildir. Parametre adı kısaltılır ve ile connectionStringsoneki eklenir.
  • secretAccessKey özelliği bir AzureKeyVaultSecret değer olarak parametrelendirilir (örneğin, Amazon S3 bağlı hizmetinde). özelliği, Azure Key Vault gizli dizisi olarak otomatik olarak parametrelendirilir ve yapılandırılan anahtar kasasından getirilir. Anahtar kasasının kendisini de parametreleştirebilirsiniz.

datasets

  • Veri kümelerindeki türleri özelleştirebilmenize rağmen, açık *düzey yapılandırma gerekmez. Yukarıdaki örnekte altındaki tüm veri kümesi özellikleri typeProperties parametreleştirilmiştir.

CI/CD için en iyi yöntemler

Azure Synapse çalışma alanınızla Git tümleştirmesi kullanıyorsanız ve değişikliklerinizi geliştirme aşamasından teste ve ardından üretim aşamasına taşıyan bir CI/CD işlem hattınız varsa şu en iyi yöntemleri öneririz:

  • Git ile yalnızca geliştirme çalışma alanını tümleştirin. Git tümleştirmesi kullanıyorsanız yalnızca geliştirme Azure Synapse çalışma alanınızı Git ile tümleştirin. Test ve üretim çalışma alanlarında yapılan değişiklikler CI/CD aracılığıyla dağıtılır ve Git tümleştirmesine gerek yoktur.
  • Yapıtları geçirmeden önce havuzları hazırlayın. Geliştirme çalışma alanındaki havuzlara eklenmiş bir SQL betiğiniz veya not defteriniz varsa, farklı ortamlardaki havuzlar için aynı adı kullanın.
  • Kod senaryoları olarak altyapıda sürüm oluşturma işlemini eşitleyin. Açıklayıcı bir modelde altyapıyı (ağlar, sanal makineler, yük dengeleyiciler ve bağlantı topolojisi) yönetmek için DevOps ekibinin kaynak kodu için kullandığı sürüm oluşturmayı kullanın.
  • Azure Data Factory en iyi yöntemlerini gözden geçirin. Data Factory kullanıyorsanız Data Factory yapıtları için en iyi yöntemlere bakın.

Yapıt dağıtımı sorunlarını giderme

Synapse yapıtlarını dağıtmak için Synapse çalışma alanı dağıtım görevini kullanma

Azure Synapse'de, Data Factory'nin aksine yapıtlar Resource Manager kaynakları değildir. Azure Synapse yapıtlarını dağıtmak için ARM şablonu dağıtım görevini kullanamazsınız. Bunun yerine yapıtları dağıtmak için Synapse çalışma alanı dağıtım görevini kullanın ve ARM kaynakları (havuzlar ve çalışma alanı) dağıtımı için ARM dağıtım görevini kullanın. Bu arada bu görev yalnızca kaynakların Microsoft.Synapse türüne sahip olduğu Synapse şablonlarını destekler. Bu görevle, kullanıcılar Synapse Studio'da yayımlamaya el ile tıklamadan değişiklikleri herhangi bir daldan otomatik olarak dağıtabilir. Aşağıda sık karşılaşılan bazı sorunlar yer alır.

1. Yayımlama başarısız oldu: çalışma alanı arm dosyası 20 MB'tan fazla

Git sağlayıcısında dosya boyutu sınırlaması vardır, örneğin Azure DevOps’ta dosya boyutu üst sınırı 20 Mb’tır. Çalışma alanı şablonu dosya boyutu 20 Mb'ı aştığında, çalışma alanı şablon dosyasının oluşturulduğu ve git ile eşitlendiği Synapse Studio'da değişiklikleri yayımladığınızda bu hata oluşur. Sorunu çözmek için Synapse dağıtım görevini doğrulama veya doğrulama ve dağıtma işlemiyle kullanarak çalışma alanı şablon dosyasını doğrudan işlem hattı aracısına kaydedebilir ve synapse studio'da el ile yayımlamadan kaydedebilirsiniz.

2. Sürümde beklenmeyen belirteç hatası

Parametre dosyanızda kaçış olmayan parametre değerleri varsa, yayın işlem hattı dosyayı ayrıştıramaz ve bir unexpected token hata oluşturur. Parametre değerlerini almak için parametreleri geçersiz kılmanızı veya Key Vault kullanmanızı öneririz. Sorunu çözmek için çift kaçış karakterleri de kullanabilirsiniz.

3. Tümleştirme çalışma zamanı dağıtımı başarısız oldu

Yönetilen sanal ağ özellikli bir çalışma alanından oluşturulan çalışma alanı şablonunuz varsa ve normal bir çalışma alanına dağıtmaya çalışıyorsanız (veya tam tersi) bu hata oluşur.

4. Değer ayrıştırılırken beklenmeyen karakterle karşılaşıldı

Şablon, şablon dosyası ayrıştırılamaz. Ters eğik çizgilerden kaçarak deneyin, örneğin. \\Test01\Test

5. Çalışma alanı bilgileri getirilemedi, Bulunamadı

Hedef çalışma alanı bilgileri doğru yapılandırılmamış. Oluşturduğunuz hizmet bağlantısının kapsamının çalışma alanını içeren kaynak grubuyla belirlenmiş olduğundan emin olun.

6. Yapıt silinemedi

Uzantı, yayımlama dalında bulunan yapıtları şablonla karşılaştırır ve farka bağlı olarak bunları siler. Lütfen yayımlama dalında bulunan yapıtları silmeye çalışmadığınızdan ve diğer yapıtların bir başvurusu veya bağımlılığı olduğundan emin olun.

8. Dağıtım şu hatayla başarısız oldu: json konumu 0

Şablonu el ile güncelleştirmeye çalışıyorsanız bu hata oluşabilir. Lütfen şablonu el ile düzenlemediğinizden emin olun.

9. Geçersiz başvuru nedeniyle belge oluşturulamadı veya güncelleştirilemedi

Synapse'teki yapıta başka bir yapıt tarafından başvurulabilir. Yapıtta başvurulan bir özniteliği parametreleştirdiyseniz, lütfen yapıta doğru ve null olmayan bir değer sağladığınıza emin olun

10. Not defteri dağıtımında dağıtım durumu getirilemedi

Dağıtmaya çalıştığınız not defteri çalışma alanı şablon dosyasındaki spark havuzuna eklenirken dağıtımda havuz hedef çalışma alanında yok. Havuz adını parametreleştirmezseniz, ortamlar arasındaki havuzlar için aynı ada sahip olduğunuzdan emin olun.