HULFT10 for Container ServicesでWebAPI による配信要求をしてみた

# はじめに
こんにちは。すぎもんです。:grinning:
今回は、HULFT10 for Container ServicesでWebAPI による配信要求をしてみました。HULFTがAPI連携するなんて…どう設定していくのか操作感を見てみます。

:::note warn
HULFT10 for Container Servicesは、HULFT10製品ラインナップの１つであり、記事投稿時点ではAWSサービス上で動くコンテナサービスがリリースされています。
:::

下記の過去記事や公式サイトもあわせてご覧ください。

**■ HULFT10 製品紹介ページ**

https://www.hulft.com/software/hulft-10

**■ HULFT10 for Container Services （コンテナ版HULFT）の環境構築をしてみた**

https://qiita.com/sugimon/items/e589e654f7bb38825550

**■ HULFT10 for Container Services で Amazon EFS内の実ファイルを確認してみる**

https://qiita.com/sugimon/items/8de650df0632825d70ff

# 今回やること
はじめに認証が必要なため、HULFT10 で転送コンテナ用のユーザーを新規作成し、作成したユーザーから発行したアクセストークンを Secrets Manager に登録します。
認証が完了したら、curl で配信要求の実行と結果の確認をしていきます。

# 実施手順

<dl>
  <dt>＜アクセストークンを使用した認証の設定＞</dt>
  <dd>・「転送コンテナ」ユーザーの作成</dd>
  <dd>・アクセストークンの取得</dd>
  <dd>・アクセストークンをSecrets Managerに登録</dd>
  <dd>・転送コンテナの再起動</dd>
  <dt>＜配信要求＞</dt>
  <dd>・配信要求の実行</dd>
  <dd>・転送結果の確認</dd>
</dl>

それでは早速やってみましょう！

# アクセストークンを使用した認証の設定
アクセストークンを使用した認証の設定について説明します。

<dl>
  <dt>アクセストークンを転送コンテナに設定する手順は以下のとおりです。</dt>
  <dd>①「転送コンテナ」ユーザーの作成</dd>
  <dd>② アクセストークンの取得</dd>
  <dd>③ アクセストークンをSecrets Managerに登録</dd>
  <dd>④ 転送コンテナの再起動</dd>
</dl> 

:::note info
認証の流れについて記載している下記のマニュアルもご参照ください
**https://dev.hulft.com/help/ja-jp/HULFT-V10/CONT-SUG/Content/HULFT_CONT_SUG/settings/authentication_access_token.htm**
:::

### ①「転送コンテナ」ユーザーの作成
**[ホーム]** > **[Settings]** > **[ユーザー設定]** > **[ユーザー管理]** を押下します。新規作成ボタンを押下します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/85e9343d-7207-1b03-fc1e-aaa39bfc690b.png)

**[ユーザー 新規作成]** 画面で、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/c380f6ef-628b-14f5-ca36-280a56482af0.png)

以下の値を設定します。

| 項目名 | 設定内容 |
|:-|:-|
| ユーザーID | （例）transfer_container_admin |
| 表示名 | （例）転送コンテナの管理者 |
| メールアドレス | 所有しているメールアドレスを設定します |
| 初期パスワード | 初期パスワードを設定します |
| ユーザーの権限 | 転送コンテナ |

### ② アクセストークンの取得
ユーザー管理画面の一覧から、転送コンテナの権限を持ったユーザーIDを選択し **[アクセストークンを発行]** ボタンを押下します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/3d5cb1ee-f559-9540-a3cb-422e25e84455.png)

アクセストークンの発行ダイアログボックスで、**「アクセストークンを発行ボタン」** を押下します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/f93becdb-1fb2-b369-2045-072c2ece99a2.png)

**[Secrets Manager]** の値に、取得したアクセストークンを登録する必要があるため、アクセストークンの発行ダイアログで表示されたアクセストークンを確認してメモしておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/7eb753a6-9a9b-1382-47fd-be44dc15c342.png)

### ③ アクセストークンをSecrets Managerに登録
**[Secrets Manager]** の値に、取得したアクセストークンを登録する必要があるため、CloudFormation Template2 の出力タブの **「TransferControlToken」** に記載されている内容を確認してメモしておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/199de8bf-b3d0-f26c-1535-23306494691b.png)

今回は、CLIで登録を行います。 

:::note info
**CLIでアクセストークンを登録するコマンドの例**
`aws secretsmanager put-secret-value --secret-id ${TransferControlToken} --secret-string ${AccessToken}`
<font color="red">“secret-id”</font> にはTransferControlTokenに出力されていた値を指定します。
<font color="red">“secret-string”</font> にはAccessTokenに出力されていた値を指定します。
:::

※ 実行例
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/061b901d-b270-3f47-cb80-8e65b1587be0.png)

### ④ 転送コンテナの再起動
登録したアクセストークンを転送コンテナで使用するためには、転送コンテナの再起動が必要です。

:::note info
転送コンテナを再起動する詳細な手順については下記のリンクをご参照ください。
[**・[アクセストークンを使用した認証の設定] > [転送コンテナの再起動]**](https://dev.hulft.com/help/ja-jp/HULFT-V10/CONT-SUG/Content/HULFT_CONT_SUG/settings/authentication_access_token.htm?tocpath=1.%20HULFT10%20%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%88%E3%82%A2%E3%83%83%E3%83%97%E3%82%AC%E3%82%A4%E3%83%89%7C1.3%20%E6%8E%A8%E5%A5%A8%E8%A8%AD%E5%AE%9A%7C_____2#%E8%BB%A2%E9%80%81%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E3%81%AE%E5%86%8D%E8%B5%B7%E5%8B%95)
:::

続いて、サービスの更新もCLIで行っていきます。

:::note info
**転送コンテナを再起動するコマンドの例**
`aws ecs update-service --cluster ${EcsCluster} --service ${EcsService2} --force-new-deployment`
<font color="red">“cluster”</font> にはEcsClusterに出力されていた値を指定します。
<font color="red">“service”</font> にはEcsService2に出力されていた値を指定します。
:::

※ 実行例
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/2a6c2a76-a051-a60c-5479-1edc02ece354.png)

転送コンテナを再起動すると、アクセストークンを使用した認証に変更されます。

# 配信要求
それでは実際に配信要求を実行して、結果をみてみましょう。

### 配信要求の実行
今回はコマンドプロンプトを起動し、curlコマンドで配信要求を行います。

:::note info
**コマンドプロンプトで実行する際のコマンドの例**
`curl -k -i -X POST -c /tmp/cookie.txt -H "Authorization: Bearer AccessToken" -d "{\"file_id\":\"LOOPBACK_ID\"}" https://ControlURL/api/v1/requests/sendings `
<font color="red">“ControlURL”</font> にはCloudFormation Template2に出力されていた値を指定します。
<font color="red">“AccessToken”</font> にはHULFT10で発行したアクセストークンの値を指定します。
<font color="red">“file_id”</font> にはHULFT10の配信管理情報で作成したファイルIDを指定します。
:::

※ 実行例
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/2ab9aecb-1ba4-1c24-66de-e611b76946da.png)

:::note warn
<font color="red">**ご利用の環境によってオプション等のコマンドは変わります。**</font>
:::

### 転送結果の確認
**「202 Accepted」** ステータスから非同期転送が成功したことが確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/46da762d-682c-8525-9090-07d5d5ab4901.png)

:::note info
**202ステータス** の詳細については下記のリンクをご参照ください。
[**・[WebAPI仕様] > [要求発行] > [配信要求] > [202 Accepted 非同期転送]**](https://dev.hulft.com/help/ja-jp/HULFT-V10/CONT-SUG/Content/HULFT_WEB_API/request/requests_sendings.htm?tocpath=2.%20WebAPI%E4%BB%95%E6%A7%98%7C2.2%20%E8%A6%81%E6%B1%82%E7%99%BA%E8%A1%8C%7C_____1#202Accepted%E9%9D%9E%E5%90%8C%E6%9C%9F%E8%BB%A2%E9%80%81)
:::

# 最後に
今回は、HULFT10 for Container Servicesの配信要求をcurlコマンドで実行してみましたが、いかがだったでしょうか。
API連携可能となり、外部サービスとの連携が簡単になりますしより一層シームレスなデータ連携や自動化ができそうです。今回はcurl実行でしたが、別サービスからの実行なども別記事で試してみようと思います。

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