2017-03-01 10 views
1

私は、Azure SDKを使用してVisual Studioで作成したカスタムADFアクティビティを使用して、ADLSにデータを書き込もうとしています。私が作成したパイプラインは、既にADLSとバッチリンクされたサービスが定義されている既存のADFに配備されます。 私の質問はこれです:カスタムアクティビティメソッドで、データを書き込むために既存のADLSリンクサービスを使用するにはどうすればよいですか?既存のADLSリンクサービスを使用したAzure ADFカスタムアクティビティ

この質問は、ADF - C# Custom Activityと似ていますが、リンクされたサービスが自分のSPNを使用しているため開発者としてSPNキーを知ることができないため、接続文字列を単純に持ち上げることはできません。

ここにリンクサービスがあります。カスタムアクティビティで

{ 
    "name": "AzureDataLakeStoreLinkedService", 
    "properties": { 
     "hubName": "****-d-****-adf_hub", 
     "type": "AzureDataLakeStore", 
     "typeProperties": { 
      "dataLakeStoreUri": "adl://***************.azuredatalakestore.net/", 
      "servicePrincipalId": "*****-**-****-****-************", 
      "servicePrincipalKey": "**********", 
      "tenant": "********.com" 
     } 
    } 
} 

私は、リンクされたサービスを手に入れる:

var output = activity.Outputs[0]; 
var inputLinkedService = linkedServices.First(linkedService => linkedService.Name == _ADLSLinkedServiceName).Properties.TypeProperties as AzureDataLakeStoreLinkedService; 

- 今何?

答えて

1

上記のメソッド呼び出しを使用すると、ファイルパスやリンクされたサービスアカウント名などの情報しか取得できません。

ここで問題になるのは、ADFカスタムアクティビティが別のアプリケーションとしてAzure Batch Computeサービスで実行されることです。すでにADFに設定されているリンクサービス認証(セッショントークン)を理解していないため、C#でアクセスできなくなります。

解決策はAzure Active Directoryドメインのコンテキスト内でAzureアプリケーションとしてカスタムアクティビティを登録することです!....はい、真剣に!

これが完了すると、データレイクストアの読み書きをアプリに許可できます。

私のブログをチェックしてください。私は、まさにこの上で記事を書いた:

https://www.purplefrogsystems.com/paul/2016/12/azure-data-lake-authentication-from-azure-data-factory/

警告:あなたは今、実際にポータルブレードでアプリを登録できるので、PowerShellコマンドレットをsuperceededされています。

+0

ありがとうポール、理解される。私は解決策に驚かなければならないと思っていますが、ADFを使用するほど驚きは少なくなります。 –

関連する問題