运行 adf 管道 api 需要哪些权限

What permissions are needed to run the adf pipeline api

运行 Azure 数据工厂管理 api 需要什么权限。例如,我试图在网络 activity.

中执行 Pipeline runs, Query by factory api

错误:

User configuration issue
{"error":{"code":"AuthorizationFailed","message":"The client with object id does not have authorization to perform action 'Microsoft.DataFactory/factories/pipelineruns/read' over scope '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/pipelineruns/{runId}' or the scope is invalid. If access was recently granted, please refresh your credentials."}}

能否指导我如何传递凭据并获取 GET 和 POST 方法的令牌。

您需要创建一个可以访问数据工厂的 Azure Active Directory 应用程序。

  1. Create an Azure Active Directory application, For the sign-on URL, you can provide a dummy URL (https://contoso.org/exampleapp).
  2. Get values for signing in,获取应用程序ID和租户ID,记下这些值,以备后用。
  3. Certificates and secrets,获取身份验证密钥,并记下您在本教程后面使用的这个值。
  4. Assign the application to a role,将应用程序分配给订阅级别的贡献者角色,以便应用程序可以在订阅中创建数据工厂。

完成上述步骤后,您需要创建 DataFactoryManagementClient 并使用以下代码片段验证您的应用程序:

var context = new AuthenticationContext("https://login.microsoftonline.com/" + tenantID);
ClientCredential cc = new ClientCredential(applicationId, authenticationKey);
AuthenticationResult result = context.AcquireTokenAsync("https://management.azure.com/", cc).Result;
ServiceClientCredentials cred = new TokenCredentials(result.AccessToken);
var client = new DataFactoryManagementClient(cred) {
    SubscriptionId = subscriptionId };

验证应用程序后,您可以使用以下代码片段启动管道 运行:

// Create a pipeline run
Console.WriteLine("Creating pipeline run...");

CreateRunResponse runResponse = client.Pipelines.CreateRunWithHttpMessagesAsync(
    resourceGroup, dataFactoryName, pipelineName, parameters: parameters
).Result.Body;
Console.WriteLine("Pipeline run ID: " + runResponse.RunId);

下面是 运行 Azure 数据工厂管道的控制台应用程序的完整代码:

using Microsoft.Azure.Management.DataFactory;
using Microsoft.Azure.Management.DataFactory.Models;
using Microsoft.IdentityModel.Clients.ActiveDirectory;
using Microsoft.Rest;
using System;

namespace ADF
{
    class Program
    {
        static void Main(string[] args)
        {
            // Set variables
            string tenantID = "<your tenant ID>";
            string applicationId = "<your application ID>";
            string authenticationKey = "<your authentication key for the application>";
            string subscriptionId = "<your subscription ID where the data factory resides>";
            string resourceGroup = "<your resource group where the data factory resides>";
            string dataFactoryName ="<specify the name of data factory to create. It must be globally unique.>";
            string pipelineName = "<specify the name of pipeline to run. It must be globally unique.>";

            // Authenticate and create a data factory management client
            var context = new AuthenticationContext("https://login.microsoftonline.com/" + tenantID);
            ClientCredential cc = new ClientCredential(applicationId, authenticationKey);
            AuthenticationResult result = context.AcquireTokenAsync("https://management.azure.com/", cc).Result;
            ServiceClientCredentials cred = new TokenCredentials(result.AccessToken);
            
            var client = new DataFactoryManagementClient(cred)
            {
                SubscriptionId = subscriptionId
            };

            // Create a pipeline run
            Console.WriteLine("Creating pipeline run...");

            CreateRunResponse runResponse = client.Pipelines.CreateRunWithHttpMessagesAsync(
                resourceGroup, dataFactoryName, pipelineName
            ).Result.Body;

            Console.WriteLine("Pipeline run ID: " + runResponse.RunId);
        }
    }
}

不要忘记添加 Nuget 包:

Install-Package Microsoft.Azure.Management.DataFactory
Install-Package Microsoft.Azure.Management.ResourceManager -IncludePrerelease
Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory