HULFTとAmazon Web Services (AWS)を連携させてみた。

# はじめに
**「HULFT クラウドストレージオプションVer.8.5.4」** を使用した、AWSとのアップロードをやってみました。

本記事では、HULFTとAmazon Web Services (以下AWS)を連携させ、他のサーバAWS間でファイルの送受をする方法を紹介いたします。

HULFT クラウドストレージオプション（以下、HULFT CSOと表記します）は、従来の使い慣れたHULFTの設定作業や運用方法はそのままに、HULFTの連携先として「Amazon S3」や「Azure Blob Storage」、「Google Cloud Storage」へのファイル転送を実現します。

HULFTとAWSの基本的な知識は既に持っているという方向けの記事となりますのでご了承ください。

[•	HULFT](https://www.hulft.com/software/hulft-8)
[•	HULFT クラウドストレージオプション](https://www.hulft.com/software/hulft-8/hulft-cso)
[•	AWS (Amazon Web Services)](https://aws.amazon.com/jp/)

# 今回やること
HULFT CSOのクラウドストレージDBに登録した転送関連情報や認証情報などのデフォルト設定を使用し、HULFTからS3へファイル転送を行います。
通常のHULFTでは、集信ファイルは集信側HULFTで指定したフォルダに格納されますが、HULFT CSOを利用することにより、集信ファイルをクラウドストレージに格納する構成が実現できます。
HULFT CSOの構築パターンは環境に応じて複数ありますが、**今回は集信側ホストがオンプレミスとして構築されている構成とします。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/08ae64a7-8712-f6df-b55b-773d44181c00.png)
今回デモを行う環境では、ループバックによって集配信を実施するため、実際のデモ環境は下記のようにHULFTは１つになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/9937eeaa-789c-9feb-bc78-6e30fd6bd549.png)

# 連携するために必要なこと
HULFTとS3を連携するためには、以下の準備をする必要があります。

まずは環境の準備から行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/6001f6b2-97b0-f3e3-ecf6-0b3bf838aa79.png)
続いてファイル転送に必要な情報の登録を行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/1841d5a1-d21e-114c-cc2f-50e4a8b0aa78.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/9bacdbfe-7654-f2b9-9764-4a3b8afe1379.png)

## 環境準備（AWS側の設定）
S3にファイル転送するには、AWS側での設定が必要です。
取得した認証情報は、後ほどHULFT CSOに登録します。

**＜必要な設定＞**
・バケットの作成
・HULFT CSOからAWS S3に接続するための認証情報の取得
　（アクセスキーとシークレットキー）
・オブジェクトストレージ側のアクセス許可

### ①バケットの作成
ファイルをUpload/Downloadするための入れ物であるバケット作成します。
1. [AWSマネジメントコンソール] – [すべてのサービス] を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/afb6b22b-e21a-d442-3003-ffd11370411c.png)
2. [S3]を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/9a3f4432-f0a6-365a-ccd4-5b09cb074112.png)
3. [バケットを作成]を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/95f76c82-1d46-1a1f-0004-35673b105430.png)
4. バケット名「csodemo」を入力。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/dc04cc53-922b-4be4-83c6-ae1796c99591.png)
5. [バケットを作成]を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/e1f1488c-9fa8-bf19-3680-0b090208d5b4.png)
6. バケット **＜csodemo＞** 完成。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/26fd1265-8d5d-7277-fe84-2c1dc9fa2a98.png)

### ②認証情報（アクセスキーとシークレットキー）の取得
HULFT CSOからAWS S3に接続するために必要な認証情報（アクセスキーとシークレットキー）を取得します。
1. Amazon Web Servicesのコンソールの[ユーザー名]-[セキュリティ認証情報]を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/87177d80-d154-c51a-b79d-5949c91c0d8d.png)
2. [アクセスキーの作成]を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/ed45ea7d-a4e3-3a3a-ef43-234f9ad577d1.png)
3. 「アクセスキー」と「シークレットアクセスキー」をCSVファイルでダウンロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/fa8ab895-3452-1ea5-802d-0cdb59252705.png)

### ③オブジェクトストレージ側のアクセス許可
バケットへのアクセス許可が付与されている必要があります。
1. [AWSマネジメントコンソール] – [すべてのサービス] から[S3]を選択。
2. バケットを選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/f7547844-a9c0-92fd-de73-07c2cee14ff3.png)
3. [アクセス許可]を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/987e7185-ab64-461c-f0f3-b3d974017961.png)
4. [アクセスコントロールリスト (ACL)] でアクセス許可が付与されていることを確認。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/b26dcc47-d2a3-9bb0-1814-299cacce1b96.png)
他のアカウントにアクセス許可を付与する場合は、以下のファイルを参照ください。
・[アクセス権限設定例 (Amazon S3)](https://faq2.hulft.com/usr/file/attachment/MWsp4vzaDp7iIedm.pdf?attachment_log=1&object_id=31355&object_type=faq&site_domain=open_jp)

## 環境準備（HULFTのインストール）
ここからはHULFTのインストールをしますが、インストール方法については、下記記事と同様になります。
そのため、下記記事を参考にインストールしてください。
・[HULFTクラウドストレージオプションでAzure BLOB Storageにファイル転送してみた](https://qiita.com/sugimon/items/3a88c11a1b1d736a8659#%E7%92%B0%E5%A2%83%E6%BA%96%E5%82%99hulft%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)
（今回はループバックのため、集信側と配信側は同じHULFTを使用しています）

## 環境準備（HULFT CSOのインストール）
続いて、HULFTにクラウドストレージオプションをインストールします。
インストーラ（setup.exe）を実行し、セットアップウィザードに従ってインストールします。
※オプションを付けたいHULFTがデフォルトの値と違う場合は、対象のパスを指定して実行してください。
「Installation completed successfully.」というメッセージが出れば、インストールOKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/5a6772af-89e1-abca-4c70-38c2aca12ebc.png)
プロキシサーバを経由したファイル転送の場合は、下記記事とマニュアルを参考にシステム環境変数の設定を行ってください。
・[HULFTクラウドストレージオプションでGoogle Cloud Storageにファイル転送してみた](https://qiita.com/sugimon/items/d22971d26b40a26cc81a#%E7%92%B0%E5%A2%83%E6%BA%96%E5%82%99%E3%82%AF%E3%83%A9%E3%82%A6%E3%83%89%E3%82%B9%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B8%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)
・[HULFT8 クラウドストレージオプション マニュアル：システム環境変数の設定](https://www.hulft.com/help/ja-jp/HULFT-V8/COM-CLD/Content/HULFT_CLOUD/Install_W/InsW_S3_SystemVariable.htm)
（今回はループバックのため、集信側と配信側は同じHULFTを使用しています）

## 環境準備（配信ファイルの作成）
配信するファイルを準備します。
（今回は、C:\demofile\snd\test.txt）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/5496a4ae-a1ce-e6be-a54d-74c6fc4fe3c9.png)

## HULFT CSOの設定：ストレージ認証情報の登録
S3へのアップロード機能を利用するには、ストレージ認証情報の設定が必要です。
今回は個別設定ではなく、デフォルト設定として登録を行います。
1. コマンドプロントでplugins_utlsが配置されているディレクトリに移動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/3d602542-92ab-1d5e-e16c-2933ea0f09ed.png)
2. ストレージ認証情報のデフォルト情報登録コマンドでストレージ認証情報を登録します。
オプションで登録情報を記載します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/4ce0e40a-d453-4f8b-cfe6-5b2474902c51.png)
**・コマンド実行例**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/594867a2-b86c-88bb-e355-eb806d75ff17.png)
コマンドやオプションの詳細については、下記マニュアルを参考にしてください。
・[HULFT8 クラウドストレージオプション マニュアル：Amazon S3でのユーティリティ](https://www.hulft.com/help/ja-jp/HULFT-V8/COM-CLD/Content/HULFT_CLOUD/Cloud_Utility/Cloud_Utility_S3.htm)

## HULFTの設定：集信管理情報の登録
1. HULFTを起動し、集信管理情報を設定します。
（今回はループバックのため、配信側と同じHULFTを使用しています）
2. HULFT管理画面の[システム管理] - [集信管理情報] から設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/4c220f34-e5c3-364c-be92-246cf67b4376.png)
3. 各項目に情報を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/bae1b8b3-a58c-198f-2ba9-2ccd02ddb4aa.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/ca170de4-a8ed-0caa-189f-def4605ad2ca.png)
**クラウドストレージ用の集信管理情報には下記制限があるため注意が必要です。**
　・登録モード（TRANSMODE）― 「新規作成（N）」または「置き換え（R）」を指定してください。
　・異常時の処置（ABNORMAL）― 「復元（R）」を指定してください。
　・集信形態（RCVTYPE）― 「単一集信（S）」を指定してください。
　・世代管理（GENCTL）― 「しない（N）」を指定してください。

## HULFTの設定：配信管理情報の登録
1. HULFTを起動し、配信管理情報を設定します。
（今回はループバックのため、集信側と同じHULFTを使用しています）
2. HULFT管理画面の[システム管理]-[配信管理情報]から設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/6dc4ab4d-6282-4634-06af-6e95b9fcb287.png)
3. 各項目に情報を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/62b4396f-e8f2-a9e5-781f-7fe63719a009.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/894e8fd8-182b-1779-3f1d-0c8fb3da3e2d.png)

# 作成した管理情報で実際に転送してみる
作成した集信管理情報に対応する配信側HULFTからファイルを転送してみます。
1. [要求発行(R)] - [配信要求(S)] - [配信要求(S)] を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/7d85a461-bc91-dfce-7fa1-87185cd74c36.png)
2. ファイルID を入力し、［配信要求］ボタンを押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/5c778730-eb8c-c17e-2415-8ae7ae2f95b7.png)
3. 設定に問題がなければ、配信要求が正常に終了した旨のダイアログが表示され、終了します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/ab041689-45fd-06c4-8ac2-e01a6e046bf1.png)

配信側の履歴を確認してみましょう。
「完了コード」が「000000(00000)」になっていればHULFTの配信は正常終了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/515ecdcf-4243-1c9a-9686-010c315678d4.png)
集信側の履歴を確認。
「完了コード」は「000000(00000)」になっていればHULFTの集信は正常終了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/be6de62d-1b9e-f25d-0ea8-de1044146e00.png)
AWS側にファイルが届いているかも確認してみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/c1f84703-3f98-9060-1c26-b214d980f270.png)
集信管理情報で指定した「バケット/オブジェクト」のパスに無事ファイルができました。

# 転送エラー時について
転送エラーを起こした際の挙動について紹介します。
今回、「HULFT側の設定に問題がある場合」と「HULFT CSO側の設定に問題がある場合」の２つを試してみました。

**①S3にファイルを転送した後、再度同じファイルを転送してみる。（HULFT側の設定に問題がある場合）**
集信管理情報の登録モードを **「新規作成」** にしたまま、再度配信してみます。
集信側の履歴にエラーがでました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/5de9a008-1e0a-9420-7424-628a79f47611.png)
149560(00005)とコードが出力されました。
・完了コード[149560]は、下３桁をみて560となります。
・詳細コード[(00005)]は、すでに同名のオブジェクトが存在することを表しています。
　同名オブジェクトが存在する場合、「登録モード（TRANSMODE）」に“新規作成モード（N）”を指定できません。“置き換えモード（R）”を指定する必要があります。

**②認証情報を削除してみる。（Cloud Storage側の設定に問題がある場合）**
HULFT CSOの認証情報を登録していない状態でファイル転送をしてみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/5565f1a2-eb7a-cd3e-a2d2-f682c1bc375e.png)
こちらも集信側の履歴にエラーがでました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/ab050b92-71ab-95f3-df54-f73fa3cf08ba.png)
・完了コード[149560]は、下３桁をみて560となります。
・詳細コード[(00003)]は、環境変数が設定されていないことを表しています。

エラーコードは下記Webマニュアルにまとまっているようなので参考にしてみてください。
・[HULFT8 クラウドストレージオプション マニュアル：エラーコード・メッセージ](https://www.hulft.com/help/ja-jp/HULFT-V8/COM-CLD/Content/HULFT_CLOUD/ERR_Messages/Error.htm)

# 最後に
以上、**「HULFT クラウドストレージオプションVer.8.5.4」** を使用した連携について設定イメージなどの参考にしていただければと思います。