Pentahoで簡単にAWS S3にアクセスする方法

# 1. はじめに
Pentahoには各種クラウドサービスと連携する機能があります。
この記事ではPentahoを使ってAWS S3 へアクセスする方法を説明します。

Pentahoの使い方については、以下の記事を参考にしてください。
- [ETLツール Pentahoのトライアル版をインストールしてみよう！【Pentaho ファーストステップガイド インストール編】](https://qiita.com/ryota_akai/items/7f463268dc33cae025fa)
- [ETLツール Pentahoを使ってみよう！【Pentaho ファーストステップガイド PDI使い方編】](https://qiita.com/ryota_akai/items/7ebe22d1eb48ff123eda)

# 2. 対象読者
PentahoでETLを作成した経験があり、AWS S3へアクセスする方法を知りたい方

# 3. 事前準備
## AWSへの接続情報を格納
AWS への接続情報を <ユーザホームディレクトリ>/.aws/config および  <ユーザホームディレクトリ>/.aws/credentials に記載します。今回は`AWS ACESS KEY ID`と`AWS SECRET ACCESS KEY`を使用して接続します。設定例は以下の通りです。

```.aws/config (東京リージョンの場合)
[default]
region=ap-northeast-1
output=json
```

```.aws/credentials
[default]
aws_access_key_id=(ACESS KEY IDを入力)
aws_secret_access_key=(AWS SECRET ACCESS KEYを入力)
aws_session_token=(AWS SESSION TOKEN を必要に応じて入力)
```

# 4. AWS S3へのアクセス方法
PentahoからAWS S3にアクセスする方法はいくつかありますが、ここではPentahoのVFS (Virtual File System)機能を使ってアクセスします。
[Connecting to Virtual File Systems](https://docs.hitachivantara.com/r/en-us/pentaho-data-integration-and-analytics/10.2.x/mk-95pdia003/data-integration-perspective-in-the-pdi-client/connecting-to-virtual-file-systems)

## 4.1 AWS S3へ接続するVFS コネクションの作成
データ変換定義の左ペインの[ビュー]→[VFS Connetions]を右クリック→[New]を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4022493/a1aa9679-d84a-4f50-9437-693699df96ae.png)

表示されたダイアログに設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4022493/abb14e12-cad5-4e25-8345-8eae74202a56.png)
| # | 設定項目 | 設定内容 |
|:-:|:--|:--|
|1|Connection Name|名前を指定します。VFSのURLに使用しますので、短めな英数字をお勧めします。|
|2|Authentication Type|`Credentials File`を選択します。|
|3|Region|使用するリージョンを選択します。|
|4|Profile Name|credentialsファイルに記載しているプロファイル名を入力します。今回は`default`になります。|
|5|File Location|前述で作成したcredentialsファイルを指定します。|
|6|Root Folder Path|必須ではありませんが、`/<バケット名>` を設定しておくと特定のバケットにアクセス範囲を絞れます。|

ダイアログを閉じると以下のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4022493/0ec8b1cd-adef-4a99-b574-38ad99535635.png)

## 4.2 AWS S3からテキストファイルを読み込む。
今回はAWS S3に置いてある以下のテキストファイルを読み込みます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4022493/588fda77-b121-46b2-ae13-3c7fb4607732.png)

### [テキストファイル入力]ステップの配置
今回はTXTファイルの読み込みのために[テキストファイル入力]ステップ(*)を使用します。


(*)[CSVInput]ステップは[参照]ボタンでVFS Connectionsのダイアログが表示されますが、プレビューや実行ができず、対応していないようです。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4022493/6d702a77-e543-4c4a-a73e-6d955daf4394.png)


### ダイアログの設定
配置した[テキストファイル入力]ステップをダブルクリックしてダイアログを開き、参照ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4022493/9e55e851-1f3c-4ed3-bf23-9dfd18093c1b.png)

ファイル選択画面で[VFS Connection]を展開してファイルを選択して[Open]を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4022493/9bb6497a-d45f-4b7a-ad19-68d16758cf9b.png)

ファイル選択画面が閉じた後、[ファイルとダイアログ]に`pvfs://～`とVFSのURLが設定されています。
[追加]ボタンを押してリストに追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4022493/b8768f4d-3f3d-4724-a81e-1bf490f54bb0.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4022493/461b404d-82b1-435a-a967-e4fbf8a647b3.png)


このあとはファイルの内容に合わせて以下のような設定を行います。
 - [全般]タブで区切り文字を設定
 - [フィールド]タブで[フィールドを取得]を押しフィールドを自動設定

[プレビュー]を押すとプレビュー画面が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4022493/5cb1101f-94f8-455d-b7d7-a846978e2ac3.png)

## 4.3 AWS S3へExcelファイルを書き込む。
今回はAWS S3にExcelファイルを書き込みます。

### [Microsoft Excel Writer]ステップの配置
以下のように[Microsoft Excel Writer]ステップを配置して、[テキストファイル入力]ステップから繋ぎます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4022493/b9e17486-9d1b-450a-b275-485dc77bad9b.png)

### ダイアログの設定
配置した[Microsoft Excel Writer]ステップをダブルクリックしてダイアログを開き、参照ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4022493/b8e73ce5-173e-44c1-945d-bdddc6ed3c55.png)

ファイル保存先のダイアログが開くので[VFS Connections]を展開しディレクトリを選択、ファイル名を入力、[Save]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4022493/a0f6a4f8-4a80-47af-95a1-66176419ab3b.png)

[ファイル名]にファイルのURLが設定されるので、このまま[OK]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4022493/8304821a-75aa-47b7-9c9c-8f3c58f39a94.png)

## 4.4 データ変換定義の保存
メニューの[ファイル]→[保存]で保存先を指定できます。データ変換定義(ktrファイル)もVFSに保存できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4022493/dd8b8f61-ef59-48e0-8081-921dca7ad893.png)

## 4.5 実行
実行ボタンを押して実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4022493/0da3b415-579a-48fb-babf-4f69f630e149.png)

## 4.6 実行結果
実行するとAWS S3にファイルが書き込まれます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4022493/ef0ddc59-ee52-4224-b3f2-cba1feaf21e6.png)

# 5. まとめ
PentahoのVFS機能を使ってAWS S3にアクセスする方法を紹介しました。この機能を使用してGUIで簡単にAWS S3へ読み書きできることを体験してください。

# 6. 補足
## 6.1 VFSの定義情報の保存先
VFSの定義情報はユーザーのホームディレクトリの`.pentaho/metastore/pentaho` 以下に保存されています。(S3の定義は`.pentaho/metastore/pentaho/Amazon S3 Connection`以下に保存されています。)

## 6.2 プロキシ環境下からのAWS S3へのアクセス
Pentaho 10.2はAWS SDKを利用しているようでプロキシ環境下では以下のJavaプロパティを指定することでAWS S3にアクセスできるようです。
- http.proxyHost
- http.proxyPort
- http.proxyUser
- http.proxyPassword
- https.proxyHost
- https.proxyPort
- https.proxyUser
- https.proxyPassword

[Configure HTTP proxies](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/http-config-proxy-support.html)

# 他社商品名、商標等の引用に関する表示
- Amazon Web Services、AWS、Powered by AWS ロゴ は、Amazon.com, Inc. またはその関連会社の商標です。
- Excel および Microsoft は、マイクロソフトグループの企業の商標です。
- Pentahoは、Hitachi Vantara LLCの商標または登録商標です。
- HITACHIは，株式会社 日立製作所の商標または登録商標です。
- その他記載の会社名，製品名などは，それぞれの会社の商標もしくは登録商標です。