HULFT SquareとHULFT10のプライベートリンク接続してみた

## 概要
本記事では、プライベートリンク接続を使用してAWS上にあるHULFT Square（HSQ）とHULFT10を接続してみようと思います。

:::note alert
HULFT10とのプライベートリンク接続は公式サポートされておらず、動作の保証はできかねますのでご承知おきください。
:::

## 目次
1. [HULFT10について](#HULFT10について)
2. [やりたいこと](#やりたいこと)
3. [作成手順](#作成手順)
    - [HULFT10側AWS](#HULFT10側AWS)
        - [VPCエンドポイントサービスの作成](#VPCエンドポイントサービスの作成)
    - [HULFT Square](#HULFT-Square)
        - [VPCエンドポイントの作成](#VPCエンドポイントの作成)
        - [HULFT Transferサービスの作成](#HULFT-Transferサービスの作成)
        - [詳細ホスト情報](#詳細ホスト情報)
        - [配信管理情報](#配信管理情報)
    - [HULFT10](#HULFT10)
        - [詳細ホスト情報](#詳細ホスト情報-1)
        - [集信管理情報](#集信管理情報)
        - [転送グループ情報](#転送グループ情報)
4. [HULFT SquareからHULFT10に配信してみる](#HULFT-SquareからHULFT10に配信してみる)
5. [最後に](#最後に)

## HULFT10について
HULFT10とは、HULFTをクラウドネイティブ化したHULFTの最新バージョンです。詳細は公式の[HULFT10マニュアル](https://www.hulft.com/help/ja-jp/HULFT-V10/index.htm)を参照ください。また、HULFT10 for Container Servicesの環境構築については以下の記事を参考にしました。

https://qiita.com/sugimon/items/368f3f6746f124c1fa59

## やりたいこと
[公式マニュアル](https://www.hulft.com/help/ja-jp/HULFT-V10/CONT-SUGF/Content/HULFT_SUGF_CONT/aws_marketplace/aws_hulrt10_for_container_service.htm?tocpath=1.%20AWS%20Marketplace%E3%81%8B%E3%82%89%E3%81%AE%E7%92%B0%E5%A2%83%E6%A7%8B%E7%AF%89%7C_____1)より、HULFT10 for Container Servicesの構成図は以下の通りです。

![構成図](https://www.hulft.com/help/ja-jp/HULFT-V10/CONT-SUGF/Content/Resources/Images/HULFT_SUGF_CONT/aws_marketplace/0011_hulft10_efs_hulft8_vpc_fig.png)

上記構成図ではオンプレミスのHULFT8との接続を想定しています。そのため、接続方法は以下のようなVPN接続となっています。

![接続方法](https://www.hulft.com/help/ja-jp/HULFT-V10/CONT-OPE/Content/Resources/Images/HULFT_OPE_CONT/file_transfer/0010_hulft8_to_hulft10_1_fig.png)

一方でHULFT SquareはAWS上にあるクラウドサービスなので、HULFT10とプライベートリンク接続で閉域接続することが可能です。

そこで、HULFT10をデプロイしたAWS環境にVPCエンドポイントサービスを手動で作成し、HSQでVPCエンドポイントを作成することで、HSQからHULFT10に閉域でファイル配信を行いたいと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833984/0e9ed367-cad7-33d8-2a93-eae0de776f49.png)

## 作成手順
作成手順はHULFT10側のAWS、HSQ、HULFT10の3ステップです。
### HULFT10側AWS

#### VPCエンドポイントサービスの作成
- ロードバランサーのタイプをネットワークとし、HULFT10のNLBを選択
- エンドポイントの承諾が必要のチェックを外す

![{CE86E183-FD9D-405A-BEF9-71491D71E318}.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833984/6babd2ec-9b5f-a004-f62b-fcdbe508dc1e.png)

作成後、「プリンシパルを許可」で接続するHSQのIDを使用したARNを指定します。

:::note info
arn:aws:iam::"HSQのID":root
:::

### HULFT Square

#### VPCエンドポイントの作成
作成したVPCエンドポイントサービスのサービス名を指定

#### HULFT Transferサービスの作成
- 転送の方向：アウトバウンド
- ホスト名：任意の名前（HULFT10の詳細ホスト情報で指定）

![{D055D891-E6D8-4857-BFBC-BFDC12FE49EB}.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833984/38f0fa69-fc2f-9513-e20a-8ffa7a80e684.png)

:::note info
割り当てるグループには必要に応じてポリシーを設定してください。詳細は[ポリシーと権限の一覧](https://www.hulft.com/help/ja-jp/HULFTSquare/Content/HULFT_Square/HS_Settings/settings_permissions.htm)を参照ください。
:::

#### 詳細ホスト情報
- ホストの種類：UNIX/Linux
- 文字コード：UTF-8
- 転送の方向：アウトバウンド
- VPCエンドポイント：作成したVPCエンドポイント
- 集信ポート：30001

:::note info
HULFT10のデフォルトポートは30001です。
:::

#### 配信管理情報
- ファイルID：任意（HULFT10で指定するファイルIDと同じ必要があります）
- 集信ホスト名：作成した詳細ホスト名を指定

### HULFT10

#### 詳細ホスト情報
- ホストID：任意
- ホスト名：HSQのTransfer作成時に指定したホスト名
- ポート番号：30001

#### 転送グループ情報
- 転送グループID：任意
- ホスト：詳細ホスト情報で指定したホストIDを選択

#### 集信管理情報
- ファイルID：HSQの配信管理情報で指定したファイルID
- 集信ファイル：任意のファイル名
- 転送グループID：作成した転送グループID

:::note warn
HULFT10の集信先をS3とする場合、異常時の処理を「復元」とする必要があります。
:::

## HULFT SquareからHULFT10に配信してみる
HSQで適当なプロジェクトを作成し、配信要求処理を実行してみます。

![{A3ECCC6B-560D-4BBC-AC4C-71BA5975F5C1}.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833984/8247d68f-0a38-6f6b-fa98-33f3c546133d.png)

HULFT10の集信履歴から成功していることが分かります。

![{B739B307-BF4F-43F7-9701-4E88F8EA392E}.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833984/a2c3917c-9cfa-2a4c-aaa9-06d2c5b6ba6c.png)

S3を見ると、指定したファイル名で集信できています。

![{A91CCA7C-A730-43D8-9227-FF846D161ECF}.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833984/299b74d8-4dba-5225-6164-5781043c2364.png)

## 最後に
今回、AWSでVPCエンドポイントサービスを作成することで、HSQからHULFT10へのプライベートリンク接続を実現しました。ユースケースは限られると思いますが、本記事が参考になれば幸いです。

また、今回はHSQからHULFT10へのプライベートリンク接続を行いましたが、AWS上でVPCエンドポイントを作成すれば逆方向の接続も可能だと思われますので、ぜひ試してみてください。