HULFTクラウドストレージオプションでGoogle Cloud Storageにファイル転送してみた

#はじめに
こんにちは。よろず相談担当　すぎもん:yum:です。

前回、HULFTのクラウドストレージオプションを使用してAzure Blob Storageへのファイル転送をやってみたのですが・・
↓前回記事
※[AzureのBLOBストレージにファイル転送してみた](https://qiita.com/sugimon/items/3a88c11a1b1d736a8659)
※[AzureのBLOBストレージへのファイル転送で、HULFTの動的指定を使ってみた。](https://qiita.com/sugimon/items/ba0866be832a734feec5)

そういえばこのクラウドストレージオプションって、マルチクラウド(AWS S3, Azure Blob Storage, Google Cloud Storage)に対応しているんじゃない・・・。じゃあ～Azure以外もやってみよう。。ということがきっかけ？で、他のクラウドストレージへのファイル転送も簡単にできるのか実際に試してみました。

#今回やること
今回は、Google Cloud Platformをターゲットとして、HULFTから実際にCloud Storageにファイル転送をしてみます！
また、前回Azureでやってみて気になった転送失敗時の出力がどうなるのかやってみます！


#システム構成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/7f653c33-8c5d-94de-f7a5-d04ff6fa472d.png)



#環境準備（Google Cloud Platform側の設定）

Cloud Storageにファイル転送するには、Google Cloud Platform側での設定が必要です。
＜必要になる設定＞
**・サービスアカウントの作成**
**・バケットの作成**
**・バケット権限の付与**


それぞれについて、設定をしていきましょう。
####**①サービスアカウントの作成**
 1.　Google Cloud Platformコンソールから[サインイン]します。
 2.　[IAMと管理]から、[サービスアカウント]を選択します。
 3.　[サービスアカウントを作成]からサービスアカウントを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/69ab9a6c-5463-88f9-c28d-6d34bee85a48.png)
 
私は、キーのタイプをJSONにして出力させました。作成したJSONファイルは、後に環境変数で使用します。

####**②バケットの作成**
 1.　ナビゲーションメニューから[Storage] - [ブラウザ]を選択します。
 2.　[バケットを作成]から、バケット名を入力します。
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/24c413bd-fab4-df6c-5788-10a1b9d69c77.png)

ダイアログ通りに進めていくことで、簡単に作成ができます。今回は、「sugimongss-bucket」というバケット名にしました。

####**③バケット権限の付与**
 1.　対象のバケットを選択し、[バケットの権限を編集]を選択します。
 2.　[メンバーを追加]フィールドからバケットにアクセスが必要なID[サービスアカウント名]を入力します。
 3.　[役割を選択]から、付与する権限を選択し[追加]します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/d2bb1ed2-ca86-b3eb-2c0b-0050e85e1a21.png)

私は、作成したバケット(sugimongss-bucket)から該当の権限があるものを付与して実施しましたが、
IAM管理から必要な権限（下記）があればそれを付与してもらうことも可能です。
必要になる権限は、以下の通りとなりますので参考にしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/b8758e2a-7a67-4d90-b63a-58f2a76558be.png)

ここまでで、Google Cloud Platform側の設定は完了です。

#環境準備（HULFTのインストール）

ここからはHULFTのインストールをしますが、インストール方法については、前回のAzure Blob記事と同様になります。
そのため、下記記事を参考にインストールしてください。
※[AzureのBLOBストレージにファイル転送してみた](https://qiita.com/sugimon/items/3a88c11a1b1d736a8659)


#環境準備（クラウドストレージオプションのインストール）

続いて、HULFTにクラウドストレージオプションをインストールします。
インストーラ（setup.exe）を実行し、セットアップウィザードに従ってインストールします。
※オプションを付けたいHULFTがデフォルトの値と違う場合は、対象のパスを指定して実行してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/ea6c8d52-653c-bfb5-d46f-915069b41ec2.png)

「Installation completed successfully.」というメッセージが出れば、インストールOKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/27b1772a-bb64-3cdc-3c96-cfa18c11f8a4.png)

**■システム環境変数の編集**
Cloud Storageへのアップロード機能を利用するには、システム環境変数の設定が必要です。
※環境変数は、［スタート］-［設定］で検索してシステム環境変数設定画面を開いてます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/f666d21e-8fff-d376-579e-cb91e8b41ee5.png)
以下のシステム環境変数を事前に設定します。
　　・GOOGLE_APPLICATION_CREDENTIALS＜Googleアプリケーション認証情報＞
　　※Googleアプリケーション認証情報は、出力したJSONファイルのパスを指定します。（フルパス）
  　(例). C:\key\test.json
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/de670696-c83c-7c30-e41e-64e0a147e388.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/0c9aae07-8124-4cea-90a0-eb7e16bcbeed.png)



**■OSの再起動**
システム環境変数を新規で作成したので、OSを再起動します。

#HULFTの設定（ファイル転送するために）

**事前準備**
　　・通信時に名前解決できるように、OSのHOSTSファイルに今回使用するホスト名を追記。
　　（例）　IPアドレス　　HULFT-LOOP

　　・配信するファイルを準備。（今回は、C:\hulft\snd\gcstest.txt）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/d09589e6-aca0-70de-7b8e-61267e958068.png)


**■配信側HULFT（HULFT-LOOP）の設定**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/ea8e78cf-ef04-c1b5-28d7-2d8114adbfd7.png)

HULFT管理画面の［システム管理］-[詳細ホスト情報]から設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/59cb290d-041f-478d-ee7b-5827796db55a.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/acde9b63-d305-5343-7907-b23b4af767c6.png)
HULFT管理画面の[システム管理]-[転送グループ情報]から設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/67a25110-08f9-4cc3-2e0e-35f00c93f12a.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/b19e4603-cf8e-96d4-9d3c-e62d0db1a236.png)
HULFT管理画面の[システム管理]-[配信管理情報]から設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/048b6f9f-83e8-f39d-082d-b423be627dcc.png)


以上で、配信側の設定は完了です！


**■集信側HULFT（HULFT-LOOP）の設定**
引き続き、集信側HULFTの設定をします。
※集信側HULFTと言っても今回、HULFT1台のループバック転送で試していますのでホスト名：HULFT-LOOPに対して情報登録を実施します。
[詳細ホスト情報]は、配信側の設定で設定済みのため[集信管理情報]を設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/db91f538-4668-6df3-56ab-6ecb35a36bd0.png)
HULFT管理画面の[システム管理] - [集信管理情報]から設定します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/973a8a8e-452d-89f3-4e14-8893aa368ef6.png)

集信ファイル名を「gs://オブジェクト名」の形式にしているのが注意点です！
また、現仕様では、異常時の処置は「復元」、集信形態は「単一集信」、世代管理は「しない」のみ選択可能です。
登録モードは、「新規作成」「置き換え」のみ選択可能です。


これで準備が整いました。
他のクラウドにデータ転送する場合も集信管理情報のファイルパス記載を[gs://]変更するだけでしたね。。HULFT側では特に意識せずとも設定ができますね。

#Cloud Storageにファイル転送してみる
では、実際にファイル転送してみます！
HULFT管理画面の[システム管理]-[配信管理情報]から、登録したファイルID（GCS01）を右クリックして、［配信要求］を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/84b87f20-a35a-9ea4-d39e-0891b46752f2.png)
配信要求ダイアログが表示されるので、［配信要求］ボタンを押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/31eb88ff-f065-b5a6-a111-c9a7ed056b49.png)


設定に問題がなければ、配信要求が正常に終了した旨のダイアログが表示され、終了します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/0066ea54-f19a-24e0-b343-6a4ef05bf88d.png)



配信側の履歴を確認してみましょう。
「完了コード」が「000000(00000)」になっていればHULFTの配信は正常終了です
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/44db4a59-c9dc-61be-4dfa-3321be29ee26.png)

集信側の履歴を確認
「完了コード」は「000000(00000)」になっていればHULFTの集信は正常終了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/eb42ca70-2b41-748c-478b-05d35585cd59.png)

集信側も問題なさそうですね。

Cloud Storage内のファイルを確認
gcstest.txtがアップロードされていることが確認できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/7e3ef159-e78a-9dfa-d63a-32630ec7746e.png)


#転送エラー時の挙動は・・・

転送エラーを起こした場合、履歴はどのように出力されるのでしょう・・・。
試すに辺り、「HULFT側の設定に問題がある場合」と「Cloud Storage側の設定に問題がある場合」の２つを試してみました。

###①集信管理情報のパラメータを不正にしてみる（HULFT側の設定に問題がある場合）
集信管理情報の**異常時の処理を[削除]**にして配信してみましょう。

集信側の履歴にエラーがでましたね。。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/64fdd9c3-92e8-907e-ac4f-2e05f721f345.png)

####☆ちょっと解説・・・☆
105561(00002)とコードが出力されました。
・完了コード[105561]は、下３桁をみて561となります。
　561は、「HULFT側で使用できない機能が指定されている」ことを表すようですね。
・詳細コード[(00002)]は、「クラウドストレージへのファイル転送時に、集信管理情報の「異常時の処置」に
「削除」および「保存」を指定することはできません。」という意味となります。
　無効なパラメータを指定していることが分かりますね。。


###②存在しないバケットを指定してみる。（Cloud Storage側の設定に問題がある場合）
集信管理情報のファイルパスで、存在しないバケットを指定してみましょう。（※試しに、hogehoge-bucketにしてみました。。）

こちらも集信側の履歴にエラーがでましたね。。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/77b08dd6-a136-0ad5-82a1-0ee1c169e6d4.png)


####☆ちょっと解説・・・☆
・完了コード[149560]は、下３桁をみて560となります。
　560は、「クラウドストレージ側のエラー」を表すようですね。
・詳細コード[(03102)]は、GoogleのCloud Storage側のエラーコードになります。(※3000番台）
　クラウドストレージ側に問題ある場合は、そのようにエラーコードで区別するようになっているようですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/2409502e-f3af-800f-44c3-eb2ed0605f66.png)



このように、出力されるコードを見ることで、エラー原因の特定に役立ちそうですね！！
[エラーコード](https://www.hulft.com/help/ja-jp/HULFT-V8/COM-CLD/Content/HULFT_CLOUD/ERR_Messages/Error.htm)はWebマニュアルにまとまっているようなので参考にしてみてください。


#最後に
今回は、HULFTのクラウドストレージオプションを使って、GoogleのCloud Storageへ転送をしてみましたが、
いかがでしたでしょうか。転送エラー時も履歴情報から、原因の特定が容易に特定ができそうですね。

このブログでは、今後も技術の「よろず相談窓口」で相談を受けた内容や、誕生したワザをご紹介していけたらな、
と思っています。

これからも是非チェックいただき、宜しければフォローをお願いします。

それでは、また！