2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

検証環境としての RFS インストール・フリー構築法 ~ 超簡単 ~

Last updated at Posted at 2023-06-06

はじめに

以前紹介した Tomcat9 と MySQL8 、Management Console(以降、MC)の構築を前提にして、今回は ロボット・ファイル・システム(以降、RFS)の構築と設定について紹介します。

本ブログは、BizRobo! v11.3.0.2 の利用を前提に解説します。

環境の準備

RFSの構築に必要なファイルやリソースを準備します。細かい調達方法は省略します。

RFS 構築のための調達リソース

# リソース 準備方法
1 rfs.war BizRobo!のインストールフォルダ配下の 📁WebApps から rfs.war をコピー

環境構築におけるパラメータ一覧

以下を前提として構築作業を実行。設定値は各自適当に判断してください。

パラメータ 設定値 補足
mc-path http://192.168.3.13:8080/mc RFS と連携する MC の URL を指定します。1
data-path C:/RFS RFS のルートフォルダを設定します。
RFS の URL http://192.168.3.13:8081/rfs MC からアクセスする RFS の URL を設定 します。

構築する環境のサーバー構成

ちょっとした検証作業用に、単体のPC(local IP:192.168.3.13)へ一式セットアップします。
MC も RFS も Tomcat 上で動作するシステムなので、同居させてもいいのですが、 RFS に絞った検証をする際に同居環境がノイズにならないよう、下記の通り独立したWebコンテナ上に構築します。

image.png

単一端末上に複数の Tomcat を起動する場合、待ち受けポートについてはバッティングしないように 80808081 に変更しますが、それとは別にシャットダウンポートとして利用されている 8005 についても 8006 に変更します。(起動エラーとなるため)

構築環境のフォルダ構成

📁 apache-tomcat-9.0.x
 ├─ 📁 webapps     # TomcatにデプロイするWebアプリケーションが格納されています。
 │  ├─ 📁 rfs
 │  │  └─ 📁 WEB-INF
 │  │     └─ 📄 web.xml
 │  └─ 📄 rfs.war
 ├─ 📁 logs  
 │  └─ 📄 rfs.log
 :

環境構築の流れ

RFSサーバを構築するには以下の3ステップを実施します。

  1. アプリケーションファイルのサーバへの配置
  2. web.xml の設定
  3. MC の設定

構築手順

サーバ状態の確認

Tomcat9 サーバーが停止していることが望ましいですが、WEB-INF/web.xml を編集するだけであれば Tomcat は自動的に変更を感知して設定ファイルをリロードするので、起動したままでも構いません。

conf/context.xmlWatchedResource として設定されているファイルは Tomcat が自動的にその変更を監視しつつ、変更を感知したら再読み込みするため、サーバ自体の再起動は不要です。

conf/context.xml
<!--The contents of this file will be loaded for each web application-->
<Context>

    <!--Default set of monitored resources. If one of these changes, -->
    <!--the web application will be reloaded.                        -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource></Context>

1.Web Application aRchive(war)ファイルの配置

📁 webapps 配下に 📄 rfs.war を配置し、ファイルを解凍/展開します。


2.web.xml への必要事項設定

展開した 📁 WEB-INF 配下の 📄 web.xml をエディタで開き、以下の通り編集します。

webapps/rfs/WEB-INF/web.xml
<?xml version="1.0" encoding="utf-8"?>
:
    <servlet>
        <servlet-name>RFSSessionManager</servlet-name>
        <servlet-class>com.kapowtech.robotfilesystem.SessionManager</servlet-class>
        <init-param>
            <param-name>mc-path</param-name>
-            <param-value>http://url-for-mc</param-value>
+            <param-value>http://192.168.3.13:8080/mc</param-value>
        </init-param>
        <init-param>
            <!-- the path to where local data is stored -->
            <param-name>data-path</param-name>
-            <param-value>/data</param-value>
+            <param-value>C:/RFS</param-value>
        </init-param>
        <init-param>
            <!-- the create local folders for static shares -->
            <param-name>create-folders</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            :
            <param-name>allow-absolute-paths</param-name>
            <param-value>false</param-value>
        </init-param>

    </servlet>
:

その他の項目

  • create-folders
    true(default)とした場合、初回ロボット実行時に data-path に指定したフォルダが自動生成され、併せて MC のレポジトリで設定した各ロボットファイルシステムのフォルダも生成されます。2

  • allow-absolute-paths
    false(default)とした場合、パス で指定できる領域が data-path を頂点としたその配下に制限される代わりに、MC のレポジトリで パス の値を相対パスで指定可能になります。
    true とした場合、MC のレポジトリに設定する パス の値に C:\Other\外部といった絶対パスを指定して、data-path 外の場所に連携フォルダを指定することが可能になります。
    image.png

RFSで連携する先が外部のFTPサーバ(ftps://ftp.box.com:21など)やネットワークドライブ(\\san-server\remote-rfs など)の場合 allow-absolute-pathsfalse のままで問題ありません。


Tomcat の開始

Tomcat を起動して RFS が動作していることを確認します。

📁 logs 配下に 📄 rfs.log ファイルが生成されていればOKです。


3. MCの設定

MC の 設定 > 一般 > ロボット ファイル システムサーバー 画面から、ロボットが接続する RFS サーバのURL を設定します。

image.png

その他の環境設定

オンラインヘルプによると ロボット ファイル システムにアップロードできるファイルの最大サイズは 100 MB です。3 が、RFSサーバローカルでの移動であれば、「400MB強のファイルをロボットの中に読み込み、そのまま別のRFSフォルダを指定して書き出す」ことができたので、この制限がどこに聞いてくるのかはちょっと不明です。4

また、RFSは Tomcat上で動作する仕組みなので、同様に maxPostSize の設定が必要なのかな?とも思いましたが、server.xml 内の値を 1KB に設定してみても、10MB以上のファイルを RFS で読み書きできたので、設定ファイルの編集は必要ないでしょう。(マニュアルにも記載なかったので)

server.xml
<Connector port="8081" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8444"
           maxParameterCount="1000"
           maxPostSize="1024" … ★
           />

ロボットファイルシステムのレポジトリ設定

RFS の環境設定が完了したので、具体的にロボットから利用するためのレポジトリ設定をしていきます。

RFS 自体はファイルアクセスのための窓口にすぎず、実際にどの範囲で、どこにアクセス可能かについては、プロジェクトごと・ロボットごとにリポジトリを設定することで、以下のように権限のあるロボットだけが安全に指定のリソースにアクセスできるようになります。
image.png
まぁ、このあたりの交通整理が面倒臭いと言われがちではありますが、一定の規模を超えたロボットの基盤を運用するのであれば、必須の機能だと思います。
image.png
それでは、以下順番にレポジトリを設定していきます。

  • 一般情報:RFSのリソース定義情報一式
  • ロボットマッピング:RFS リソースにアクセス可能なロボットの指定
  • 認証されたアクセストークン:RFS リソースにアクセス可能なロボットや環境の設定

ロボットマッピング認証されたアクセストークン については、どちらかを設定すればよく、両方設定する必要はありません。
また、一般情報 の設定において プロジェクト範囲 のチェックボックスを「ON」にすることで、指定したプロジェクト内の全ロボットから当該 RFSリソースにアクセスが可能となります。

一般情報の設定

以下の情報を設定します。
image.png

項目 内容
プロジェクト プロジェクトを指定します。
プロジェクト範囲 RFSを指定したプロジェクト内の全てのロボットと共有する場合にチェックを入れます。
ファイルシステム名 任意の名称。ロボット内から指定する際に使用する文字列。
パス ファイルシステム上の指定場所 。 data-path で指定したパスを起点に指定します
ユーザー名 リモートドライブやFTPサーバなど、指定した パス へのアクセスに認証が必要な場合に設定。(通常は空でOK)
パスワード 同上

ロボットマッピング

指定したプロジェクト内のロボット一覧の中から、当該 RFS へのアクセスを許可するロボットを選択します。
image.png

認証されたアクセストークン

レポジトリ > ロボット から MC に登録されたロボットの「リソース アクセストークン」をコピーして、アクセスコードを設定します。
image.png
もしくは、ロボット開発中に DS から RFS へアクセスする場合には、DS のメニューバーから ヘルプ(H) > 製品について … を選択し、表示されるダイアログ内の「Design Studio アクセストークン」の中の文字列をコピーしてアクセスコードを設定します。
image.png

レポジトリに登録されたロボットから個別に「リソース アクセストークン」を取得しますが、アクセストークンはロボットの中身が少しでも変更されると変わってしまいます。

ロボットの不正な入れ替えやなりすましを防ぐための重要なセキュリティ機能であり、使いどころも絞られてきます。

具体的には プロジェクト外のロボットにアクセスを許可する場合 ですね。RFS自体はプロジェクト単位で管理されるものですが、部署間連携でロボットの処理済みファイルをプロジェクト間でやり取りする場合などは担当窓口(ロボット)を固定したうえでファイルのやり取りをするという方法がセキュリティ的にも安全です。

image.png

ロボットからの利用設定

ロボットから RFS を利用する形態には 2 つの種類があります。

  1. サーバ local(サーバ上)で集中処理をする
  2. DAS (クライアント端末上)で分散処理をする

本項ではロボットからの疎通確認が目的なので、より簡単に試せる サーバ local からの処理を実施します。
image.png

ロボットファイルの作成

  1. ロボットファイルを開き、ファイルシステム > ファイルの読み取り を選択します。
  2. ファイル アクセス を 「RFS 経由」に変更し、ファイル名に MC のリポジトリで設定した 名前 と読み込む ファイル名/(スラッシュ)を区切り文字として設定します。
  3. 変数 には バイナリ型 の変数を指定します。

必要なデータを設定したら、ステップオーバーし、変数にファイルがバイナリ値として設定されれば完成です。
image.png

設定値は正しいはずなのに以下のようなエラーが出る場合、DS が向いている MC の設定が間違っている可能性があります。

image.png
環境によっては複数の MC を DS 内に設定している人もいると思います。メニューバーから 設定 > Design Studio の設定(S)… を選択し、Management Consoles タブから RFS の設定がしてある MC を選択します。
image.png
プライマリとして使用」にチェックを入れ、「OK」ボタンでウィンドウを閉じます。

これにより DS から RFS にアクセス可能になります。

まとめ

セキュリティの重要性が叫ばれている昨今、エンタープライズ用途におけるBizRobo!のいち推し機能はRFSだと思っています。何気にRFSを通じたファイルのやり取りは全て rfs.log 内に監査ログとして記録されます5、運用者目線ではログが残るというのは大きいですよね。

運用観点で RFSは有用な仕組みですが、ロボットを作るだけの人にとっては「単なる面倒ごとの一つ」に映ってしまうかもしれません。

とはいえ、ロボットの利用規模が増えるほど外部ファイルのロボットからの取り扱いは複雑になり、アクセス権限含めどこか一か所で管理したいなぁ。。と思うようになると思います。 net use を前提とした開発も大変でしょう。

導入当初から必要な機能ではないだけに途中から導入しようとすると最初は苦戦するとは思いますが、是非長い目で見て有用なものと考え、徐々にでも使ってもらえればと思います。

  1. 自己署名証明書を使用した HTTPS 経由の Robot File System へのアクセスはサポートされていません。

  2. false にした場合、MC のレポジトリに設定したパスのフォルダが生成されないため、手動で作成しない限りはロボット実行時にエラーになります。敢えてレポジトリからの登録を制限したい場合以外に必要性は感じられません。

  3. その後開発チームに確認したところ、現在(少なくとも v11.3.0.2)においてはこの制限は撤廃しているということで、今後参照のオンラインドキュメントに関しても修正していく.とのことでした。

  4. ちょっとした検証の目的で、BOX に対して FTPS接続で 以下400MB強のファイルをRFS経由でアップロードしてみましたが、問題なく処理できてしまいました。
    image.png
    ちなみに、BOXへのftps接続には 990 ポートと 21 ポートが用意されていますが、RFSにおいては 21 ポートを利用してください。その際、間違ってプロトコルを ftp:// にしないよう気を付けましょう。 ftps:// にしないと暗号化されません。

  5. ログの例(以下)

    rfs.log
    2023-06-06 08:47:51 INFO  SessionManager:140 - Session created 559BCB7FF281FD682128EFAF5BADFBA5
    2023-06-06 08:47:51 INFO  SessionManager:140 - Session created 3747144CB990571C70D493B56A470648
    2023-06-06 08:47:51 INFO  SessionManager:329 - File system session '3747144CB990571C70D493B56A470648' created
    2023-06-06 08:47:51 INFO  RFS:39 - [Audit] OK Read C:\RFS\週報\aa.msi: main_BridgePJ (3747144CB990571C70D493B56A470648)
    2023-06-06 08:48:00 INFO  RFS:39 - [Audit] OK Write C:\RFS\共有レポート\bridge.msi: main_BridgePJ (3747144CB990571C70D493B56A470648)
    2023-06-06 08:48:00 INFO  SessionManager:359 - Explicit deletion of session 3747144CB990571C70D493B56A470648
    2023-06-06 08:48:00 INFO  SessionManager:151 - Session deleted 3747144CB990571C70D493B56A470648
    2023-06-06 08:49:50 INFO  SessionManager:151 - Session deleted 559BCB7FF281FD682128EFAF5BADFBA5
    
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?