【问题标题】:Parameterize Azure Blob Storage Linked Service in ADF在 ADF 中参数化 Azure Blob 存储链接服务
【发布时间】:2019-09-27 18:43:10
【问题描述】:

我想创建一个 Azure 数据工厂管道,将文件复制到多个存储帐户。我的计划是将管道参数中的存储帐户连接信息定义为一个数组,并使用 ForEach 活动循环遍历数组中的每个对象,将连接信息传递给另一个管道。

    [
  {
    "destinationBlob": {
      "connectionString": "Conn1"
    }
  },
  {
    "destinationBlob": {
      "connectionString": "Conn2"
    }
  },
  {
    "destinationBlob": {
      "connectionString": "Conn3"
    }
  }
]

我的问题是,是否可以参数化与 Azure Blob 存储链接服务的连接?

【问题讨论】:

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


【解决方案1】:

这实际上是可以做到的。示例 JSON:

{
    "name": "DataLakeBlob",
    "type": "Microsoft.DataFactory/factories/linkedservices",
    "properties": {
        "parameters": {
            "StorageAccountEndpoint": {
                "type": "String",
                "defaultValue": "https://testblobstorage.blob.core.windows.net"
            }
        },
        "type": "AzureBlobStorage",
        "typeProperties": {
            "serviceEndpoint": "@{linkedService().StorageAccountEndpoint}"
        },
        "description": "Test Description"
    }
}

【讨论】:

    【解决方案2】:

    基于document,Linked Service 的 ADF 参数化不支持 Azure Blob 存储。

    因此,您只能将特定文件复制到不同的目的地。

    【讨论】:

    • 感谢您的回复。在您共享的文档中,我看到:“对于所有其他数据存储,您可以通过选择 Connections 选项卡上的 Code 图标并使用 JSON 编辑器来参数化链接服务。”我会尝试一下,看看会发生什么......
    • 有可能会起作用,我已经使用 keyvault 配置来处理无法从 UI 使用代码视图配置 keyvault 的字段。我复制了基于其他链接服务的粘贴配置,并且完成了这项工作。
    • 更新:我尝试使用 JSON 编辑器参数化 Azure 存储连接字符串,但未成功。我必须为每个存储目标创建一个新的复制活动、链接服务和数据集...这是参数化语音支持的链接feedback.azure.com/forums/270578-data-factory/suggestions/…
    • 正如我在下面的回答中所建议的,有一种方法可以做到这一点。
    【解决方案3】:

    编辑:微软承认了这一点。 https://docs.microsoft.com/en-us/azure/data-factory/parameterize-linked-services#

    对于那些寻找 SAS 令牌参数化的人,您可以使用以下 JSON。 请务必选中屏幕截图中的复选框以应用 JSON。

    {
      "type":"Microsoft.DataFactory/factories/linkedservices",
      "properties":{
      "parameters": {
            "StorageAccountEndpoint": {
                "type": "String",
                "defaultValue": "https://<<yourstorageaccountname>>.blob.core.windows.net/?sv=2018-03-28&ss=b&srt=sco&sp=rwdlac&se=2019-10-20T16:33:57Z&st=2019-09-20T08:33:57Z&spr=https&sig=lDrBjD%2BjM2T1XjRW997VPMqDp99ZxVoReyRK0VEX7zQ%3D"
            }
        },
        "type": "AzureBlobStorage",
        "typeProperties": {
            "sasUri": "@{linkedService().StorageAccountEndpoint}"
        }
    
    }}
    

    【讨论】:

    • 你确定这个真的有效吗?它使用“defaultValue”,从不使用“StorageAccountEndpoint”的实际值。 “StorageAccountEndpoint”始终为空,如果您删除“defaultValue”,您将在运行时遇到错误。
    • 是的。我通过触发器在运行时传递实际值
    • @DhruvJoshi,您能否说明如何通过触发器传递 StorageAccountEndpoint 值?
    • 创建一个从触发器接受参数的管道,并具有从管道接受参数的数据集和由数据集提供的参数化链接服务。你去吧。如果这没有帮助,请告诉我。
    猜你喜欢
    • 2022-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-04
    相关资源
    最近更新 更多