9
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

HULFT10 for Container Servicesでの転送をスケジュール実行しよう

Last updated at Posted at 2025-12-22

はじめに

この記事は、 セゾンテクノロジー Advent Calendar 2025 の記事です。
シリーズ2では HULFTDataSpider の開発メンバーによる投稿をお届けします🕊️
22日目はHULFT10 for Container Servicesの開発者が担当します🙌

企業間でのファイル転送において、セキュアで確実なデータ連携が必要なことかと思います。
AWS環境に置いても、オンプレミス環境とのファイル転送や、異なるAWSアカウント間でのデータ連携を安全に行う必要があります。

HULFT10 for Container Servicesは、ECS上で動作するマネージドなファイル転送サービスであり、AWS Marketplaceから導入することができます。

公式説明は以下の通りです。

HULFT10 for Container Servicesは、売上データ、顧客情報、各種ログなど、日常業務中にITシステムに蓄積されたデータの転送機能を提供するファイル統合ミドルウェアです。オンプレミスのHULFTとのファイル転送も可能です。

スケジュール実行の課題

HULFT10 for Container Servicesは、WebAPIによる転送制御や転送条件の定義情報の操作が可能ですが、スケジュール実行は機能として持っていません。

そのため、定期的なファイル転送(日次バッチ処理、週次レポート配信など)を実現するには、外部のスケジューラーが必要になります。

本記事で解決すること

Amazon EventBridgeとAWS Lambdaを用いた、転送APIのスケジュール実行の方法を紹介します。

これにより、HULFT10 for Container Servicesを用いたファイル転送の自動化を実現し、手動オペレーションを削減します。

流れ

  • HULFT10 for Container Servicesのユーザー作成・管理情報作成
  • AWS Lambda関数作成
  • Amazon EventBridgeのスケジュール作成

HULFT10 for Container Servicesのユーザー作成・管理情報作成

API実行用ユーザーを作成

HULFT10 for Container Servicesの管理画面にログインし、「Settings」→「ユーザー管理」→「新規作成」へ進みます。
入力値は任意ですが、「ユーザーID」と「パスワード」は後からLambda関数で使用するのでメモしておきます。

image (7).png

管理情報の作成

転送に必要な管理情報の設定は任意ですが今回はループバックができるものを準備します。

以下のナレッジにループバック転送をする際の管理情報の作成方法が記載されていましたのでご参照ください。
https://qiita.com/sugimon/items/59d76ab0748b248fa167

配信管理情報の「ファイルID」はLambda関数で使用するのでメモしておきます。

AWS Lambda関数作成

Lambda関数を以下のような設定で作成します。(その他の設定に続きます。)
関数名は任意ですがEventBridgeで使用するのでメモしておきます。
image (8).png

  • ランタイム:PythonでAPIの実行処理を書いていきます
  • 実行ロール:「基本的なLambdaアクセス権限ロール」でOK

その他の設定
スクリーンショット 2025-12-22 211030.png

  • 「ネットワーキング」の「VPC」を有効化
  • VPC:HULFT10 for Container ServicesのVPCを選択
  • サブネット:HULFT10 for Container ServicesのECSタスクが配置してあるサブネットを選択(fargate版HULFT10 for Container Servicesの場合は「PrivateSubnetForECS」)
  • セキュリティグループ:アウトバウンドルールが0.0.0.0/0ならOK

なぜこのネットワーキング設定なのか?

前提
デフォルト設定のHULFT10 for Container ServicesではAPIサーバーにリクエストを行いたい場合、HULFT10 for Container Servicesの外部ALB経由でのリクエストが必要

以下の理由からECSタスクのあるサブネットにLambdaを配置すればAPIサーバーに簡単にリクエストが送れるため、この設定にしました。

  • ECSタスクがあるサブネットからインターネット接続する際は、HULFT10 for Container ServicesのNatGatewayを通る
  • NatGatewayのIPはデフォルトで外部ALBのセキュリティグループに登録されている

AWS Lambda関数作成

Lambda関数で作成する処理は大まかに以下の流れになります。

  1. ログイン
  2. 配信要求API実行
  3. ログアウト

サンプルコードは以下です。

import json
import urllib3
import os

def lambda_handler(event, context):
    uri = os.environ.get('API_ENDPOINT', 'https://api.example.com')
    user_id = os.environ.get('API_USER_ID', 'sample_user')
    password = os.environ.get('API_PASSWORD', 'sample_password')
    file_id = event.get('file_id', 'LOOPBACK_ID')
    
    http = urllib3.PoolManager()
    
    # ログイン
    login_response = http.request('POST', f'{uri}/api/login',
        body=json.dumps({'user_id': user_id, 'password': password}),
        headers={'Content-Type': 'application/json'})
    
    # Cookie取得
    cookie_header = login_response.headers.get('Set-Cookie', '').split(';')[0]
    
    # 配信要求
    delivery_response = http.request('POST', f'{uri}/api/v1/requests/sendings',
        body=json.dumps({"file_id": file_id}),
        headers={'Content-Type': 'application/json', 'Cookie': cookie_header})
    
    # ログアウト
    http.request('POST', f'{uri}/api/logout', headers={'Cookie': cookie_header})

最低限APIを実行できるサンプルコードです。
コード上部の変数は適切な値に置き換えてください

  • uri:HULFT10 for Container Servicesの管理コンテナのリンク
  • user_id・password:先ほど作成したAPI実行ユーザー情報
  • file_id:先ほど作成した配信管理情報の「ファイルID」

また、実際にはパスワード等をSecrets Managerに持たせたり、エラー処理を行う等が必要かと思います。

デプロイしたらテストしてみます。

成功してました。
image (9).png

HULFT10 for Container Servicesの履歴もHULFT10 for Container Servicesの管理画面にログインし「配信履歴」から確認します。
成功してました。
スクリーンショット.png

これでLambda関数の準備はOKなので、後はEventBridgeでLambda関数をスケジュール実行するだけです。


Amazon EventBridgeのスケジュール作成

EventBridgeの画面から「スケジュール」に進み、「スケジュールを作成」へと進みます。

image (10).png

  • 頻度:「定期的なスケジュール」を選択
  • スケジュールの種類:今回はテストなので「rateベースのスケジュール」を選択(日毎や週毎の実施の場合は「cron ベースのスケジュール」)
  • rate式:今回はテストなので3 minutesを入力
  • 開始時期:テストを開始したい時間を入力

前述の通りですが、日毎や週毎の設定もできるので要件に合わせて設定を変更してください。

ターゲットの詳細
image (11).png

  • ターゲットAPI:テンプレート化されたターゲット→AWS Lambda

  • Lambda関数:先ほど作成したLambda関数

  • アクセス許可→実行ロール:Lambda関数を実行できるロールであればOK(「このスケジュールの新しいロールを作成」を選択すれば必要なロールが付与されます)

スケジュール作成後EventBridgeによる実行を待機……

予定通りのタイミングで成功してました!
スクリーンショット.png


Amazon EventBridgeとAWS Lambdaを用いたHULFT10 for Container Servicesのスケジュール転送が実行できました!
是非ご活用ください!

9
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?