2017年7月30日日曜日

LogicFlow で Azure DataLake Store コネクタを利用する際の注意点

LogicApps Live でも公開されていた、Azure DataLake Store コネクタでのサービスプリンシパル対応、これはこれまでの「アカウントでのサインイン」ではなく、専用のアプリケーションを Azure AD に登録しておき権限を付与することで、ユーザー個別ではないアクセスを可能にする方法に対応したものとないます。以前のユーザー個別の方法では、どうしてかうまくいかなかったのですが、プリンシパル対応されてなんとか利用することができたのでまとめてみました。

DataLake Store は Azure で提供されている、構造化・非構造化とデータの種類を問わない、大規模対応されたデータ保持サービスです。ここに様々なデータをアップロードしておくことで、DataLake Analytics をはじめとした各種データ分析サービスに連携することが可能です。

利用するためには DataLake Store アカウントを作成する必要があるので、ポータルから作成を行います。

image

現時点では利用できるリージョンが「米国東部2」「米国中央部」「ヨーロッパ北部」の3か所だけとなっています。将来的には他リージョンにも広まるであろうというのと、DataLake Store という性質上、レスポンスタイムをそこまで求めるのもどうかと思うので今時点ではあまり気にしなくてもよいかと思います。

DataLake Store では、最初に指定したサービス名が「アカウント名」として扱われます。上記のスクリーンショットでは「kumaadls」や「kumadatalake2」がそれにあたり、後々のプリンシパル情報指定の際にも利用します。

image

また、データエクスプローラーでは、新たにフォルダを作成したり直接ファイルのアップロードやダウンロードも行うことが可能です。

このように DataLake Store を利用できる状態にすると、LogicFlow 側のコネクタで色々操作ができるようになります。

image

現時点で提供されている機能は上記の通りで、トリガはなくアクションが 7 種類用意されています。

image

初めて利用する場合は、上記のようにサインインを求められますが、左下に「サービスプリンシパルを使用して接続する」とありますので、今回はこちらから接続を行います。

image

サービスプリンシパルを利用する場合は、上記のような入力を求められます。接続名はこの LogicFlow 上で認識するためのもので、適当で構いません。Client ID は、Azure AD でアプリケーションを登録した際に表示されるものです。Client Secret はそのアプリケーションの情報としてパスワード的なものを登録する必要があるのですが、その値となります。Tenant ID は Azure AD のプロパティから確認できる値です。

Azure AD でのアプリケーションの登録や、Client ID などの各種値については、以前の投稿が参考になると思いますので、こちらも参考にしてみてください。

それらを設定し、接続が作成できると、DataLake コネクタが利用可能になります。

image

上記はアクションのうちの一つ、List Files で、指定したフォルダに存在するファイル一覧の取得を行うものです。

Account Name は DataLake Store で設定したサービス名を、フォルダパスは抽出したいパスを記載します。この時、ルートフォルダを表す先頭の \ は不要です。

image

指定が正しければ、このようにフォルダの中にあるファイル一覧が取得できます。

さて、タイトルにある注意点についてですが、このフォルダ指定の箇所に一つ不具合があるのが確認できています。

image

これがその注意点にはまっていたときの状態ですが、見たところは成功例の時と指定している値はまったく同一です。ところが結果として java.io.FileNotFoundException が返却され、対象のフォルダが存在しない、というエラーになっているのがわかるかと思います(java で開発されていたのがちょっと驚きですw)

これはなにかというと、Azure DataLake Store のフォルダ名に大文字を含めていた場合現状のコネクタでは取得できない、という不具合になります。見た感じでは、コネクタ側で渡されたフォルダ名を ToLower 的に小文字に変換して、DataLake Store より取得しようと動いているようです。DataLake Store でフォルダ名には小文字しか利用できない、ということであれば納得できるのですが、普通に大文字も使えますので、これはコネクタ側の不具合なのだと思います。

このような問題はありますが、今のところはフォルダ名やファイル名に大文字を利用していなければ回避可能です。

LogicFlow で DataLake Store にどんどんデータをアップロードすることが、これで可能になりますので、例えば Flow で毎日何かしらのデータを OneDrive や CDS 、もしくはほかのサービスに連携しているようなところで、一緒に DataLake Store へも蓄積させることが簡単に行うことができるようになります。

現在はまだ DataLake Analytics を利用するには REST API を直接呼び出すしか方法がありませんが、それでも今までよりははるかに簡単に大規模にデータを集約させることができるようになったと思います。

0 件のコメント:

コメントを投稿