翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
プルスルーキャッシュでサポートされていないサードパーティーレジストリの使用
ワークフローでは、Amazon ECR プルスルーキャッシュ (PTC) がサポートしていないアップストリームレジストリのコンテナイメージを使用できます。実行のタスクがこれらのイメージのいずれかを初めて必要とする場合、HealthOmics はアップストリームレジストリからアカウントのプライベート Amazon ECR リポジトリにタスクをコピーし、コピーからタスクを開始します。後のタスクと実行ではコピーが再利用されるため、ダウンロードは 1 回だけ行われます。複数の実行で同じイメージを同時に必要とする場合、たとえば、 がバッチで実行される場合、HealthOmics はイメージを 1 回コピーし、実行はそのコピーを待機します。ワークフロー定義は元のアップストリームイメージ URIs を保持するため、イメージ URIs自分でプル、プッシュ、または書き換えることはありません。
これらのイメージは、タグではなくダイジェストまたはバージョンで参照することをお勧めします。詳細については、「非 PTC イメージにはタグの代わりにダイジェストまたはバージョンを使用する」を参照してください。
HealthOmics は、PTC がサポートしていない次のアップストリームレジストリをサポートしています。
Seqera コンテナ (
community.wave.seqera.ioおよびwave.seqera.io)NVIDIA NGC (
nvcr.io)Google コンテナレジストリ (
gcr.io)Google Artifact Registry (
)。など、完全なリージョンホストを使用しますregion-docker.pkg.devus-central1-docker.pkg.dev。
非 PTC コンテナサポートの設定
PTC がサポートしていないレジストリのコンテナを使用する前に、レジストリ認証情報を保存し、HealthOmics のアクセス許可を設定します。
ステップ 1: Secrets Manager にレジストリ認証情報を保存する
HealthOmics は、認証情報を使用して、アップストリームレジストリからコンテナイメージを認証してコピーします。認証情報は、HealthOmics の実行と同じ AWS リージョンにシークレットとして保存します。別の のシークレットを使用した AWS アカウント り、別のアカウントとシークレットを共有したりすることもできます。別の のシークレットを使用する場合は AWS アカウント、 に渡すサービスロールにシークレットの読み取りを許可StartRunする必要があります。詳細については、「 Secrets Manager ユーザーガイド」の「Access Secrets Manager secrets from a different account」を参照してください。
サポートされているすべてのレジストリには、 などの匿名プルを許可するレジストリを含む認証情報が必要ですcommunity.wave.seqera.io。
次のタブは、サポートされている各レジストリの認証情報形式と例を示しています。
レスポンスからシークレットの Amazon リソースネーム (ARN) を記録し、レジストリマッピングcredentialArnの値として使用できます。
ステップ 2: サービスロールにアクセス許可を付与する
HealthOmics は、 に渡したサービスロールStartRunを使用してシークレットの読み取り、宛先リポジトリの作成、コピーしたイメージのプッシュを行います。サービスロールは、実行 AWS アカウント と同じ にある必要があります。それ以外の場合、HealthOmics は、IAM ロールがリクエスト元の AWS アカウントと一致しないというエラーでロールを拒否します。
ポリシーについては、「」を参照してください非 PTC コンテナサポートのサービスロールポリシー。
これらのアクセス許可を付与したら、シークレット ARN を とするレジストリマッピングを追加しますcredentialArn。詳細については、「レジストリマッピング」を参照してください。
送信先リポジトリの命名
ワークフローの作成時にレジストリマッピングを指定すると、HealthOmics は実行中にイメージをコピーします。詳細については、「ワークフロー作成時のプライベートコンテナまたはサードパーティーコンテナの追加」を参照してください。
コピーされた各イメージは、レジストリマッピングから計算できる URI に配置されます。
account-id.dkr.ecr.region.amazonaws.com/ecrRepositoryPrefix/image-path:tag
image-path は、レジストリホストなしのアップストリームイメージ URI であり、設定upstreamRepositoryPrefixした場合は なしのアップストリームイメージ URI です。Wave () の設定upstreamRepositoryPrefixを解除しますwave.seqera.io。アカウントは、 を設定しない限り、ワークフローのアカウントですecrAccountId。を設定するとecrAccountId、HealthOmics はリポジトリを作成し、サービスロールを使用してそのアカウントでコピーをプッシュします。その後、サービスロールは、そのアカウントのリポジトリに対して同じ Amazon ECR アクセス許可を必要とし、そのアカウントのレジストリポリシーとリポジトリポリシーで許可する必要があります。
たとえば、プレフィックスwave-seqeraが community.wave.seqera.io/library/samtools:1.22.1--eccb42ff8fb55509の場合、 は になります111122223333.dkr.ecr.us-east-1.amazonaws.com/wave-seqera/library/samtools:1.22.1--eccb42ff8fb55509。
コピーが成功したことを確認するには、イメージが送信先 URI に存在することを確認します。たとえば、次の AWS CLI コマンドを使用します。
aws ecr describe-images \ --repository-namewave-seqera/library/samtools\ --image-ids imageTag=1.22.1--eccb42ff8fb55509\ --regionus-east-1
ワークフローのアカウントにリポジトリが存在しない場合、HealthOmics によって作成されます。リポジトリにリポジトリポリシーがない場合、HealthOmics は HealthOmics がイメージをプルできるようにするポリシーをアタッチします。リポジトリに既にポリシーがある場合、HealthOmics はポリシーを変更しないままにするので、HealthOmics がイメージをプルできるようにするステートメントを含めます。例については、Amazon ECR リポジトリのリソースポリシーを作成するを参照してください。
ecrRepositoryPrefix/image-path は Amazon ECR リポジトリ名になるため、プレフィックスには小文字、数字、および文字 /、-、_、 を使用する必要があります.。
同じアカウントのワークフローが を共有する場合ecrRepositoryPrefix、コピーされたイメージを共有します。コピーしたイメージを削除すると、そのプレフィックスでそのイメージを使用するすべてのワークフローに影響します。
非 PTC コンテナのサポートに関する考慮事項
非 PTC コンテナサポートを使用する場合は、次の点を考慮してください。
-
アーキテクチャ – HealthOmics は x86_64 イメージのみをコピーします。ARM ベースのイメージとマルチアーキテクチャイメージはサポートされていません。
-
ワークフロー共有 — 非 PTC コンテナのサポートは、共有ワークフローではサポートされていません。別のアカウントが共有したワークフローを実行すると、HealthOmics は を含むレジストリマッピングを無視します
credentialArn。 -
イメージタグ – HealthOmics は、 などのタグが指すイメージをコピーし
latest、アップストリームコンテンツが変更されてもコピーを更新しません。新しいコンテンツを取得するには、コピーしたイメージを Amazon ECR から削除します。削除すると、HealthOmics は、必要な次の実行時にアップストリームレジストリからイメージを再度コピーします。ワークフローが新しいタグまたはダイジェストを参照する場合、HealthOmics はタスクが最初に必要とするときにそのイメージをコピーします。 -
コピーの失敗 – レジストリ認証情報が無効であるか、サービスロールに HealthOmics に必要なアクセス許可がない場合、イメージのコピーは失敗し、タスクと実行は失敗します。イメージのコピーが Amazon ECR に既に存在する場合、HealthOmics はそのコピーを使用し、レジストリ認証情報をチェックしません。