Použití vlastních parametrů s šablonou Resource Manageru

PLATÍ PRO: Azure Data Factory Azure Synapse Analytics

Tip

Vyzkoušejte si službu Data Factory v Microsoft Fabric, řešení pro analýzy typu all-in-one pro podniky. Microsoft Fabric zahrnuje všechno od přesunu dat až po datové vědy, analýzy v reálném čase, business intelligence a vytváření sestav. Přečtěte si, jak začít používat novou zkušební verzi zdarma.

Pokud má vaše instance vývoje přidružené úložiště Git, můžete přepsat výchozí parametry šablony Resource Manageru vygenerované publikováním nebo exportem šablony. V těchto scénářích můžete chtít přepsat výchozí konfiguraci parametrů Resource Manageru:

  • Používáte automatizovanou CI/CD a chcete během nasazování Resource Manageru změnit některé vlastnosti, ale vlastnosti nejsou ve výchozím nastavení parametrizovány.

  • Vaše továrna je tak velká, že výchozí šablona Resource Manageru je neplatná, protože má více než maximální povolené parametry (256).

    Pro zpracování limitu vlastního parametru 256 existují tři možnosti:

    • Použijte soubor vlastních parametrů a odeberte vlastnosti, které nepotřebují parametrizaci, tj. vlastnosti, které můžou zachovat výchozí hodnotu a tím snížit počet parametrů.
    • Refaktoring logiky v toku dat za účelem snížení parametrů, například parametry kanálu mají stejnou hodnotu, můžete místo toho použít globální parametry.
    • Rozdělte jednu datnou továrnu na několik datových továren.

Pokud chcete přepsat výchozí konfiguraci parametrů Resource Manageru, přejděte do centra Správa a v části Správa zdrojového kódu vyberte šablonu ARM. V části Konfigurace parametrů ARM kliknutím na upravit ikonu v části Upravit konfiguraci parametrů otevřete editor kódu konfigurace parametru Resource Manageru.

Manage custom parameters

Poznámka:

Konfigurace parametrů ARM je povolená pouze v režimu GIT. V režimu „živý režim" nebo „Data Factory“ je v současnosti zakázána.

Vytvoření vlastní konfigurace parametru Resource Manageru vytvoří soubor s názvem arm-template-parameters-definition.json v kořenové složce vaší větve Git. Musíte použít přesný název souboru.

Custom parameters file

Při publikování z větve pro spolupráci služba Data Factory přečte tento soubor a použije jeho konfiguraci ke generování vlastností, které se získají parametrizovány. Pokud se nenajde žádný soubor, použije se výchozí šablona.

Při exportu šablony Resource Manageru načte služba Data Factory tento soubor z jakékoli větve, na které právě pracujete, a ne z větve pro spolupráci. Soubor můžete vytvořit nebo upravit z privátní větve, kde můžete otestovat změny výběrem možnosti Exportovat šablonu ARM v uživatelském rozhraní. Soubor pak můžete sloučit do větve pro spolupráci.

Poznámka:

Vlastní konfigurace parametrů Resource Manageru nemění limit parametrů šablony ARM 256. Umožňuje zvolit a snížit počet parametrizovaných vlastností.

Syntaxe vlastních parametrů

Následuje několik pokynů, které je potřeba dodržovat při vytváření souboru vlastních parametrů arm-template-parameters-definition.json. Soubor se skládá z oddílu pro každý typ entity: trigger, kanál, propojená služba, datová sada, prostředí Integration Runtime a tok dat.

  • Zadejte cestu vlastnosti pod příslušným typem entity.
  • Nastavením názvu * vlastnosti označíte, že chcete parametrizovat všechny vlastnosti pod ní (pouze na první úroveň, ne rekurzivně). Můžete také poskytnout výjimky této konfigurace.
  • Nastavení hodnoty vlastnosti jako řetězce označuje, že chcete parametrizovat vlastnost. Použijte formát <action>:<name>:<stype>.
    • <action> může mít jeden z těchto znaků:
      • = znamená zachovat aktuální hodnotu jako výchozí hodnotu parametru.
      • - znamená, že neuchovávejte výchozí hodnotu parametru.
      • |je zvláštní případ tajných kódů ze služby Azure Key Vault pro připojovací řetězec nebo klíče.
    • <name> je název parametru. Pokud je prázdná, převezme název vlastnosti. Pokud hodnota začíná znakem - , název se zkracuje. Například AzureStorage1_properties_typeProperties_connectionString by bylo zkráceno na AzureStorage1_connectionString.
    • <stype> je typ parametru. Pokud <stype> je prázdný, výchozí typ je string. Podporované hodnoty: string, , intsecurestring, bool, objectsecureobject , a array.
  • Zadání pole v definičním souboru označuje, že odpovídající vlastnost v šabloně je pole. Data Factory iteruje všechny objekty v poli pomocí definice zadané v objektu Integration Runtime pole. Druhý objekt, řetězec, se stane názvem vlastnosti, která se používá jako název parametru pro každou iteraci.
  • Definice nemůže být specifická pro instanci prostředku. Každá definice se vztahuje na všechny prostředky tohoto typu.
  • Ve výchozím nastavení jsou všechny zabezpečené řetězce, jako jsou tajné kódy služby Key Vault, a zabezpečené řetězce, jako jsou připojovací řetězec, klíče a tokeny, parametrizovány.

Ukázková šablona parametrizace

Tady je příklad, jak může vypadat konfigurace parametrů Resource Manageru. Obsahuje příklady řady možných použití, včetně parametrizace vnořených aktivit v kanálu a změny výchozí hodnoty parametru propojené služby.

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

Tady je vysvětlení toho, jak je předchozí šablona vytvořena, rozdělená podle typu prostředku.

Pipelines

  • Jakákoli vlastnost v cestě activities/typeProperties/waitTimeInSeconds je parametrizována. Jakákoli aktivita v kanálu, který má vlastnost na úrovni kódu s názvem waitTimeInSeconds (například Wait aktivita), je parametrizována jako číslo s výchozím názvem. V šabloně Resource Manageru ale nebude mít výchozí hodnotu. Bude to povinný vstup během nasazení Resource Manageru.
  • Podobně je vlastnost s názvem headers (například v Web aktivitě) parametrizována typem object (JObject). Má výchozí hodnotu, což je stejná hodnota jako zdrojová továrna.

IntegrationRuntimes

  • Všechny vlastnosti v cestě typeProperties jsou parametrizovány s příslušnými výchozími hodnotami. Ve vlastnostech typu jsou například dvě vlastnosti IntegrationRuntimes : computeProperties a ssisProperties. Oba typy vlastností se vytvářejí s příslušnými výchozími hodnotami a typy (Object).

Spouštěče

  • V části typeProperties, dvě vlastnosti jsou parametrizovány. První je maxConcurrency, který je určen tak, aby měl výchozí hodnotu a je typu string. Má výchozí název <entityName>_properties_typeProperties_maxConcurrencyparametru .
  • Vlastnost recurrence je také parametrizována. V této části jsou všechny vlastnosti na této úrovni zadány tak, aby byly parametrizovány jako řetězce s výchozími hodnotami a názvy parametrů. Výjimkou je interval vlastnost, která je parametrizována jako typ int. Název parametru je příponou <entityName>_properties_typeProperties_recurrence_triggerSuffix. freq Podobně je vlastnost řetězec a je parametrizován jako řetězec. freq Vlastnost je však parametrizována bez výchozí hodnoty. Název je zkrácený a s příponou. Například <entityName>_freq.

Propojené služby

  • Propojené služby jsou jedinečné. Vzhledem k tomu, že propojené služby a datové sady mají širokou škálu typů, můžete poskytnout přizpůsobení specifické pro konkrétní typ. V tomto příkladu se pro všechny propojené služby typu AzureDataLakeStorepoužije konkrétní šablona. Pro všechny ostatní (prostřednictvím *) se použije jiná šablona.
  • Vlastnost connectionString bude parametrizována securestring jako hodnota. Nebude mít výchozí hodnotu. Bude mít zkrácený název parametru, který má příponu connectionString.
  • Vlastnost secretAccessKey se stane ( AzureKeyVaultSecret například v propojené službě Amazon S3). Automaticky se parametrizuje jako tajný klíč služby Azure Key Vault a načte se z nakonfigurovaného trezoru klíčů. Můžete také parametrizovat samotný trezor klíčů.

Datové sady

  • I když je pro datové sady k dispozici přizpůsobení specifické pro typ, můžete zadat konfiguraci bez explicitní konfigurace na úrovni *. V předchozím příkladu jsou všechny vlastnosti datové sady pod typeProperties parametrizovány.

Poznámka:

Pokud jsou pro kanál nakonfigurovaná upozornění a matice Azure, nejsou aktuálně podporované jako parametry pro nasazení ARM. Pokud chcete upozornění a matice v novém prostředí znovu použít, postupujte podle monitorování , upozornění a matic služby Data Factory.

Výchozí šablona parametrizace

Níže je aktuální výchozí šablona parametrizace. Pokud potřebujete přidat jenom několik parametrů, může být vhodné upravit tuto šablonu přímo, protože nepřijdete o existující strukturu parametrizace.

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

Příklad: Parametrizace existujícího ID interaktivního clusteru Azure Databricks

Následující příklad ukazuje, jak přidat jednu hodnotu do výchozí šablony parametrizace. Do souboru parametrů chceme přidat pouze existující ID interaktivního clusteru Azure Databricks pro propojenou službu Databricks. Všimněte si, že tento soubor je stejný jako předchozí soubor s výjimkou přidání existingClusterId pod pole vlastnosti pole Microsoft.DataFactory/factories/linkedServices.

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