Azure数据工厂v2 Linkedservice版本

时间:2018-12-07 14:20:16

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

我正在使用以下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脚本以自动化部署

谢谢

1 个答案:

答案 0 :(得分:0)

我不确定这是否是您想要的,但是您是否要动态提取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,承租人,subscriptionID等的参数值,同时您也可以从AKV(Azure Key Vault)中提取这些参数值,我知道您的用例是面向Powershell的,但是如果是这样的话您仍然需要某种配置文件来提取这些值,当然,对版本控制配置文件进行版本控制不是一个好主意,因此它们必须位于某个地方,我强烈建议使用AKV / Azure Devops方法。希望这会有所帮助