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

  • 3
    いいね
  • 0
    コメント

実現したいこと

ここでは、ある一連の処理を実現する際に発生するファイルの一時格納先を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. 保存先の作成
    image
    今回はtmp配下にstoreというディレクトリを作成しました。ここにファイルの実態が保存されます。
  2. マウント設定
    image
    コントロールパネルマウント設定を開いて図のようにマウント設定を行います。
  3. スクリプトの作成(完成図)
    image
    1. スクリプト入力変数としてバイナリ型文字列型の二種類を用意します。
      バイナリ型にはファイルの実体が格納され、文字列型にはPOSTされるファイル名が格納されます。
      ここで作成しているバイナリ型のスクリプト変数名がPOSTメソッドのマルチパートフォームで送信される際のパート名になります。そして、ファイル名を取得するにパート名_filenameとした変数を用意しておきます。
    2. ツールパレット変換基本マッピングをキャンバスにドラッグ&ドロップ
    3. ツールパレットファイルファイルシステムファイルシステム書き込みをキャンバスにドラッグ&ドロップします。
      image
      入力元をmapping、ディレクトリを先ほど作成したstoreにします。
    4. マッピングの設定を行います。
      image
      - filetypeには単一行文字列定数ロジックを利用してfile
      - pathには単一行文字列定数ロジックを利用して/tmp/store/${file_filename}※1
      - dataにはスクリプト入力変数のfile
      をそれぞれ設定したら、スクリプトは完成です。
      スクリプトを保存してプロジェクトをサービスとして登録します。
      ※1:${スクリプト変数名}はDataSpiderにおける入力フィールドの記述方法です。
  4. メニュー→マイトリガーから新しいHTTPトリガーを作成します。
    image
    ここでは実行パスをstoreにしたので、POST先がhttp://{DataSpiderServer稼働OSのホスト名またはIPアドレス>:<DataSpiderServerのポート番号}/dataspider/trigger/storeになっています。
  5. 実行パスの設定が終わったら次へ進んで登録したサービスと紐付けます。
    image
    あとは保存して終了です。

実行

生成されたURLに対してPOSTメソッドでファイルを送ってみます。
ここではDHCというChromeのプラグインを利用しています。
image

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

最後に

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