HULFT SquareでAmazon S3のバケットにファイルを格納してみた（比較編）

# はじめに
こんにちは。すぎもんです。😀
前回の記事 **[『DataSpiderでAmazon S3のバケットにファイルを格納してみた』](https://qiita.com/sugimon/items/b13395cfe5217e8f90c0 "DataSpiderでAmazon S3のバケットにファイルを格納してみた")** の通り、DataSpiderでやってみたことをHULFT Squareでもやってみました。
今回は、その違いについても触れていきます。

:::note warn
下記が**DataSpider Servista と HULFT Squareの比較**になります。
:::

|  | DataSpider Servista | HULFT Square |
|:-:|:-:|:-:|
| **サービス形態** | パッケージ製品 | iPaaS  |
| **導入サーバ** | 自身で環境を用意 | クラウド環境 |
| **拡張性** | サーバ環境に依存 | コンソール画面より自由にリソース割り当て可能  |
| **セットアップ** | インストール必要 | インストール不要 |
| **メンテナンス** | 自身で実施 | 定期メンテナンスあり |

本記事ではHULFT SquareとAmazon S3の連携、ファイルをアップロードする方法をご紹介いたします。

:::note info
**クラウドサービスであるHULFT Squareの特長**
1. すべてのデータをクラウドに格納しているため、管理を一元化しています。
1. 複数人で共有することが可能なため、効率よく作業を進めることが出来ます。
1. 必要な分から始められるため、無駄のない構築が可能です。
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/04d1011c-e1e0-3217-462b-83b82e0ebc20.png)

HULFT Squareについて紹介している、下記の記事とウェブサイトもあわせてご覧ください。
+ [HULFT Squareと外部通信する仕組みについて、AWS PrivateLinkなど含めて整理してみた](https://qiita.com/sugimon/items/75263b34a8fa5943fd21 "Qiita")
+ [DataSpiderでAmazon S3のバケットにファイルを格納してみた](https://qiita.com/sugimon/items/b13395cfe5217e8f90c0 "Qiita")

**■ HULFT Square 製品紹介ページ**

https://www.hulft.com/service/hulft-square 

**■ HULFT Square マニュアル**

https://www.hulft.com/help/ja-jp/HULFTSquare/homeindex.htm


# 今回やること
**[前述で紹介した記事](https://qiita.com/sugimon/items/b13395cfe5217e8f90c0 "DataSpiderでAmazon S3のバケットにファイルを格納してみた")** のように、DataSpiderを使用してAmazon S3へファイルをアップロードすることはできますが、設定の共有が難しい為複数人でのサービス開発には手間がかかります。そこで今回は、HULFT Squareを使ってみます。
HULFT Squareではワークスペースを使用することで、他のユーザーと様々な設定を共有することが出来るためスムーズな開発が可能となりました。
早速やってみましょう！

# 検証手順
<dl>
  <dt>＜AWSの設定＞</dt>
  <dd>①Amazon S3にバケットを作成</dd>
  <dd>②アクセスキーの作成</dd>
  <dt>＜HULFT Squareの設定＞</dt>
  <dd>③ワークスペースの作成</dd>
  <dd>④ストレージの作成</dd>
  <dd>⑤Integrateサービスの作成</dd>
  <dd>⑥プロファイルの作成</dd>
  <dd>⑦コネクションリソースの作成</dd>
  <dd>⑧プロジェクトの作成</dd>
</dl> 

:::note warn
**DataSpiderとの手順比較** は下記の通り。
:::

|Amazon S3 | DataSpider Servista| HULFT Square |
|:-:|:-:|:-:|
|①バケットを作成 | ― | ― |
|②アクセスキーの作成 | ― | ― |
| ― | ― | <font color="blue">**③ワークスペースの作成**</font> |
| ― | ― | <font color="blue">**④ストレージの作成**</font> |
| ― | ― | <font color="blue">**⑤Integrateサービスの作成**</font> |
| ― | ― | <font color="blue">**⑥プロファイルの作成**</font> |
| ― | ③グローバルリソースの作成 | ⑦コネクションリソースの作成 |
| ― | ④スクリプトの作成 | ⑧プロジェクトの作成 |

:::note info
**Point**
+ <font color="blue">**ワークスペースの作成**</font>
他のユーザーやグループと設定やデータを共有するために、目的に応じてワークスペースを作成します。
+ <font color="blue">**ストレージの作成**</font>
各ユーザーに割り当てられたストレージに、データを管理するためのディレクトリを作成します。
+ <font color="blue">**Integrateサービスの作成**</font>
HULFT Square Designer上でスクリプトを実行する為に必要な、Integrateサービスを作成します。
+ <font color="blue">**プロファイルの作成**</font>
コネクションなどのリソースを切り替える際に使用するプロファイルを作成します。
:::

# AWSの設定
**①Amazon S3にバケットを作成**と**②アクセスキーの作成**については、下記の記事を参考に行って下さい。
+ [DataSpiderでAmazon S3のバケットにファイルを格納してみた](https://qiita.com/sugimon/items/b13395cfe5217e8f90c0#aws%E3%81%AE%E8%A8%AD%E5%AE%9A "AWSの設定")

# HULFT Squareの設定
### ③ワークスペースの作成
+ **ワークスペースとは**
HULFT Squareでは､ワークスペースを使用して他のユーザーまたはグループと設定を共有することができます。
ワークスペースは目的やチームごとに作成できるため､使い分けることで効率的に作業を進めることができます。

:::note info
**ワークスペースを使用して設定を共有できる機能**
<dl>
  <dt>＜ストレージ＞</dt>
  <dd>・ディレクトリ</dd>
  <dd>・ファイル</dd>
  <dt>＜DATA INTEGRATION＞</dt>
  <dd>・プロジェクト</dd>
  <dd>・コネクション</dd>
</dl> 
:::

**[設定]>[ユーザー管理]>[ワークスペース]** を選択し、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/5bfb70d6-56ca-6477-6ecd-32a7a0fe0bde.png)
**[ワークスペースを作成]** を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/427acb80-b99c-2409-2c8d-5ef74ba3384f.png)
任意の名前を入力し、**[ユーザーを追加]** を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/d4932339-7732-cdb4-c2ca-31c537f71f93.png)
**[ユーザー]** に`自分のユーザー名`、**[権限]** に`読み取り`を選択し、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/8fd46e0b-df33-557d-4397-4b1ed6ddffe9.png)
**[次へ]** を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/1a68ba7f-3f64-ae36-cd03-183b1cf2f6a3.png)
サマリーを確認し、不備が無ければ **[完了]** を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/b3517e1a-555c-d60c-d4f5-4da55220a32c.png)
`hsq_test`があることを確認出来ました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/6c39239d-f0c0-c5e7-0b93-b0af3c1589f9.png)
**[ワークスペース]** に`hsq_test`を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/fdb38fff-7e36-6b00-bfe1-3706f670c451.png)

:::note info
**Personal** を選択すると自分だけのワークスペースで作業が行えます。
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/d23543fe-7b71-b64b-2160-2b79910cdfe6.png)

### ④ストレージの作成
+ **ストレージとは**
HULFT Squareで使用するデータを管理する、各ユーザーに割り当てられたクラウド上の空間のことです。

**[メイン]>[サービス]>[ストレージ]** を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/9dd9a806-d2c6-dfef-df75-4e974ca3657a.png)
**[新しいディレクトリー]** を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/0dede24a-827a-d7cd-a653-4c0043d5dbec.png)
今回は **[名前]** に **`TEST`** と入力し、**[追加]** を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/87a5914a-a5c0-7e7c-8a73-2775d62bc26d.png)
作成されたディレクトリの **「TEST」** を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/da63b65c-9991-4731-944e-dfaa5aa69d07.png)
**[ファイルをアップロード]** を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/d8c2083b-16ba-04cb-184f-3cf2288fb62c.png)
格納するためのファイルとして **「inputdata.csv」** を選択し、**[開く]** を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/574e34d3-702d-dcd6-1e91-aaecd235c812.png)
**`TEST`** に **「inputdata.csv」** があることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/bece8e7f-1956-b9c7-eed3-4155a18b67c4.png)
これで格納するデータの配置は完了です。

### ⑤Integrateサービスの作成
+ **Integrateサービスとは**
HULFT Squareでは、ETLプロセスなどでデータ連携を行う場合、データ連携プロセスの実行エンジンとしてHULFT Integrateサービスを用意する必要があります。
ジョブの実行や HULFT Square Designer上でスクリプトを実行する際に使用されます。

それではスクリプトを実行する際に必要な、Integrateサービスの作成を行っていきます。
**[メイン]>[サービス]>[HULFT Integrateサービス]** を選択し、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/f3e4742b-5c21-61d8-0173-9cfce1f6502a.png)
**[追加]** を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/95136364-b7ac-834a-f015-8e1ce98f9d8a.png)
今回は下記の通りに入力して **[次へ]** を選択し、サマリーの内容に問題が無ければ **[完了]** を押下します。

| 項目名 | 設定値 | 説明|
|:-|:-|:-|
|  名前 | New_HULFT_Integrate |HULFT Integrateサービスの稼働環境の名前を指定します。 |
| 割り当てるグループ  | Admin |このサービスの操作権限を付与するグループを指定します。 |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/0e0937af-8388-710e-6a2f-7effe408550c.png)

:::note info
グループの設定に関しては、**[設定]>[ユーザー管理]>[グループ]** から行ってください。
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/c48f71bf-1245-00d9-9b1e-0bf0221cee60.png)
最後に **「New_HULFT_Integrate」** が作成できていることが確認できれば完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/d0a48f61-41de-1e6d-f0f5-22ab12676b57.png)

### ⑥プロファイルの作成
+ **プロファイルとは**
プロファイルは、スクリプトの実行時にコネクションリソースの設定を切り替えるための機構です。
コネクションリソースにプロファイルを設定することにより、スクリプトを編集することなくデータベースなどの接続先を切り替えることができます。

プロファイルを作成していきます。
**[メイン]>[DATA INTEGRATION]>[プロファイル]** を選択し、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/b4c80d23-60fb-b1ca-3a1d-b0c4e605b9dd.png)
**[追加]** を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/40991b17-14c3-1215-e6ce-43cca1463923.png)
**[名前]** に`TEST_S3`と入力し、**[ユーザーを追加]** を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/b254c0a4-f4ca-a975-6376-0b64f61f94b7.png)
**[ユーザー]** に`自分のユーザー名`、**[権限]** に`読み取り`を選択して **[OK]** を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/e25cf7f1-e0bb-00ce-5585-3a9724f54feb.png)
そのまま **[次へ]** を押下して進みます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/faf0c617-6fed-5fc5-f7a3-5e9a080fff7e.png)
内容に問題が無ければ、**[完了]** を押下してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/ba3e2606-62e9-a5ab-e6e7-f49b91d402f8.png)
`TEST_S3`が確認できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/a0b5838d-23a3-bfb5-f7c5-80414b8c87ec.png)
これでプロファイルの作成は完了です。

### ⑦コネクションリソースの作成
+ **コネクションリソースとは**
データベースやメールサービス、FTPサービスなどのデータリソースへの接続設定です。
すべてのプロジェクトおよびスクリプトから使用できます。

**[メイン]>[DATA INTEGRATION]>[コネクション]** を選択し、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/94e3757d-d722-2ca0-12e8-abe2e00fc848.png)
**[新規追加]** を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/7676696a-ef73-60fa-0058-2371f98b5df8.png)
**「コネクターの種類」** に`Amazon S3接続`を選択し、**[次へ]** を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/18d2c0cf-6cc3-17de-21c3-ada759263f09.png)
**[名前]** に`Amazon S3接続 (デモ)`と入力し、**[次へ]** を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/d23e5b68-1542-b2b5-e909-70ce204651a9.png)
**[Access Key ID]** と **[Secret Access Key]** には、それぞれ②で取得した`アクセスキー`と`シークレットアクセスキー`を入力し、**[接続テスト]** を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/d59c3e74-d003-afbb-ccdf-bca30d437315.png)

**[Integrateサービス]** に⑤で作成した`New_HULFT_Integrate`を、**[リソース読み込みのためのプロファイル]** に⑥で作成した`TEST_S3`を指定して **[OK]** を押下します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/d3da476b-e7a5-38f7-94d2-2c1709c6832d.png)
接続テストに成功したことを確認します。👌
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/a9b60d50-1933-6244-c222-0aed2eb86fc5.png)
**[次へ]** を押下して進みます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/6a621d3f-11f8-055d-8ca3-434c3c69da1b.png)
プロファイルに先ほど作成した`TEST_S3`を選択し、**[次へ]** を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/d6d52e97-4c99-8146-6a16-7e90e89f51fb.png)
**「サマリー」** で内容を確認し、問題が無ければ **[完了]** を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/c3dee255-8012-a001-a7e6-36d641736324.png)
コネクションが作成されていることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/88937a01-c84c-49ef-2c3b-56a7d37ca399.png)

### ⑧プロジェクトの作成
+ **プロジェクトとは**
1つ以上の関連するデータ連携スクリプトを管理するために使用します。

**[メイン]>[DATA INTEGRATION]>[プロジェクト]** を選択し、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/a9813b57-98a8-e209-8bfb-ef0a6e14cf14.png)
**[プロジェクトを作成]** を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/99443570-0187-d750-f761-6c0160bd8ddc.png)
**[名前]** に先ほど作成した`S3_demo`を入力し、**[スクリプトを作成]** チェックボックスを選択します。
続いて **[スクリプト名]** に任意の名前`S3`を入力して **[次へ]** を押下します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/4a59ee41-9565-64d9-0fc7-ddd013e41a89.png)
**「サマリー」** で内容を確認し、問題が無ければ **[完了]** を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/f2c72395-dd06-87e7-7f94-0fd44c2de30a.png)
**[プロファイル]** に⑥で作成した`TEST_S3`を、**[Integrateサービス]** に⑤で作成した`New_HULFT_Integrate`を指定して、**[デザイナーを起動]** を押下します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/44b30b17-db46-d6ac-7aa1-c184c489dcbb.png)
続いて **[HULFTSquareDesignerを開く]** を押下します。

:::note info
デザイナーを起動するには**HULFT Square Designer.exe**のインストールが必要です。
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/56f0ce29-ce71-3c00-1934-5a784cc2db4d.png)
デザイナーの画面左に表示されているプロジェクトエクスプローラから作成したスクリプトの`S3`をダブルクリックして開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/4851ac87-7ad5-4532-427c-931d3ecf723b.png)
デザイナーの画面右に表示されているツールパレットから **[クラウド] > [Amazon S3] > [ファイル/フォルダ書き込み]** をスクリプトキャンバスにドラッグ&ドロップします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/6c3909f4-2132-dfb1-3933-bcf3c0b2fde1.png)
名前と必須設定の項目に下記の通り入力し、

| 項目名 | 設定値 | 説明 |
|:-|:-|:-|
| 名前 | amazon_s3_put | スクリプトキャンバス上での名前を入力します。 |
| 接続先 | Amazon S3接続 (デモ) | コネクションリソースを選択します。 |
| ローカルディレクトリー | /hsq_test/TEST | HULFT Square ストレージのディレクトリーパスを入力します。 |
| ローカルファイル/ディレクトリー名 | inputdata.csv | HULFT Square ストレージ上のファイル/ディレクトリーを指定します。 |
| Bucket名 | dssdemos3 | Bucketを指定します。 |
| フォルダパス | / | Amazon S3のフォルダパスを入力します。 |

**[完了]** を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/f2f8d67a-3a8d-c042-aff4-66c555997664.png)
最後に、**[Start]** から **[amazon_s3_put]** 、 **[amazon_s3_put]** から **[End]** までドラッグ&ドロップして線を引きます。
これでスクリプトの完成です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/a19eca68-fd8c-7e95-977d-8e209010eb44.png)
**[プロジェクトを開く]** ボタンを押下することで、スクリプトの編集が行えます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/a92bb82e-3faa-5d45-c323-d1f9b3400c42.png)

# スクリプトの実行
それでは実際に処理を実行して、結果をみてみましょう。
まずはツールバーから [スクリプトの実行] ボタンを押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/27d60c23-465c-91f0-5415-0c075fd2386e.png)
スクリプトの実行が成功したことが確認できます。👍
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/010efd3d-e774-b6b8-d256-9249ad9e904f.png)
バケットの`dssdemos3`に **「inputdata.csv」** があることが確認できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/79b237a2-c950-88b4-0a0b-643f34d60854.png)

# 最後に
HULFT Squareを使用したAmazon S3へのファイルの格納を紹介しましたが、いかがでしたでしょうか。

DataSpier x Amazon S3と比べて作業工程が多いですが、チームや役割ごとに使い分けが可能なため、結果として効率的に作業を進めることが出来るようになります。
今回はユーザーを一人しか設定しませんでしたが、それでも作業を行いたい情報へのアクセスのしやすさを実感しました。

:::note info
以下の画像からもワークスペースを**hsq_test**に絞り込んで作業すると、便利なことが分かります。
:::

+ **[ワークスペース]** が`未選択`の場合
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/0e18aaeb-6d8c-2cda-441b-ea783d7196ca.png)
+ **[ワークスペース]** が`hsq_test`の場合
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/8e05698e-8a5a-e7cd-6815-eaa07c477975.png)

このブログでは、今後も様々なTopics記事や接続検証等、皆さんの参考になるような記事を投稿していきたいと思います！
ここまで読んでいただきありがとうございました。それでは、また！👋