はじめに
AWSの普及に伴い、システム開発・運用の様々な場面で開発や運用が発生しているかと思います。
伴いRPA化したい要望も多くあるかと思いますが、当記事ではUiPathが用意しているAmazonWebServicesパッケージを使ってS3バケットにアクセスするごく簡単なサンプルワークフローをご紹介します。
前提事項
AWS側の設定詳細については、当記事で詳細を触れず、以下が事前に準備されていることを想定しています。
- S3バケットが作成されていること。
- IAMユーザー発行およびそれに紐づいてアクセスキー作成がされており、アクセスキーID と シークレットキー を控えてあること
- 上記IAMユーザーに該当S3バケットアクセスに必要な権限ポリシーが付与されていること
AmazonWebServicesパッケージの利用
当記事で利用しているパッケージバージョン:UiPath.AmazonWebServices.Activities 2.5.0
今回実装する流れ:S3バケットに保存されているファイルを端末ローカルにダウンロードする
↓ ↓ ↓
0. ワークフロー全体像
AmazonWebServicesパッケージは、既定ではStudioに入っていないため、Studioの「パッケージを管理」メニューより予めインストールしておきます。
ワークフロー全体像は以下のようになっており、「1. 各設定の準備」と「2. S3バケットにアクセス」部分に分けて紹介します。
1. 各設定の準備
複数代入 アクティビティを用いて必要な情報を変数に設定しておきます。
変数 | 説明 | 備考 |
---|---|---|
アクセスキーID | IAMユーザーのアクセスキーに紐づいたアクセスキーID | |
シークレットキー | IAMユーザーのアクセスキーに紐づいたシークレットキー | |
シークレットキー_SecureStr | シークレットキー変数を用いたSecureString型オブジェクト | (※)型変換の記述は表の下に記載 |
AWSリージョン | 該当のリージョンを設定 | AWSリージョン一覧 |
バケット名 | アクセスしたいS3バケット名 | |
ダウンロードフォルダー | ダウンロード先フォルダー |
(※) サンプル:String型のSecretKey変数を元に、SecureString型に変換
(New System.Net.NetworkCredential("", シークレットキー)).SecurePassword
2. S3バケットにアクセス
アマゾンウェブサービススコープ
「アマゾンウェブサービススコープ」アクティビティで認証情報を設定し、スコープ内で各アクティビティを実装していきます。
バケットを取得
S3バケットにアクセスするため、バケット名を元にAWSS3Bucketオブジェクトを取得します。
繰り返し(バケットの各オブジェクト)
S3バケット内の複数ファイルをアクセスするため、「繰り返し(バケットの各オブジェクト)」アクティビティを利用します。
対象のS3オブジェクト1つずつを s3Objectインスタンスとして処理をします
繰り返し内:オブジェクトを取得
「オブジェクトを取得」アクティビティで、各s3ObjectのKeyName(名前)を元にAWSS3Bucketオブジェクトを取得します。
繰り返し内:オブジェクトファイルにダウンロード
「オブジェクトファイルにダウンロード」アクティビティで、s3Objectとして保存されている対象オブジェクトをダウンロードし、端末ローカルにファイルとして保存します
なお、ファイル名はS3に保存されたファイル名(s3ObjectのKeyname)とします。
参考
各アクティビティに必要なパーミッションは以下のリンクで参照できます
https://docs.uipath.com/ja/activities/other/latest/it-automation/aws-permissions-list
当記事ではS3バケットにフルアクセスのある FullS3Access ポリシーを該当IAMユーザーに付与していますが、実運用では必要に応じて権限を適宜制限ください。
おまけ:Orchestratorのアセット機能でよりスマートに
上述では、個人が簡単に始められるようシンプルなワークフローをご紹介してきました。
ただし、複数人でのRPA利用や企業内の展開などにおいては、認証情報をより安全に共有しやすくしたいニーズがあるかと思います。Orchestrator環境があれば、その一ソリューションとしてOrchestratorのアセット機能を利用して実現することができます。
Orchestratorアセットの設定
当記事では、Cloud版Orchestratorのアセット機能を使っていきます。また、Studioが対象Orchestratorに接続されていることを前提としています。
Orchestratorの対象フォルダーから、[アセット]メニューを選択して、[アセットを追加] します
種類=Credentialを選択することで、認証情報「パスワード」の値が安全にSecureStringとして保存されます。ユーザー名=アクセスキーID、そしてパスワード=シークレットキーを設定します。
ワークフローから認証情報を取得
上述でご紹介したワークフローに「認証情報を取得」アクティビティを加えて、準備されたアセットを取得し、S3にアクセスします。
「アクセスキーID」と「シークレットキー_SecureStr」変数を代入で設定するのではなく、「認証情報を取得」アクティビティの出力として設定します。なお、アセットが用意されているOrchestratorの対象フォルダーにStudioが接続されている必要があります。
この実装によって認証情報そのものを各ワークフローで扱う必要がなくなり、より安全に複数人での開発でも展開しやすなります。
おわりに
いかがでしたでしょうか?
今回は簡単なアクセス方法をご紹介しましたが、AmazonWebServicesパッケージでは、以下のように豊富なアクティビティが用意されているので、必要であれば確認してみてください。
https://docs.uipath.com/ja/activities/other/latest/it-automation/aws-activities
UiPathのSaaSクラウドを利用されている方は、当記事で紹介した方法に加え Integration Service の Amazon Web Services コネクタ で管理されるコネクションも使用できるようになりました。
Integration Serviceを利用すれば、認証されたコネクタを複数ロボット・ユーザーに共有するなどより楽にRPA実装をすることができます。
RPAを上手に活用してより生産的な生活をしていきましょう!