Jupyter Notebook 上で Dataiku の管理フォルダに書き込みを行う

HiroshiKawasaki
HiroshiKawasaki Partner, Registered Posts: 6 Partner

Dataikuの管理フォルダに Jupyter Notebook 上でファイル書き込みを行おうとしたところ

以下のエラーが発生しました。

DirectoryMissingPermissions: The 'workdir' directory 'file:///XXXX' does not have required permissions (read, write and execute required). Adjust directory permissions or specify a different directory with the necessary permissions. The error is caused by: Permission denied: user=dssuser_h_kawasaki, path="file:XXXXX":dataiku:dataiku:drwxrwx---

Dataikuの管理フォルダ作成ユーザとJupyter Notebook実行ユーザが異なるため権限がないことが

原因と考えられます。

Dataiku API を使えば書き込み可能と想定しますが、書き込み処理はライブラリ経由で行われるため書き込み処理部分の修正はできないため、

管理フォルダの権限変更または、Jupyter Notebookの実行ユーザ変更は可能でしょうか。

Comments

  • Tsuyoshi
    Tsuyoshi Dataiker, PartnerAdmin, Dataiku DSS Core Designer, Dataiku DSS ML Practitioner, Dataiku DSS Adv Designer, Registered Posts: 307 Dataiker
    edited September 19

    ご質問内に「Dataikuの管理フォルダ作成ユーザとJupyter Notebook実行ユーザが異なる」と記載されていますので、ご利用の環境ではUIF(User Isolation Framework)を適用されているものと推測しています。

    Jupyter Notebookの実行ユーザーを変えることは不可(のはず)ですので、通常はやはりAPI経由で管理フォルダにアクセス、もしくは(UIFの環境でフォルダに直接アクセスしたい場合)自分が作成した管理フォルダに自分でアクセスする必要があります。

    今回のご質問のように、「UIFを利用している環境にて、別のユーザーが作成した管理フォルダに、異なるユーザーのJupyter Notebookから(API経由ではなく)直接アクセスしたい」場合、何らかの回避策を検討する必要があると思います。例えば、以下のような方法はいかがでしょうか?

    1. ご質問記載の「書き込み処理はライブラリ経由で行われる」処理を、Notebook内に記述するのではなく、別の共通プロジェクトを作成してその中に作成する(以下の手順)。
    2. 作成した共通プロジェクトの中で、コードレシピと管理フォルダを作成して、ライブラリ経由の書き込み処理を実装し、その処理をシナリオに登録する。
    3. 上記の共通プロジェクトを、Notebookを利用するプロジェクトに対して共有設定する。
    4. NotebookからDataiku APIを利用して、上記作成したシナリオを実行する。

    上記の方法が有効かどうかは、私も試せていないのですが、考え方の一つとして参考にしていただけますと幸いです。

  • Tsuyoshi
    Tsuyoshi Dataiker, PartnerAdmin, Dataiku DSS Core Designer, Dataiku DSS ML Practitioner, Dataiku DSS Adv Designer, Registered Posts: 307 Dataiker

    また、こちらは全然別件で恐縮ですが、いただいたご質問が「Data Haiker Connect Japan」のリストの一番下に表示されてしまっているようです。

    Q&Aのリスト内に表示させるためには、こちらのリンク( https://community.dataiku.com/categories/japan-user-group-%28data-haiker%29    )からご質問いただく方が良さそうですので、今後はこちらのリンクをお試しいただけますと幸いです🙇‍♂️

  • HiroshiKawasaki
    HiroshiKawasaki Partner, Registered Posts: 6 Partner

    回答ありがとうございます。

    自分が作成した管理フォルダに自分でアクセスする必要があります。

    こちらの内容について確認させてください。

    今回、管理フォルダをコードレシピのoutputに指定する際に新規作成しましたがエラーとなりました。

    自分が作成したプロジェクト内で、自分で管理フォルダを作成し、自分でコードレシピを作成しnotebook起動しています。

    image.png

    提案いただいた共通プロジェクトを作成する場合も同様の問題が発生すると考えられますがいかがでしょうか。

    また、管理フォルダを自身のユーザで作成可能な方法があれば、教えていただけますでしょうか。

  • Tsuyoshi
    Tsuyoshi Dataiker, PartnerAdmin, Dataiku DSS Core Designer, Dataiku DSS ML Practitioner, Dataiku DSS Adv Designer, Registered Posts: 307 Dataiker

    ご連絡ありがとうございます。コメントをいただいた方法であれば、「管理フォルダを自身のユーザで作成」していることになります。

    今回、管理フォルダをコードレシピのoutputに指定する際に新規作成しましたがエラーとなりました。

    上記の状況で、ファイル書き込み時にエラーが発生するということですので、元のご質問に記載の「書き込み処理はライブラリ経由」のライブラリがDataikuを利用しているユーザーとは別の権限で動いているように見えます。

    上記の点はいかがでしょうか?この点はライブラリ側の仕様に依存しますので、まずはこの点をご確認いただければと思います。(Notebook上で実装されているコードを共有いただければ、もう少しコメントできるかもしれません。)

  • HiroshiKawasaki
    HiroshiKawasaki Partner, Registered Posts: 6 Partner

    ご確認ありがとうございます。

    notebook上で以下調査しましたので、ご確認いただけますでしょうか。

    image.png

    対象の管理フォルダをnotebook上から確認すると所有者、グループが dataiku となっていて

    notebook の実行ユーザは dssuser_h_kawasaki となっています。

    これまでのやり取りからは管理フォルダの所有者は dssuser_h_kawasaki となる認識ですがいかがでしょうか。

    また、複数ユーザが利用することを考慮すると、特定のユーザに権限を与えても他のユーザが利用できないことになるため、

    以下のPathの設定から管理フォルダの参照先を、Dataiku管理外にOSコマンドで作成したディレクトリに変更して、OSコマンドで権限を付与することで

    解決できるのではないかと考えましたがいかがでしょうか。

    image.png
  • Tsuyoshi
    Tsuyoshi Dataiker, PartnerAdmin, Dataiku DSS Core Designer, Dataiku DSS ML Practitioner, Dataiku DSS Adv Designer, Registered Posts: 307 Dataiker
    edited September 20

    追加情報のご連絡をいただきまして、ありがとうございます。以下コメントいたします。

    対象の管理フォルダをnotebook上から確認すると所有者、グループが dataiku となっていて
    notebook の実行ユーザは dssuser_h_kawasaki となっています。
    これまでのやり取りからは管理フォルダの所有者は dssuser_h_kawasaki となる認識ですがいかがでしょうか。

    はい。UIFを利用している場合、上記は想定通りの挙動と考えられます。

    また、複数ユーザが利用することを考慮すると、特定のユーザに権限を与えても他のユーザが利用できないことになるため、
    以下のPathの設定から管理フォルダの参照先を、Dataiku管理外にOSコマンドで作成したディレクトリに変更して、OSコマンドで権限を付与することで
    解決できるのではないかと考えましたがいかがでしょうか。

    はい。そのような対応でも良いと思いますが、私の環境では試せていないため、想定通りに動作するかどうか、実際にご検証いただけますと幸いです。

    その場合、Dataikuの「管理フォルダ」として登録されてはいますが、実態は「OS側で独自に権限を管理するフォルダ」になります。このため、機能要件・セキュリティ要件と整合性を保ちながら独自にフォルダ権限を管理・運用していただく必要がありますので、その点はご留意いただければと思います。

  • Tsuyoshi
    Tsuyoshi Dataiker, PartnerAdmin, Dataiku DSS Core Designer, Dataiku DSS ML Practitioner, Dataiku DSS Adv Designer, Registered Posts: 307 Dataiker

    度々のメッセージ失礼します。上記のコメントを見直したところ、あらためて確認したい点に気づきましたので、追加コメントさせていただきます。

    以下の点についてご教示いただけますと、私の方でも、もう少し調査できるかもしれません。お手隙の際に情報をいただけますと幸いです。

    1. 添付いただいた画像の中で「Permission denied」が発生しているディレクトリについて、別途OS側のコマンドで確認した場合、実際にはどのようなパーミションが設定されていますでしょうか?
    2. 今回ご利用中のDataiku環境は「インストール版、かつUIF適用済み」という認識で合っておりますでしょうか?また、Dataikuサーバのバージョンについてもご教示ください。
  • HiroshiKawasaki
    HiroshiKawasaki Partner, Registered Posts: 6 Partner

    回答遅くなり、申し訳ございません。

    1.の実行結果は以下になります。

    total 0
    drwxrwx---+ 2 dataiku dataiku 6 Sep 17 01:17 bBW1aoSC
    drwxrwx---+ 2 dataiku dataiku 6 Sep 17 01:57 urEgoDig

    2.は、構築担当に確認したところリンクの手順をベースとしたDataiku社のメンバーに作成いただいた手順に沿って構築しています。

    Dataiku Cloud Stacks for AWS — Dataiku DSS 14 documentation

    バージョンは14.1.0 になります。

  • Tsuyoshi
    Tsuyoshi Dataiker, PartnerAdmin, Dataiku DSS Core Designer, Dataiku DSS ML Practitioner, Dataiku DSS Adv Designer, Registered Posts: 307 Dataiker
    edited September 26

    追加情報のご連絡をいただきまして、ありがとうございます。

    今回実現されたい内容は「Dataiku Cloud Stacks for AWS(UIF適用済み)の環境において、DataikuのManaged Folderに対して、API経由ではなくPythonで直接ファイルを書き込みたい」であると、あらためて理解いたしました。その場合はやはり、上記のやりとりでご記載をいただきましたように、Dataikuの外部のOS側で権限を付け替えていただく必要があると考えています。

    ただ、ご連絡をいただきましたように「Managed FolderはDataikuの管理ユーザー権限で作成されるが、Jupyter NotebookはDataikuのログインユーザー権限で動作する」という点が製品の仕様通りの挙動であるかどうかに関しましては、念のためDataikuの技術サポート経由でご確認をいただいた方が確実であると考えております。(ご利用中の外部ライブラリに依存したエラーではなく、製品自体の仕様確認という観点であるため、お問合せは可能と考えられます。)

    お手数ですが、上記の点に関しましては、Dataikuの構成・バージョン等の情報も添えていただきまして、お客様・パートナー様に共有されているガイドラインに沿って、技術サポートへのお問合せを頂けますと幸いです。

Setup Info
    Tags
      Help me…