Edited at

DataSpiderサーバをテンポラリとして利用する方法

More than 1 year has passed since last update.


実現したいこと

ここでは、ある一連の処理を実現する際に発生するファイルの一時格納先をDataSpiderサーバとするような使い方を実現します。

その際に利用するプロトコルはHTTPを前提としているので、機能としては以下のようなものになります。

きっかけはAITalk(R)という音声合成を行うサービスで生成された音声ファイルを、Twilioから利用するときにファイルがWeb上に公開されていなければいけないという要件を実現するために考えた仕組みになります。


DataSpiderの仕様

DataSpiderのヘルプのHTTPトリガーに以下のような記載があります。

このディレクトリにjspもしくはhtmlファイルを配置することでエラーページを返却することができるのですが、ここをテンポラリとして利用します。

・フォワードできるページはJSPまたはHTMLです。

・JSPファイルは、$DATASPIDER_HOME/server/system/kernel/modules/webcontainer/META-INF/catalina/webapps/dataspider以下に配置してください。


スクリプトの実装


HTTP POSTメソッドでファイルをアップロードする


  1. 保存先の作成



    今回はtmp配下にstoreというディレクトリを作成しました。ここにファイルの実態が保存されます。

  2. マウント設定


    コントロールパネルマウント設定を開いて図のようにマウント設定を行います。

  3. スクリプトの作成(完成図)



    1. スクリプト入力変数としてバイナリ型文字列型の二種類を用意します。
      バイナリ型にはファイルの実体が格納され、文字列型にはPOSTされるファイル名が格納されます。
      ここで作成しているバイナリ型のスクリプト変数名がPOSTメソッドのマルチパートフォームで送信される際のパート名になります。そして、ファイル名を取得するにパート名_filenameとした変数を用意しておきます。


    2. ツールパレット変換基本マッピングをキャンバスにドラッグ&ドロップ


    3. ツールパレットファイルファイルシステムファイルシステム書き込みをキャンバスにドラッグ&ドロップします。


      入力元をmapping、ディレクトリを先ほど作成したstoreにします。

    4. マッピングの設定を行います。


      - filetypeには単一行文字列定数ロジックを利用してfile
      - pathには単一行文字列定数ロジックを利用して/tmp/store/${file_filename}※1
      - dataにはスクリプト入力変数のfile
      をそれぞれ設定したら、スクリプトは完成です。
      スクリプトを保存してプロジェクトをサービスとして登録します。
      ※1:${スクリプト変数名}はDataSpiderにおける入力フィールドの記述方法です。



  4. メニュー→マイトリガーから新しいHTTPトリガーを作成します。


    ここでは実行パスをstoreにしたので、POST先がhttp://{DataSpiderServer稼働OSのホスト名またはIPアドレス>:<DataSpiderServerのポート番号}/dataspider/trigger/storeになっています。

  5. 実行パスの設定が終わったら次へ進んで登録したサービスと紐付けます。


    あとは保存して終了です。


実行

生成されたURLに対してPOSTメソッドでファイルを送ってみます。

ここではDHCというChromeのプラグインを利用しています。




エクスプローラを開いて/tmp/storeを確認すると正しく取得できていることがわかります。


最後に

思いの外長くなったので「ファイルリストをHTTP GETメソッドで取得する」機能は別立てで記載することにしました。