Resource Manager şablonuyla özel parametreler kullanma
UYGULANANLAR: Azure Data Factory Azure Synapse Analytics
İpucu
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.
Not
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.
İş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.
Not
Ö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
Özel parametreler dosyasını oluştururken izleyebileceğiniz bazı yönergeler aşağıda arm-template-parameters-definition.json. 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ırAzureStorage1_connectionString
.<stype>
parametrenin türüdür. Boşsa<stype>
, varsayılan tür olurstring
. Desteklenen değerler: , , , , ,object
secureobject
vearray
.bool
int
securestring
string
- 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ındakiWait
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, birWeb
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ındaIntegrationRuntimes
iki özellik vardır:computeProperties
vessisProperties
. Her iki özellik türü de ilgili varsayılan değerleri ve türleriyle (Object) oluşturulur.
Tetikleyiciler
- altında
typeProperties
iki özellik parametreleştirilir. İlki,maxConcurrency
varsayılan bir değere sahip olacak şekilde belirtilen ve türündestring
olan şeklindedir. Varsayılan parametre adına<entityName>_properties_typeProperties_maxConcurrency
sahiptir. - Ö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 duruminterval
, türüint
olarak parametreleştirilen özelliğidir. Parametre adı ile<entityName>_properties_typeProperties_recurrence_triggerSuffix
son 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
AzureDataLakeStore
tü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 birsecurestring
değer olarak parametrelendirilir. Varsayılan değere sahip olmayacaktır. ileconnectionString
soneki olan kısaltılmış bir parametre adı olacaktır.- özelliği
secretAccessKey
birAzureKeyVaultSecret
(ö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.
Not
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/linkedServices
altı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": "="
}
}
}}
}