Self-Hosted Runner

Prev Next

概要

Self-Hosted Runnerは、TROCCOの転送ジョブをユーザーが用意した任意の環境上で実行できるようにする機能です。
これまで通り、転送設定の作成・編集やジョブの起動はTROCCOのUI上から行えますが、起動された転送ジョブはユーザー自身が管理する環境上のコンテナ(Runner)で実行されます。

プラン上の制約

本機能の利用は、Professionalプランの契約が前提となります。
詳しくは、営業担当者またはカスタマーサクセスまでお問い合わせください。

主な特徴

任意の環境で実行可能

オンプレ環境やクラウドのプライベートなネットワーク上など、お客様自身が管理する環境にコンテナ(Runner)を立ち上げ、その上で転送ジョブを実行できます。

リクエストの片方向性

TROCCOからコンテナ(Runner)へのリクエストは発生しません。
Runner側が一定間隔でTROCCOにリクエストを行い(Heartbeatリクエスト)、必要なジョブ情報をレスポンスとして取得します。

利用上の注意・制約

提供イメージの種類

以下2種類のOS/アーキテクチャに対応したコンテナイメージを提供しています。

  • linux/amd64
  • linux/arm64

推奨リソース

  • メモリ:2GB以上
    • Runnerとなる環境のメモリの推奨リソースです。
    • なお、一部の転送元ファイル・ストレージ系コネクタでは 4GB 以上のメモリが必要となるケースがあります。
      • 例:転送元 - Amazon S3
CPUの推奨値

CPUに関しては、とくに推奨値はありません。
ただし、CPUのコア数を増やすとEmbulkの並列実行による処理速度向上が期待できるため、パフォーマンスが上がる可能性があります。

基本概念

Cluster

Clusterとは、Runnerを論理的にまとめる概念です。Clusterは複数のRunnerを管理・保持します。
ジョブが起動されると、Cluster内のいずれかのRunnerがジョブを受け取り、ジョブを実行します。
作成方法について、詳しくはClusterの作成を参照ください。

Runner

Runnerとは、ジョブの実行コンテナです。
TROCCOが提供するRunner用のコンテナイメージを使用し、環境変数に適切なトークンを設定することで、Runnerを起動できます。
詳しくは、Runnerの起動を参照ください。

Runner間の不干渉性

任意のClusterに複数のRunnerが属している場合において、Runnerはそれぞれ独立して起動します。
たとえば、同一Cluster内の複数のRunnerが同時に立ち上がった場合、それらが互いに干渉することはありません。

Heartbeat

Runnerは、TROCCOに対して一定間隔でリクエストを送信します。
この挙動のことを、Heartbeatリクエストといいます。
TROCCOは、Runnerから送信されるHeartbeatリクエストを受け取ることで、Runnerが稼働中かどうかを認識します。

RegistrationToken

Runnerを起動する際に必要となるトークンです。
各Clusterに対し、最大で2つまでRegistrationTokenを作成できます。

RegistrationTokenのプレフィックス

2025/6/18以降に発行されたRegistrationTokenにはセキュリティ強化のためプレフィックス(trr_)が付与されます。
プレフィックスが付与されていないRegistrationTokenも引き続き問題なくご利用いただけます。

設定方法

1. Clusterの作成

左サイドバーのSelf-Hosted Runnerから、Self-Hosted Runner Cluster一覧画面を表示できます。
Cluster一覧画面では、これまで作成したClusterを確認できます。また、Clusterを新たに作成できます。

Clusterの新規作成ボタンをクリックすると、名前・説明・リソースグループ(チーム機能が有効な場合)を設定できます。
これらの設定値を入力して保存すると、Clusterは保存され、詳細画面へ遷移します。
このとき、RegistrationTokenが画面上に表示されるので、メモしてください。

2. Runnerの起動

お客様環境にて、Docker Container Imageの取得、およびDocker Containerを起動します。
以下は、コマンドサンプルです。

docker pull public.ecr.aws/i4m4b0i8/trocco-self-hosted-runner:latest
docker run \
  -e TROCCO_REGISTRATION_TOKEN="<YOUR REGISTRATION KEY>" \
  -e TROCCO_PREVIEW_SEND="<PREVIEW_DATA_IS_SAVED>" \
  -e TROCCO_ONESHOT="<ONESHOT_MODE>" \
  -e HEALTH_CHECK_PORT="<HEALTH_CHECK_PORT>" \
  --rm \
  public.ecr.aws/i4m4b0i8/trocco-self-hosted-runner:latest
パラメータ 必須 説明
<YOUR REGISTRATION KEY> Cluster詳細画面上に表示されたRegistrationTokenに置き換えてください。
<PREVIEW_DATA_IS_SAVED> - プレビューデータ(実データ)をTROCCO側に送信するかどうかを指定します。
本パラメーターを指定しなかった場合は、暗黙的にfalseが渡されます。
  • trueを指定すると、プレビューデータ(実データ)がTROCCO側に送信されます。この場合、転送設定STEP2および詳細画面にてプレビュー結果を永続的に確認できます。
  • falseを指定すると、プレビューデータ(実データ)はTROCCO側に送信されません。セキュリティ的な観点でTROCCO側にプレビューデータを保持させたくない場合は、falseを指定(または本パラメーターを未指定に)してください。
<ONESHOT_MODE> - 転送ジョブの実行後に、コンテナを終了させるかどうかを指定します。
本パラメーターを指定しなかった場合は、暗黙的にfalseが渡されます。
  • trueを指定すると、転送ジョブの実行後にRunnerがエラーとなることでコンテナが終了します。
  • falseを指定すると、転送ジョブの実行後に再度待機状態に戻ります。
<HEALTH_CHECK_PORT> - Google CloudのCloud Run Servicesなど、起動時にヘルスチェックが必須となっている場合に、ヘルスチェックのためのポートを設定します。
Self-Hosted Runnerはアウトバウンド通信のみで動作するので、通常は設定不要です。
例:8080のように指定すると、http://localhost:8080/healthでヘルスチェックが可能になります。

3. 転送設定の編集

Runner上でジョブを実行したい転送設定を編集します。
転送設定STEP1の基本設定で、Clusterを選択できます。
なお、転送設定側でClusterを選択するには、以下の条件を満たす必要があります。

  • Self-Hosted Runnerを契約している
  • Self-Hosted Runnerに対応している転送元・転送先コネクターの組み合わせである

機能詳細

Self-Hosted Runner Cluster詳細画面

Clusterの削除

画面右上の三点リーダーから削除できます。
ただし、該当のClusterを選択している転送設定が1つでもある場合、削除はできません。

RegistrationTokenの発行

Clusterの作成時に、自動でトークンが1つ発行されます。
トークンは最大2つまで作成できます。

RegistrationTokenの削除

ゴミ箱アイコンから削除できます。
トークンを削除すると、以降に作成されたRunnerの起動には使用できなくなります。

RunnerがACTIVE状態のときにトークンを削除した場合

トークンを削除する時点で、Runnerにジョブが割り当てられていた場合、そのRunnerはジョブが終了するまでは動作します。

Runnerのステータス

以下の3種類です。

  • IDLE:Runnerは立ち上がっているが、ジョブが割り当てられていない状態
  • ACTIVE:Runnerは立ち上がっており、なおかつジョブが割り当てられている状態
  • OFFLINE:RunnerからのHeartbeatが30秒以上途絶えている状態
ACTIVEかつOFFLINEになるケース

ジョブの実行中に、TROCCOがHeartbeatリクエストが受信できなくなった場合などに、ACTIVEかつOFFLINEなステータスになることがあります。
この状態になり、なおかつジョブが意図通り完了しない場合は、お客様環境のコンテナが正しく動いているかをご確認ください。

Runnerの停止

Runnerを手動で停止(Dockerプロセスを終了)できます。
お客様環境側でコンテナを停止できない場合などにお使いください。

RunnerがACTIVE状態のときにRunnerを停止した場合

ジョブが割り当てられているRunnerを停止した場合、そのRunnerはジョブが終了するまでは動作します。(Graceful Shutdown)

Runnerの削除

OFFLINEのRunnerのみ、手動で削除できます。
ただし、本項における「削除」とは、あくまで「TROCCOのデータベースから削除され、TROCCOの画面上には表示されなくなる」ことを意味します。
お客様環境側にあるコンテナ自体は削除されません。

Runnerの自動削除

OFFLINEの状態が72時間継続したRunnerは、自動的に「削除」されます。

削除されたコンテナがリクエストを再送した場合

TROCCO側で「削除」されたコンテナがHeartbeatリクエストを再送した場合、そのRunnerは新しいRunnerとしてTROCCOに再登録されます。

チーム機能有効時の操作権限

操作\ロール リソースグループ管理者 リソースグループ編集者 リソースグループ運用者 リソースグループ閲覧者
Clusterの閲覧
Clusterの利用(転送設定側での選択権限) -
Clusterの編集 - -
Clusterの削除 - -
RegistrationTokenの発行 - -
RegistrationTokenの削除 - -
Runnerの停止 - -
Runnerの削除 - -

転送設定

転送設定STEP1

基本設定にて、Clusterを選択できます。

転送設定STEP2

スキーマ情報の取得やプレビュー用データの取得処理はRunner上で行われます。
なお、プレビュー用データをTROCCOに送信するかどうかは、Runnerの起動時に選択できます。
詳しくは、Runnerの起動を参照ください。

転送ジョブ詳細

通常のジョブと同様に、ジョブの実行結果やジョブステータスを確認できます。
Runner上で実行されたジョブかどうかも、画面上から確認できます。
また、Runner上で実行されたジョブに限り、queueステータスでもジョブのキャンセルが可能です。

補足事項

Self-Hosted Runner利用時の処理時間

Self-Hosted Runnerを利用して実行された転送ジョブに関する処理時間のカウントは行われません。

Self-Hosted Runnerに対応するコネクター

Self-Hosted Runnerは、特定の転送元コネクターかつ転送先コネクターの組み合わせでのみ、利用できます。
以下に記載のないコネクターを選択した場合は、転送設定でClusterの選択項目が表示されません。

転送元コネクター

  • 転送元 - Amazon Redshift
  • 転送元 - Amazon S3
  • 転送元 - Azure Blob Storage
  • 転送元 - Databricks
  • 転送元 - FTP・FTPS
  • 転送元 - Google Cloud Storage
  • 転送元 - HTTP・HTTPS
  • 転送元 - MongoDB
  • 転送元 - MySQL
  • 転送元 - Oracle
  • 転送元 - PostgreSQL
  • 転送元 - SAP S/4HANA OData
  • 転送元 - SFTP
  • 転送元 - Snowflake
  • 転送元 - SQL Server

転送先コネクター

  • 転送先 - Amazon Redshift
  • 転送先 - Amazon S3
  • 転送先 - Amazon S3 Parquet
  • 転送先 - Azure Blob Storage
  • 転送先 - Databricks
  • 転送先 - FTP・FTPS
  • 転送先 - Google BigQuery
  • 転送先 - Google Cloud Storage
  • 転送先 - Microsoft SQL Server
  • 転送先 - MySQL
  • 転送先 - PostgreSQL
  • 転送先 - SFTP
  • 転送先 - Snowflake

Self-Hosted Runnerが対応していない機能

転送設定で利用できない機能

  • リソース増強オプション
    • リソース増強オプションは、TROCCOのジョブ実行環境を増強する機能であるため、Self-Hosted Runnerには適用されません。
  • 転送設定STEP1 > 接続確認機能・テーブルなどの一覧取得機能
    • これらの機能は、RunnerではなくTROCCO側から実行されます。
    • そのため、たとえば社内ネットワークからのみアクセスを許可しているデータソースの場合、実行できません。
    • テーブル名などは手動で入力する必要があります。
  • 転送設定STEP2 > スキーマ変更検知・カラム定義再読み込みプログラミングETL
    • これらの機能は、RunnerではなくTROCCO側から実行されます。
    • そのため、これらの機能は利用できません。画面にも表示されない仕様となっています。
  • 転送設定STEP2 > リトライ機能
    • 最大リトライ回数を1以上に設定しても、リトライは実施されません。
  • アカウント設定 > タイムアウト設定
    • アカウント設定によるタイムアウト設定を有効にしている場合にも、ジョブは自動停止されません。
  • 通知設定 > 実行時間経過時による通知

接続情報で利用できない機能

  • AWS Systems Manager Session Managerを用いた接続
    • 有効にした場合、接続に失敗します。
    • なお、Systems Manager Session Managerを利用しない通常のSSH経由での接続には対応しています。
  • TROCCO側のPrivateLink機能を用いた接続
    • TROCCO側のPrivateLink機能が有効の場合、接続に失敗します。
  • Amazon S3接続情報における、IAMロール認証
    • IAMユーザー認証による接続は対応しています。

その他詳細仕様

転送設定のYAML設定ファイル

転送設定詳細画面で確認できるYAML設定ファイルには、以下のkeyが追加されます。

self_hosted_runner_cluster:
    - id:
    - name:

転送設定のリビジョン復元時の挙動

Self-Hosted Runnerが無効になったアカウントで、かつ過去のリビジョンがSelf-Hosted RunnerのClusterを紐づけている場合、そのClusterは空の状態として復元されます。
転送設定のYAML設定ファイルにも、keyが削除された状態で復元されます。

監査ログの記録対象

Runnerそのものに関する操作(例:Runnerの起動やHeartbeatリクエストなど)は記録されません。