如何在不启用Git的情况下导出Azure Synapse工作区的制品ARM模板?
是否可以从特定资源导出“Artifacts ARM Template”?
默认的ARM模板导出(包括你当前使用的REST API方式)仅会导出Synapse工作区的基础配置,不会包含Pipeline、数据流、数据集等工作区内部制品。在不启用Git集成的实时模式下,你可以通过以下几种方式导出包含这些制品的ARM模板:
方案1:Synapse Studio手动导出
- 打开Synapse Studio,进入对应模块(如集成管理Pipeline、数据工程管理数据流/数据集)
- 选中单个或多个目标制品,点击顶部的导出按钮,选择导出为ARM模板
- 此方式可批量导出同类型制品,但需手动整理合并为完整部署模板,或分步骤部署
方案2:Azure PowerShell批量导出
使用Az.Synapse模块的专用命令导出各类制品的ARM模板片段:
- 安装模块:
Install-Module -Name Az.Synapse -Force -AllowClobber - 导出示例:
# 导出指定Pipeline Export-AzSynapsePipeline -WorkspaceName "synapse-dev-napsty" -Name "MyPipeline" -OutputFolder "./synapse-templates" # 导出所有DataFlow Get-AzSynapseDataFlow -WorkspaceName "synapse-dev-napsty" | Export-AzSynapseDataFlow -OutputFolder "./synapse-templates/dataflows" - 可将导出的模板片段合并为完整ARM模板,或在CI/CD中逐个部署
方案3:Synapse专用REST API导出
针对不同制品类型调用专属API获取ARM模板:
- Pipeline导出:
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Synapse/workspaces/{workspaceName}/pipelines/{pipelineName}/export?api-version=2021-06-01 - DataFlow导出:
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Synapse/workspaces/{workspaceName}/dataflows/{dataFlowName}/export?api-version=2021-06-01
这些API会返回包含制品完整配置的ARM模板片段,可收集后用于跨环境部署
方案4:自定义脚本批量导出
编写PowerShell或Python脚本,遍历工作区所有制品类型,自动调用上述API/命令批量导出所有制品的ARM模板,还可自动合并为类似Git模式下的完整部署模板,适配CI/CD流水线的批量部署需求
你当前通过REST API获取的仅包含工作区配置的ARM模板:
{ "template": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "vulnerabilityAssessments_Default_storageContainerPath": { "type": "SecureString" }, "workspaces_synapse_dev_napsty_name": { "defaultValue": "synapse-dev-napsty", "type": "String" }, "storageAccounts_napdatalake_externalid": { "defaultValue": "/subscriptions/8be7d968-ce5d-402f-84f0-ba21765d77c1/resourceGroups/devrg/providers/Microsoft.Storage/storageAccounts/napdatalake", "type": "String" } }, "variables": {}, "resources": [ { "type": "Microsoft.Synapse/workspaces", "apiVersion": "2021-06-01", "name": "[parameters('workspaces_synapse_dev_napsty_name')]", "location": "australiaeast", "identity": { "type": "SystemAssigned" }, "properties": { "defaultDataLakeStorage": { "resourceId": "[parameters('storageAccounts_napdatalake_externalid')]", "createManagedPrivateEndpoint": false, "accountUrl": "https://napdatalake.dfs.core.windows.net", "filesystem": "napdatalakefs" }, "encryption": {}, "managedResourceGroupName": "synapseworkspace-managedrg-22275c84-71ba-412c-ac0c-90b1a6f93b4b", "sqlAdministratorLogin": "sqladminuser", "privateEndpointConnections": [], "workspaceRepositoryConfiguration": { "accountName": "napstyy0227", "collaborationBranch": "dev", "lastCommitId": "d2c9d624ec8fd345ef2f8acc84ab64ecfd6c3d79", "projectName": "AzureSynapse", "repositoryName": "AzureSynapse", "rootFolder": "/synapse", "tenantId": "63ec89f0-780b-4349-8a65-b8c44dddc8dd", "type": "WorkspaceVSTSConfiguration" }, "publicNetworkAccess": "Enabled", "cspWorkspaceAdminProperties": { "initialWorkspaceAdminObjectId": "94888bea-0df0-4bda-8c43-988d03fb0323" }, "azureADOnlyAuthentication": false, "trustedServiceBypassEnabled": false } }, { "type": "Microsoft.Synapse/workspaces/auditingSettings", "apiVersion": "2021-06-01", "name": "[concat(parameters('workspaces_synapse_dev_napsty_name'), '/Default')]", "dependsOn": [ "[resourceId('Microsoft.Synapse/workspaces', parameters('workspaces_synapse_dev_napsty_name'))]" ], "properties": { "retentionDays": 0, "auditActionsAndGroups": [], "isStorageSecondaryKeyInUse": false, "isAzureMonitorTargetEnabled": false, "state": "Disabled", "storageAccountSubscriptionId": "00000000-0000-0000-0000-000000000000" } }, { "type": "Microsoft.Synapse/workspaces/azureADOnlyAuthentications", "apiVersion": "2021-06-01", "name": "[concat(parameters('workspaces_synapse_dev_napsty_name'), '/default')]", "dependsOn": [ "[resourceId('Microsoft.Synapse/workspaces', parameters('workspaces_synapse_dev_napsty_name'))]" ], "properties": { "azureADOnlyAuthentication": false } }, { "type": "Microsoft.Synapse/workspaces/dedicatedSQLminimalTlsSettings", "apiVersion": "2021-06-01", "name": "[concat(parameters('workspaces_synapse_dev_napsty_name'), '/default')]", "location": "australiaeast", "dependsOn": [ "[resourceId('Microsoft.Synapse/workspaces', parameters('workspaces_synapse_dev_napsty_name'))]" ], "properties": { "minimalTlsVersion": "1.2" } }, { "type": "Microsoft.Synapse/workspaces/extendedAuditingSettings", "apiVersion": "2021-06-01", "name": "[concat(parameters('workspaces_synapse_dev_napsty_name'), '/Default')]", "dependsOn": [ "[resourceId('Microsoft.Synapse/workspaces', parameters('workspaces_synapse_dev_napsty_name'))]" ], "properties": { "retentionDays": 0, "auditActionsAndGroups": [], "isStorageSecondaryKeyInUse": false, "isAzureMonitorTargetEnabled": false, "state": "Disabled", "storageAccountSubscriptionId": "00000000-0000-0000-0000-000000000000" } }, { "type": "Microsoft.Synapse/workspaces/firewallRules", "apiVersion": "2021-06-01", "name": "[concat(parameters('workspaces_synapse_dev_napsty_name'), '/allowAll')]", "dependsOn": [ "[resourceId('Microsoft.Synapse/workspaces', parameters('workspaces_synapse_dev_napsty_name'))]" ], "properties": { "startIpAddress": "0.0.0.0", "endIpAddress": "255.255.255.255" } }, { "type": "Microsoft.Synapse/workspaces/integrationruntimes", "apiVersion": "2021-06-01", "name": "[concat(parameters('workspaces_synapse_dev_napsty_name'), '/AutoResolveIntegrationRuntime')]", "dependsOn": [ "[resourceId('Microsoft.Synapse/workspaces', parameters('workspaces_synapse_dev_napsty_name'))]" ], "properties": { "type": "Managed", "typeProperties": { "computeProperties": { "location": "AutoResolve" } } } }, { "type": "Microsoft.Synapse/workspaces/securityAlertPolicies", "apiVersion": "2021-06-01", "name": "[concat(parameters('workspaces_synapse_dev_napsty_name'), '/Default')]", "dependsOn": [ "[resourceId('Microsoft.Synapse/workspaces', parameters('workspaces_synapse_dev_napsty_name'))]" ], "properties": { "state": "Disabled", "disabledAlerts": [ "" ], "emailAddresses": [ "" ], "emailAccountAdmins": false, "retentionDays": 0 } }, { "type": "Microsoft.Synapse/workspaces/vulnerabilityAssessments", "apiVersion": "2021-06-01", "name": "[concat(parameters('workspaces_synapse_dev_napsty_name'), '/Default')]", "dependsOn": [ "[resourceId('Microsoft.Synapse/workspaces', parameters('workspaces_synapse_dev_napsty_name'))]" ], "properties": { "recurringScans": { "isEnabled": false, "emailSubscriptionAdmins": true }, "storageContainerPath": "[parameters('vulnerabilityAssessments_Default_storageContainerPath')]" } } ] } }
内容的提问来源于stack exchange,提问作者Napsty
相关产品推荐
相关产品推荐

