Resource Manager şablonuyla özel parametreler kullanma

UYGULANANLAR: Azure Data Factory Azure Synapse Analytics

Bahşiş

Kuruluşlar için hepsi bir arada analiz çözümü olan Microsoft Fabric'te Data Factory'yi deneyin. Microsoft Fabric , veri taşımadan veri bilimine, gerçek zamanlı analize, iş zekasına ve raporlamaya kadar her şeyi kapsar. Yeni bir deneme sürümünü ücretsiz olarak başlatmayı öğrenin!

Geliştirme örneğinizin ilişkili bir Git deposu varsa, şablonu yayımlayarak veya dışarı aktararak oluşturulan Resource Manager şablonunun varsayılan Resource Manager şablon parametrelerini geçersiz kılabilirsiniz. Bu senaryolarda varsayılan Resource Manager parametre yapılandırmasını geçersiz kılmak isteyebilirsiniz:

  • Otomatik CI/CD kullanıyorsunuz ve Resource Manager dağıtımı sırasında bazı özellikleri değiştirmek istiyorsunuz, ancak özellikler varsayılan olarak parametrelendirilmiyor.

  • Fabrikanız o kadar büyük ki varsayılan Resource Manager şablonu izin verilen en fazla parametreden (256) fazla olduğundan geçersiz.

    Özel parametre 256 sınırını işlemek için üç seçenek vardır:

    • Özel parametre dosyasını kullanın ve parametreleştirme gerektirmeyen, yani varsayılan değeri koruyabilen ve dolayısıyla parametre sayısını azaltabilen özellikleri kaldırın.
    • Parametreleri azaltmak için veri akışındaki mantığı yeniden düzenleme, örneğin işlem hattı parametrelerinin tümü aynı değere sahiptir, bunun yerine yalnızca genel parametreleri kullanabilirsiniz.
    • Bir veri fabrikasını birden çok veri fabrikasına bölün.

Varsayılan Resource Manager parametre yapılandırmasını geçersiz kılmak için Yönet hub'ına gidin ve "Kaynak denetimi" bölümünde ARM şablonu'nu seçin. ARM parametre yapılandırması bölümünde, Resource Manager parametre yapılandırma kodu düzenleyicisini açmak için "Parametre yapılandırmasını düzenle" bölümündeki Düzenle simgesine tıklayın.

Manage custom parameters

Dekont

ARM parametresi yapılandırması yalnızca "GIT modunda" etkinleştirilir. Şu anda "canlı mod" veya "Data Factory" modunda devre dışı bırakılmıştır.

Özel resource manager parametre yapılandırması oluşturmak, git dalınızın kök klasöründe arm-template-parameters-definition.json adlı bir dosya oluşturur. Tam olarak bu dosya adını kullanmanız gerekir.

Custom parameters file

İşbirliği dalından yayımlarken Data Factory bu dosyayı okur ve hangi özelliklerin parametreleştirileceğini oluşturmak için yapılandırmasını kullanır. Hiçbir dosya bulunmazsa, varsayılan şablon kullanılır.

Bir Resource Manager şablonunu dışarı aktarırken Data Factory bu dosyayı işbirliği dalından değil, üzerinde çalıştığınız daldan okur. Dosyayı özel bir daldan oluşturabilir veya düzenleyebilirsiniz. Burada kullanıcı arabiriminde ARM Şablonunu Dışarı Aktar'ı seçerek değişikliklerinizi test edebilirsiniz. Daha sonra dosyayı işbirliği dalı ile birleştirebilirsiniz.

Dekont

Özel Resource Manager parametre yapılandırması, ARM şablonu parametre sınırı olan 256'yi değiştirmez. Parametreli özelliklerin sayısını seçmenize ve azaltmanıza olanak tanır.

Özel parametre söz dizimi

Arm-template-parameters-definition.json özel parametre dosyasını oluştururken izleyebileceğiniz bazı yönergeler aşağıdadır. Dosya her varlık türü için bir bölümden oluşur: tetikleyici, işlem hattı, bağlı hizmet, veri kümesi, tümleştirme çalışma zamanı ve veri akışı.

  • İlgili varlık türünün altına özellik yolunu girin.
  • Özellik adını olarak * ayarlamak, altındaki tüm özellikleri parametreleştirmek istediğinizi gösterir (özyinelemeli olarak değil, yalnızca ilk düzeye kadar). Ayrıca bu yapılandırmaya özel durumlar da sağlayabilirsiniz.
  • 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
  • Tanım dosyasında bir dizi belirtilmesi, şablondaki eşleşen özelliğin bir dizi olduğunu gösterir. Data Factory, dizinin tümleştirme çalışma zamanı nesnesinde 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, Key Vault gizli dizileri gibi tüm güvenli dizeler ve bağlantı dizesi, anahtarlar ve belirteçler gibi güvenli dizeler parametrelendirilir.

Örnek parametreleştirme şablonu

Aşağıda Resource Manager parametre yapılandırmasının nasıl görünebileceğine bir örnek verilmiştır. İşlem hattı içindeki iç içe etkinliklerin parametreleştirilmesi ve bağlı hizmet parametresinin defaultValue değerinin değiştirilmesi dahil olmak üzere bir dizi olası kullanım örneği içerir.

{
    "Microsoft.DataFactory/factories/pipelines": {
        "properties": {
            "activities": [{
                "typeProperties": {
                    "waitTimeInSeconds": "-::int",
                    "headers": "=::object",
                    "activities": [
                        {
                            "typeProperties": {
                                "url": "-:-webUrl:string"
                            }
                        }
                    ]
                }
            }]
        }
    },
    "Microsoft.DataFactory/factories/integrationRuntimes": {
        "properties": {
            "typeProperties": {
                "*": "="
            }
        }
    },
    "Microsoft.DataFactory/factories/triggers": {
        "properties": {
            "typeProperties": {
                "recurrence": {
                    "*": "=",
                    "interval": "=:triggerSuffix:int",
                    "frequency": "=:-freq"
                },
                "maxConcurrency": "="
            }
        }
    },
    "Microsoft.DataFactory/factories/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.DataFactory/factories/datasets": {
        "*": {
            "properties": {
                "typeProperties": {
                    "folderPath": "=",
                    "fileName": "="
                }
            }
        }
    },
    "Microsoft.DataFactory/factories/credentials" : {
        "properties": {
            "typeProperties": {
                "resourceId": "="
            }
        }
    }
}

Yukarıdaki şablonun kaynak türüne göre ayrılmış şekilde nasıl oluşturduğunu gösteren bir açıklama aşağıdadır.

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. Ancak Resource Manager şablonunda varsayılan değer yoktur. Resource Manager dağıtımı sırasında zorunlu bir giriş olacaktır.
  • Benzer şekilde, adlı headers bir özellik (örneğin, bir Web etkinlikte) türü object (JObject) ile parametreleştirilir. Kaynak fabrikayla aynı değer olan varsayılan bir değere sahiptir.

IntegrationRuntimes

  • Yol typeProperties altındaki tüm özellikler, ilgili varsayılan değerleriyle parametrelendirilir. Örneğin, tür özelliklerinin 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.

Tetikleyiciler

  • altında typePropertiesiki özellik parametreleştirilir. İlki, maxConcurrencyvarsayılan bir değere sahip olacak şekilde belirtilen ve türünde stringolan şeklindedir. Varsayılan parametre adına <entityName>_properties_typeProperties_maxConcurrencysahiptir.
  • Özelliği recurrence de parametreli hale getirilir. Bunun altında, bu düzeydeki tüm özellikler, varsayılan değerler ve parametre adları ile dize olarak parametrelendirilecek şekilde belirtilir. Özel durum interval , türü intolarak parametreleştirilen ö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ılmış ve son eklenmiştir. Örneğin, <entityName>_freq.

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. Bu örnekte, türündeki AzureDataLakeStoretüm bağlı hizmetler için belirli bir şablon uygulanır. Diğer tüm kullanıcılar için (aracılığıyla *) farklı bir şablon uygulanır.
  • connectionString özelliği bir securestring değer olarak parametrelendirilir. Varsayılan değere sahip olmayacaktır. ile connectionStringsoneki olan kısaltılmış bir parametre adı olacaktır.
  • özelliği secretAccessKey bir AzureKeyVaultSecret (örneğin, bir Amazon S3 bağlı hizmetinde) olur. 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.

Veri Kümeleri

  • Türe özgü özelleştirme veri kümeleri için kullanılabilir olsa da, *düzey bir yapılandırmaya açıkça sahip olmadan yapılandırma sağlayabilirsiniz. Yukarıdaki örnekte altındaki tüm veri kümesi özellikleri typeProperties parametreleştirilmiştir.

Dekont

Azure uyarıları ve matrisleri bir işlem hattı için yapılandırılmışsa şu anda ARM dağıtımları için parametre olarak desteklenmemektedir. Uyarıları ve matrisleri yeni ortamda yeniden uygulamak için lütfen Data Factory İzleme, Uyarılar ve Matrisler'i izleyin .

Varsayılan parametreleştirme şablonu

Geçerli varsayılan parametreleştirme şablonu aşağıdadır. Yalnızca birkaç parametre eklemeniz gerekiyorsa, bu şablonu doğrudan düzenlemek iyi bir fikir olabilir çünkü mevcut parametreleştirme yapısını kaybetmezsiniz.

{
    "Microsoft.DataFactory/factories": {
        "properties": {
            "globalParameters": {
                "*": {
                    "value": "="
                }
            }
        },
        "location": "="
    },
    "Microsoft.DataFactory/factories/globalparameters": {
        "properties": {
                "*": { 
                    "value": "=" 
                }
        }
    },
    "Microsoft.DataFactory/factories/pipelines": {
    },
    "Microsoft.DataFactory/factories/dataflows": {
    },
    "Microsoft.DataFactory/factories/integrationRuntimes":{
        "properties": {
            "typeProperties": {
                "ssisProperties": {
                    "catalogInfo": {
                        "catalogServerEndpoint": "=",
                        "catalogAdminUserName": "=",
                        "catalogAdminPassword": {
                            "value": "-::secureString"
                        }
                    },
                    "customSetupScriptProperties": {
                        "sasToken": {
                            "value": "-::secureString"
                        }
                    }
                },
                "linkedInfo": {
                    "key": {
                        "value": "-::secureString"
                    },
                    "resourceId": "="
                },
                "computeProperties": {
                    "dataFlowProperties": {
                        "externalComputeInfo": [{
                                "accessToken": "-::secureString"
                            }
                        ]
                    }
                }
            }
        }
    },
    "Microsoft.DataFactory/factories/triggers": {
        "properties": {
            "pipelines": [{
                    "parameters": {
                        "*": "="
                    }
                }
            ],
            "pipeline": {
                "parameters": {
                    "*": "="
                }
            },
            "typeProperties": {
                "scope": "="
            }
        }
    },
    "Microsoft.DataFactory/factories/linkedServices": {
        "*": {
            "properties": {
                "typeProperties": {
                    "accountName": "=",
                    "username": "=",
                    "userName": "=",
                    "accessKeyId": "=",
                    "servicePrincipalId": "=",
                    "userId": "=",
                    "host": "=",
                    "clientId": "=",
                    "clusterUserName": "=",
                    "clusterSshUserName": "=",
                    "hostSubscriptionId": "=",
                    "clusterResourceGroup": "=",
                    "subscriptionId": "=",
                    "resourceGroupName": "=",
                    "tenant": "=",
                    "dataLakeStoreUri": "=",
                    "baseUrl": "=",
                    "database": "=",
                    "serviceEndpoint": "=",
                    "batchUri": "=",
                    "poolName": "=",
                    "databaseName": "=",
                    "systemNumber": "=",
                    "server": "=",
                    "url":"=",
                    "functionAppUrl":"=",
                    "environmentUrl": "=",
                    "aadResourceId": "=",
                    "sasUri": "|:-sasUri:secureString",
                    "sasToken": "|",
                    "connectionString": "|:-connectionString:secureString",
                    "hostKeyFingerprint": "="
                }
            }
        },
        "Odbc": {
            "properties": {
                "typeProperties": {
                    "userName": "=",
                    "connectionString": {
                        "secretName": "="
                    }
                }
            }
        }
    },
    "Microsoft.DataFactory/factories/datasets": {
        "*": {
            "properties": {
                "typeProperties": {
                    "folderPath": "=",
                    "fileName": "="
                }
            }
        }
    },
    "Microsoft.DataFactory/factories/managedVirtualNetworks/managedPrivateEndpoints": {
        "properties": {
            "*": "="
        }
    }
}

Örnek: Mevcut bir Azure Databricks etkileşimli küme kimliğini parametreleştirme

Aşağıdaki örnekte, varsayılan parametreleştirme şablonuna tek bir değerin nasıl ekleneceği gösterilmektedir. Parametreler dosyasına yalnızca Databricks bağlı hizmeti için mevcut bir Azure Databricks etkileşimli küme kimliği eklemek istiyoruz. Bu dosyanın, özellikler alanının Microsoft.DataFactory/factories/linkedServicesaltına eklenmesi existingClusterId dışında önceki dosyayla aynı olduğunu unutmayın.

{
    "Microsoft.DataFactory/factories": {
        "properties": {
            "globalParameters": {
                "*": {
                    "value": "="
                }
            }
        },
        "location": "="
    },
    "Microsoft.DataFactory/factories/pipelines": {
    },
    "Microsoft.DataFactory/factories/dataflows": {
    },
    "Microsoft.DataFactory/factories/integrationRuntimes":{
        "properties": {
            "typeProperties": {
                "ssisProperties": {
                    "catalogInfo": {
                        "catalogServerEndpoint": "=",
                        "catalogAdminUserName": "=",
                        "catalogAdminPassword": {
                            "value": "-::secureString"
                        }
                    },
                    "customSetupScriptProperties": {
                        "sasToken": {
                            "value": "-::secureString"
                        }
                    }
                },
                "linkedInfo": {
                    "key": {
                        "value": "-::secureString"
                    },
                    "resourceId": "="
                }
            }
        }
    },
    "Microsoft.DataFactory/factories/triggers": {
        "properties": {
            "pipelines": [{
                    "parameters": {
                        "*": "="
                    }
                }
            ],
            "pipeline": {
                "parameters": {
                    "*": "="
                }
            },
            "typeProperties": {
                "scope": "="
            }
 
        }
    },
    "Microsoft.DataFactory/factories/linkedServices": {
        "*": {
            "properties": {
                "typeProperties": {
                    "accountName": "=",
                    "username": "=",
                    "userName": "=",
                    "accessKeyId": "=",
                    "servicePrincipalId": "=",
                    "userId": "=",
                    "clientId": "=",
                    "clusterUserName": "=",
                    "clusterSshUserName": "=",
                    "hostSubscriptionId": "=",
                    "clusterResourceGroup": "=",
                    "subscriptionId": "=",
                    "resourceGroupName": "=",
                    "tenant": "=",
                    "dataLakeStoreUri": "=",
                    "baseUrl": "=",
                    "database": "=",
                    "serviceEndpoint": "=",
                    "batchUri": "=",
                    "poolName": "=",
                    "databaseName": "=",
                    "systemNumber": "=",
                    "server": "=",
                    "url":"=",
                    "aadResourceId": "=",
                    "connectionString": "|:-connectionString:secureString",
                    "existingClusterId": "-"
                }
            }
        },
        "Odbc": {
            "properties": {
                "typeProperties": {
                    "userName": "=",
                    "connectionString": {
                        "secretName": "="
                    }
                }
            }
        }
    },
    "Microsoft.DataFactory/factories/datasets": {
        "*": {
            "properties": {
                "typeProperties": {
                    "folderPath": "=",
                    "fileName": "="
                }
            }
        }}
}