プライベートワークフロー用の Amazon ECR のコンテナイメージ - AWS HealthOmics

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

プライベートワークフロー用の Amazon ECR のコンテナイメージ

プライベートワークフローを作成する前に、ワークフローのコンテナイメージを作成します。Amazon Elastic Container Registry (Amazon ECR) のプライベートイメージリポジトリにイメージをアップロードします。ワークフローを実行すると、HealthOmics サービスは指定したコンテナにアクセスします。

コンテナイメージ Amazon ECR リポジトリは、サービスを呼び出すアカウントと同じ AWS リージョンに存在する必要があります。ソースイメージリポジトリが適切なアクセス許可を提供している限り、別の がコンテナイメージを所有 AWS アカウント できます。詳細については、「共有ワークフローの Amazon Elastic Container Registry リポジトリポリシー」を参照してください。

実行を開始する前にアクセスを検証できるように、Amazon ECR コンテナイメージ URIs をワークフローのパラメータとして定義することをお勧めします。また、リージョンパラメータを変更することで、新しいリージョンでワークフローを簡単に実行できます。

注記

HealthOmics は ARM コンテナをサポートしておらず、パブリックリポジトリへのアクセスもサポートしていません。

HealthOmics が Amazon ECR にアクセスするための IAM アクセス許可の設定については、「」を参照してくださいリソースのアクセス許可

Amazon ECR コンテナイメージの一般的な考慮事項

  • アーキテクチャ

    HealthOmics は x86_64 コンテナをサポートしています。ローカルマシンが Apple Mac などの ARM ベースである場合は、次のようなコマンドを使用して x86_64 コンテナイメージを構築します。

    docker build --platform amd64 -t my_tool:latest .
  • エントリポイントとシェル

    HealthOmics ワークフローエンジンは、ワークフロータスクで使用されるコンテナイメージへのコマンドオーバーライドとして bash スクリプトを挿入します。したがって、コンテナイメージは、bash シェルがデフォルトになるように、指定された ENTRYPOINT なしで構築する必要があります。

  • マウントされたパス

    共有ファイルシステムは /tmp でコンテナタスクにマウントされます。この場所にコンテナイメージに組み込まれているデータまたはツールはすべて上書きされます。

    ワークフロー定義は、/mnt/workflow の読み取り専用マウントを介してタスクで使用できます。

  • イメージのサイズ

    コンテナイメージの最大サイズHealthOmics ワークフローの固定サイズクォータについては、「」を参照してください。

HealthOmics ワークフローの環境変数

HealthOmics は、コンテナで実行されているワークフローに関する情報を含む環境変数を提供します。これらの変数の値は、ワークフロータスクのロジックで使用できます。

すべての HealthOmics ワークフロー変数はAWS_WORKFLOW_、 プレフィックスで始まります。このプレフィックスは、保護された環境変数プレフィックスです。ワークフローコンテナの独自の変数にこのプレフィックスを使用しないでください。

HealthOmics には、次のワークフロー環境変数が用意されています。

AWS_REGION

この変数は、コンテナが実行されているリージョンです。

AWS_WORKFLOW_RUN

この変数は、現在の実行の名前です。

AWS_WORKFLOW_RUN_ID

この変数は、現在の実行の実行識別子です。

AWS_WORKFLOW_RUN_UUID

この変数は、現在の実行の実行 UUID です。

AWS_WORKFLOW_TASK

この変数は現在のタスクの名前です。

AWS_WORKFLOW_TASK_ID

この変数は、現在のタスクのタスク識別子です。

AWS_WORKFLOW_TASK_UUID

この変数は、現在のタスクのタスク UUID です。

次の例は、各環境変数の一般的な値を示しています。

AWS Region: us-east-1 Workflow Run: arn:aws:omics:us-east-1:123456789012:run/6470304 Workflow Run ID: 6470304 Workflow Run UUID: f4d9ed47-192e-760e-f3a8-13afedbd4937 Workflow Task: arn:aws:omics:us-east-1:123456789012:task/4192063 Workflow Task ID: 4192063 Workflow Task UUID: f0c9ed49-652c-4a38-7646-60ad835e0a2e

Amazon ECR コンテナイメージでの Java の使用

ワークフロータスクで GATK などの Java アプリケーションを使用する場合は、コンテナの次のメモリ要件を考慮してください。

  • Java アプリケーションはスタックメモリとヒープメモリを使用します。デフォルトでは、最大ヒープメモリはコンテナで使用可能なメモリの合計に対する割合です。デフォルトでは、特定の JVM ディストリビューションと JVM バージョンによって異なるため、JVM の関連ドキュメントを参照するか、Java コマンドラインオプション (「-Xmx」など) を使用してヒープメモリの最大数を明示的に設定してください。

  • JVM スタックにもメモリが必要なため、最大ヒープメモリをコンテナのメモリ割り当ての 100% に設定しないでください。メモリは、JVM ガベージコレクターおよびコンテナで実行されているその他のオペレーティングシステムプロセスにも必要です。

  • GATK などの一部の Java アプリケーションでは、ネイティブメソッド呼び出しや、メモリマッピングファイルなどのその他の最適化を使用できます。これらの手法には、JVM 最大ヒープパラメータによって制御されない「オフヒープ」で実行されるメモリ割り当てが必要です。

    Java アプリケーションがオフヒープメモリを割り当てることを知っている (または疑っている) 場合は、タスクメモリ割り当てにオフヒープメモリ要件が含まれていることを確認してください。

    これらのオフヒープ割り当てによりコンテナのメモリが不足した場合、JVM はこのメモリを制御しないため、通常 Java OutOfMemory エラーは表示されません。

ECR コンテナイメージにタスク入力を追加する

ワークフロータスクの実行に必要なすべての実行可能ファイル、ライブラリ、スクリプトを、タスクの実行に使用される Amazon ECR イメージに追加します。

タスクコンテナイメージの外部にあるスクリプト、バイナリ、ライブラリを使用しないことがベストプラクティスです。これは、nf-coreワークフローパッケージの一部としてbinディレクトリを使用するワークフローを使用する場合に特に重要です。このディレクトリはワークフロータスクで使用できますが、読み取り専用ディレクトリとしてマウントされます。このディレクトリに必要なリソースはタスクイメージにコピーし、実行時またはタスクに使用されるコンテナイメージの構築時に使用可能にする必要があります。

HealthOmics がサポートするコンテナイメージの最大サイズHealthOmics ワークフローの固定サイズクォータについては、「」を参照してください。