首页 > 解决方案 > 如何通过 Azure 创建运行管道 API 触发管道?

问题描述

我有一个 Azure 数据工厂订阅,我想通过我的 node.js 应用程序触发管道。管道将数据从 azure cosmos 传输到 Azure blob 存储。我已经手动触发了一次管道。我试图对 node.js 应用程序做同样的事情,但它会引发以下错误:

{ Error: tunneling socket could not be established, cause=connect ETIMEDOUT 10.0.0.2:8080
    at ClientRequest.onError (/home/deepti/Desktop/dbmanager/node_modules/tunnel-agent/index.js:177:17)
    at Object.onceWrapper (events.js:286:20)
    at ClientRequest.emit (events.js:198:13)
    at Socket.socketErrorListener (_http_client.js:392:9)
    at Socket.emit (events.js:198:13)
    at emitErrorNT (internal/streams/destroy.js:91:8)
    at emitErrorAndCloseNT (internal/streams/destroy.js:59:3)
    at process._tickCallback (internal/process/next_tick.js:63:19) code: 'ECONNRESET' }

这是我在 node.js app 中的代码:

Request.post("POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/pipelines/{pipelineName}/createRun?api-version=2018-06-01",(err,res,body)=>{
        if(err) {
            return console.log(err);
        }
        console.dir(JSON.parse(body));
        });

谁能指导我如何纠正此错误并继续进行。我是否也需要生成一些授权令牌?

另外,我实际上想将 1 个月前的数据从 cosmos DB 备份到 Azure Blob,这可能吗?

标签: node.jsazureazure-data-factory

解决方案


1.谁能指导我如何纠正此错误并继续进行。我是否也需要生成一些授权令牌?

是的,在创建管道运行之前,您需要在 Headers 中生成授权令牌。您可以参考ADAL nodejs sdk来生成令牌。如果你不知道这些参数是什么:

在此处输入图像描述

,然后请参阅本教程和本博客以了解它们的概念。请注意,您还需要向您的广告应用授予 ADF 权限。

在此处输入图像描述

在此处输入图像描述

最后,您可以调用Pipelines - Create Run REST api 并在header.

2.另外,我实际上想将 1 个月前的数据从 cosmos DB 备份到 Azure Blob,这可能吗?

如果要备份 Azure Blob 存储数据,请参考此链接。您可以在计划中使用 AzCopy 在阶段备份数据。


推荐阅读