首页 > 解决方案 > Azure datafactory v2 Linkedservice 构建

问题描述

我正在使用以下 JSON 模板

{
     "properties": {
         "type": "AzureStorage",
         "typeProperties": {
             "connectionString": {
                 "type": "SecureString",
                 "value": "DefaultEndpointsProtocol=https;AccountName=<accountname>;AccountKey=<accountkey>;EndpointSuffix=core.windows.net"
             }
         }
     },
     "name": "AzureStorageLinkedService"
 }

从 URL https://docs.microsoft.com/en-us/azure/data-factory/tutorial-hybrid-copy-powershell#get-storage-account-name-and-account-key 创建 Azure 存储链接服务。与其对帐户名称和密钥进行硬编码,不如将其作为参数传递给 PowerShell cmdlet

Set-AzureRmDataFactoryV2LinkedService

我正在尝试构建一个 PowerShell 脚本来自动化部署

谢谢

标签: azure-storageazure-data-factory-2

解决方案


我不确定这是否是您想要的,但您是否要动态提取 azure 帐户名称和帐户密钥?

您是否在许多环境中自动执行此操作?在我的事业中,我使用 azure DevOps 和 Azure Key Vault 来传递每个环境(开发、测试和生产)所需的参数,这里有一个非常好的分步指南,可以自动部署 ADF

https://docs.microsoft.com/en-us/azure/data-factory/continuous-integration-deployment

您不必对密钥、密码等进行硬编码,但必须在 Azure Key Vault 中指定它们并将其链接到 ADF

https://azure.microsoft.com/en-us/updates/secure-credential-management-using-azure-key-vault-and-data-factory/

因此,例如对于 Azure Data Lake Store,您可以指定类似这样的内容

{
    "name": "linked_service_adls",
    "properties": {
        "type": "AzureDataLakeStore",
        "typeProperties": {
            "dataLakeStoreUri": "https://YOURADLSNAME.azuredatalakestore.net/webhdfs/v1",
            "servicePrincipalId": "xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx",
            "servicePrincipalKey": {
                "type": "AzureKeyVaultSecret",
                "store": {
                    "referenceName": "linked_service_kv_general",
                    "type": "LinkedServiceReference"
                },
                "secretName": "adls-webapi-principalKey"
            },
            "tenant": "xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx",
            "subscriptionId": "xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
            "resourceGroupName": "rg-whatever"
        }
    }
}

servicePrincipalKey 不必进行硬编码并从您的 Azure Key Vault 中动态提取(使用“type”:“AzureKeyVaultSecret”和密钥名称“adls-webapi-principalKey”),在 Azure DevOps 中,您可以指定参数每个目标环境的服务 PRincipal ID 、租户、订阅 ID 等的值,同时您也可以从 AKV(Azure Key Vault)中提取这些值,我知道您的用例是面向 Powershell 的,但如果是这种情况,您仍然会需要某种配置文件来提取这些值,当然版本控制配置文件不是一个好主意,因此它们必须存在于某个地方,我强烈推荐 AKV/Azure Devops 方法。希望这可以帮助


推荐阅读