はじめに
UiPath Orchestratorの「ストレージバケット」機能は、AWS S3と連携するができるのですが、設定方法だったり、細かい仕様が分からなかったので、調べてみました。
ストレージバケットとは
ストレージバケットとは、Orchestratorのファイルストレージ機能で、様々なファイルをアップロード、ダウンロードすることができます。
Orchestratorの画面上からでも、Robotからでもファイルを操作することができ、ワークフローが参照するパラメータファイルの置き場に使用したり、アウトプットファイルの置き場としても使用可能です。
また、Action Centerフォームと連携もでき、フォームからファイルをアップロードした際の保存場所や、フォームに画像やPDFファイルなどを埋め込む際のデータの保存先としても使用できます。
プロバイダー
ストレージバケットは、Orchestratorサーバのストレージを使用できる他、AzureやAWSなどのパブリッククラウドの外部ストレージとも連携することができます。Orchestratorのオンプレとクラウドで使用できるプロバイダーは異なります(下の画像はオンプレ版です)。
オンプレの場合は、UiPath.Orchestrator.dll.configを修正し、使用可能なプロバイダーを有効化します。

S3を使うメリット
プロバイダーは、Orchestratorを使用する方が設定が簡単なのですが、S3など外部のマネージドサービスを使う方が優れているポイントもあります。
- ストレージの空容量を気にしなくていい
- バックアップが簡単
- 世代管理や自動削除などのルールを設定できる
つかうもの
今回は以下の使用して検証を行っています。クラウドは2022年2月時点のもの。
- UiPath Studio v2021.10.4(UiPath.System.Activities 21.10.3)
- UiPath Orchestrator Cloud
- AWS S3
ストレージバケットを設定する
手順1. AWSの設定
S3バケットの作成
S3のバケットを作成します。特に気にする必要もなく、普通に作ればいいです。

IAMユーザの作成
OrchestratorがS3へアクセスするための認証用アカウントを作成します。
今回のIAMユーザは、AWSマネージメントコンソールは使用する必要はなく、アクセスキーだけが必要なので、「アクセスキー・プログラムによるアクセス」にチェックを入れます。

ユーザが作成されるとアクセスキーIDとシークレットアクセスキーが発行されます。シークレットは外部に流出しないよう扱いには注意します。万が一、流出したら即時無効化してください。

アクセス元のOrchestratorに絞る(IPアドレスで制限を付ける)とか、特定のS3バケットしかアクセスできないなどの制約を追加したい場合は、別途IAMユーザにポリシーを追加します。
手順2. ストレージバケットの設定
Orchestratorのバケット追加画面にて、「Amazon S3」を選択し、必要な情報を入力します。

入力情報が間違っていたり、IAMユーザの権限が間違っていたりしてS3へ正常にアクセスできなかった場合は、ストレージバケット追加後、以下のようなエラーとなります。

ストレージバケットを使用する
パターン1. Robotからファイルを操作する
アクティビティツリー「Orchestrator」>「ストレージ」にあるアクティビティを使用します。

ファイルをアップロードするときは、「ストレージ ファイルをアップロード(Upload Storage File)」アクティビティを使います。

「A\Book1.xlsx」のようにパスを指定してファイルがアップロードすると、S3ではフォルダ「A」の中にファイル「Book1.xlsx」が保存されます。


パターン2. Orchestratorからファイルを操作する
Orchestratorの画面からもファイルのアップロード、ダウンロードができます。
ファイルをアップロードする場合は、「\B\Book1.xlsx」のようにプルパスを指定すると、S3にもフォルダ「B」が作成され、その中にファイル「Book1.xlsx」が保存されます。


ファイルアップロードまたは削除が失敗する場合
Orchestratorからファイルをアップロードしたり、削除したりする際、エラーになることがあります。

エラーが出た際は、S3のCORS設定を直すと解決します。オンプレOCを使っている場合は「AllowedOrigins」を使用しているOCのURLにします。

[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"PUT",
"DELETE"
],
"AllowedOrigins": [
"https://cloud.uipath.com"
],
"ExposeHeaders": []
}
]
パターン3. S3からファイルを操作する
S3からフォルダとファイルを作成してみます。
フォルダ「C」にファイル「Book1.xlsx」を入れると、Orchestratorには、フォルダ「C」とファイル「C\Book1.xlsx」が追加されました。


ロボット、Orchestratorからアップロードする方法と違い、フォルダだけのレコードがストレージバケットに作られてしまうみたいです(実質、ゴミのようなレコードが残ってしまいます)。Orchestratorからフォルダをダウンロードをしようとすると、当然エラーになります。削除もOrchestratorからはできませんでした。

さいごに
特定のS3バケットだけ使用できるようにしたりするには、IAMポリシーのカスタマイズなど更に勉強しないといけないことはありますが、デフォルトで使用するだけなら簡単に設定できました。
S3と連携することで、ログのS3保管などの機能が簡単に実現できそうだと思いました。
