[アップデート] AWS HealthOmics ワークフローエンジンの実行ログが保存されるようになりました

2024.02.24

AWS HealthOmics のアップデートで Workflows でワークフローで使用する Nextflow などのエンジンのログが保存されるようになり、トラブルシュートに役立つログが追加されました。

確認結果

ワークフロー実行失敗時のデバッグに役立つログを確認できるようになっています。

  • AWS HealthOmics Workflows の実行画面に概要が表示されるようになった
  • Nextflow などのワークフローエンジンの実行ログが S3 バケットに保存されるようになった
  • ワークフローの実行失敗時は CloudWatch Logs にログが保存されるようになった

マネージメントコンソール画面が新しくなった

Workflow の実行画面から実行 ID を開くと実行の概要欄が追加されています。

以前は詳細情報の表示しかありませんでした。概要を確認できるようになり、実行中のステータスが確認しやすくなっています。

特筆べきは出力 URI と S3 ログの場所の項目が追加されたことです。ここには Nextflow などのワークフローのエンジンのログが保存されるようになりました。

ワークフローエンジンのログとは

HealthOmics で実行できるワークフロー言語は、Nextflow、WDL、CWL の 3 種類があります。ワークフローのエンジン(ミドルウェアに該当する部分)はマネージドサービスになっており、ユーザー側は環境構築不要です。 ユーザー側はワークフロー言語で記述したワークフローのファイルを用意すれば、解析処理のパイプラインを HealthOmics Workflows で実行できます。

要はワークフローの実行基盤側(Nextflow などの)の実行ログを確認できなかったのできませんでした。今回のアップデートにより Nextflow などの実行基盤側のログが S3 に保存され、ユーザーが確認できるようになりました。

エンジンログを確認してみる

CWL で正常終了した場合と、Nextflow で失敗させた場合の 2 パターンを確認してみました。

CWL

Hello World を実行するタスクを実行しました。ワークフローの定義は以前の紹介した記事がありますので参考にしてください。

実行完了し正常終了しました。出力 URI と S3 ログの場所の 2 つのリンクがあるのですが、出力の URI は S3 ログの場所の一階層上のパスになっているだけで存在意義は不明でした。S3 のログを表示のリンクをクリックすると S3 バケットに遷移します。

engine.logというファイルが保存されています。

ダウンロードしてファイルを開いたものが以下です。

[2024-02-24 09:36:16 ] INFO (MainThread) Resolved 'hello_world.cwl' to 'file:///mnt/workflow/definition/hello_world.cwl'
    "message": "UPDATE!!!!"
}
    {
        "position": [
            -1000000,
            0
        ],
        "datum": "echo"
    },
    {
        "position": [
            1,
            "message"
        ],
        "datum": "UPDATE!!!!"
    }
]
[2024-02-24 09:36:17 ] INFO (Thread-1) Setting permissions for /mnt/workflow/tmpdir/62628oor
[2024-02-24 09:43:59 ] INFO (Thread-1) [job hello_world.cwl] completed success
[2024-02-24 09:43:59 ] INFO (MainThread) Final process status is success
[2024-02-24 09:43:59 ] INFO (MainThread) Process completed with exit status: 0

CWL 側の実行ログを確認できます。エラー時にワークフローファイルの記述の何が悪いのかデバッグしやすくなっています。

ちなみに従来から確認可能だった CloudWatch Logs へ保存される実行ログは以下の内容でした。

------------------------------------------------------------------------
|   timestamp   |                       message                        |
|---------------|------------------------------------------------------|
| 1708767795852 | + echo Task hello_world.cwl started                  |
| 1708767795853 | Task hello_world.cwl started                         |
| 1708767795853 | + cd /mnt/workflow/tmpdir/62628oor                   |
| 1708767795854 | + bash /mnt/workflow/tmpdir/62628oor_service/command |
| 1708767795859 | Executing: echo UPDATE!!!!                           |
| 1708767795859 | UPDATE!!!!                                           |
| 1708767795860 | + sync                                               |
| 1708767795867 | + EXIT_CODE=0                                        |
| 1708767795867 | + '[' 0 -eq 0 ']'                                    |
| 1708767795867 | + echo Task succeeded                                |
| 1708767795867 | Task succeeded                                       |
| 1708767795868 | + exit 0                                             |
------------------------------------------------------------------------

Nextflow

今度は Nextflow エンジンで意図的にタスク失敗させてみました。ステータスがエラーになると新たにエンジンログのリンクが追加されました。

リンクを開くと CloudWatch Logs から以下のメッセージを確認できました。

---------------------------------------------------------------------------------------------------------------------------
|   timestamp   |                                                 message                                                 |
|---------------|---------------------------------------------------------------------------------------------------------|
| 1708768414675 | Cannot find script file: main.nf                                                                        |
| 1708768414686 | Nextflow engine failed                                                                                  |
| 1708768746091 | Starting EXPORT task for folder: /mnt/workflow/workflowOuts/                                            |
| 1708768746091 | INFO: Starting EXPORT on folder: /mnt/workflow/workflowOuts/ into s3://omics-work/output/result/1053610 |
| 1708768746091 | INFO: Setting permissions for /mnt/workflow/export_workdir/                                             |
| 1708768746091 | Export task completed                                                                                   |
---------------------------------------------------------------------------------------------------------------------------

これは従来実行に失敗すると CloudWatch Logs から実行ログを確認できなかった点が改善されたものかと思われます。このように失敗すると実行タスク側には記録が残りません。

S3 のログを表示のリンクからダウンロードしたengine.logの内容は以下です。エラー時のデバッグ用途で確認するようなログが残されていました。

nextflow.exception.AbortOperationException: Cannot find script file: main.nf
    at nextflow.cli.CmdRun.getScriptFile(CmdRun.groovy:391)
    at nextflow.cli.CmdRun.run(CmdRun.groovy:284)
    at nextflow.cli.Launcher.run(Launcher.groovy:480)
    at nextflow.cli.Launcher.main(Launcher.groovy:639)

まとめ

ワークフロー実行失敗時のデバッグに役立つログを確認できるようになりました。

  • AWS HealthOmics Workflows の実行画面に概要が表示されるようになった
  • Nextflow などのワークフローエンジンの実行ログが S3 バケットに保存され、ユーザー側が確認できるようになった
  • ワークフローの実行失敗時は CloudWatch Logs にログが保存されるようになった

デバッグのベストプラクティスと考慮事項

デバッグ時に役立つリンクを添えておきます。

おわりに

Workflos で実行したワークフローエンジンのログが保存されることを確認しました。

ユーザー側が状況を確認できなくて困っていた箇所が改善されたアップデートと言えるのではないでしょうか。以前より確認できるログが増えたと認識しておけば結構かと思います。