View a markdown version of this page

Uso de registros de terceros no compatibles con la caché de extracción - AWS HealthOmics

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso de registros de terceros no compatibles con la caché de extracción

Su flujo de trabajo puede usar imágenes de contenedor de registros ascendentes que la caché de extracción (PTC) de Amazon ECR no admite. La primera vez que una tarea de su ejecución necesite una de estas imágenes, HealthOmics la copia del registro inicial en un repositorio privado de Amazon ECR de su cuenta e inicia la tarea a partir de la copia. Las tareas y ejecuciones posteriores reutilizan la copia, por lo que la descarga solo se realiza una vez. Si varias ejecuciones necesitan la misma imagen al mismo tiempo, por ejemplo, si se ejecutan por lotes, HealthOmics copia la imagen una vez y las corridas esperan esa copia. La definición de su flujo de trabajo conserva los URI originales de las imágenes ascendentes, por lo que no tendrá que extraer, insertar ni reescribir los URI de las imágenes usted mismo.

Te recomendamos que hagas referencia a estas imágenes por resumen o versión en lugar de por etiqueta. Para obtener más información, consulte Utilice un resumen o una versión en lugar de una etiqueta para las imágenes que no sean de PTC.

HealthOmics admite los siguientes registros ascendentes que PTC no admite:

  • Contenedores Seqera (community.wave.seqera.io y wave.seqera.io)

  • NVIDIA NGC (nvcr.io)

  • Registro de contenedores de Google (gcr.io)

  • Registro de artefactos de Google (region-docker.pkg.dev). Utilice el host regional completo, por ejemplo us-central1-docker.pkg.dev.

Configuración de la compatibilidad con contenedores que no son de PTC

Antes de utilizar contenedores de registros que PTC no admite, guarde sus credenciales de registro y configure los permisos para HealthOmics.

Paso 1: Guarde su credencial de registro en Secrets Manager

HealthOmics autentica y copia las imágenes de los contenedores de los registros principales con tus credenciales. Guardas tus credenciales en secreto en el mismo AWS Región como su HealthOmics corre. También puedes usar un secreto de otro Cuenta de AWS o comparte tu secreto con otra cuenta. Cuando usas un secreto de otra Cuenta de AWS, la función de servicio a la que pasas StartRun se le debe permitir leer el secreto. Para obtener más información, consulte Acceda a los secretos de Secrets Manager desde una cuenta diferente en el Guía del usuario de Secrets Manager.

Todos los registros compatibles necesitan una credencial, incluidos los registros que permiten realizar extracciones anónimas, como community.wave.seqera.io.

En las siguientes pestañas se muestra el formato de las credenciales y un ejemplo para cada registro compatible.

Seqera Containers and Wave

Un objeto JSON con un único accessToken clave que contiene un token de acceso a la plataforma Seqera.

Lo siguiente AWS CLI El comando crea un secreto para Seqera Containers:

aws secretsmanager create-secret \ --name omics-registry/seqera \ --secret-string '{"accessToken":"seqera-platform-access-token"}' \ --region us-east-1
NVIDIA NGC

Un objeto JSON con username establecido en el literal $oauthtoken y accessToken establecido en tu clave de API de NGC.

Lo siguiente AWS CLI El comando crea un secreto para NVIDIA NGC:

aws secretsmanager create-secret \ --name omics-registry/nvidia-ngc \ --secret-string '{"username":"$oauthtoken","accessToken":"ngc-api-key"}' \ --region us-east-1

Cuando crees un secreto para NVIDIA NGC, guarda el --secret-string valor entre comillas simples para que tu caparazón no se expanda $oauthtoken.

Google Container Registry and Google Artifact Registry

Crea una clave JSON para una cuenta de servicio de Google Cloud que pueda leer imágenes de tu registro y guarda el archivo de claves (por ejemplo, key.json). Para obtener instrucciones, consulte Crear y eliminar claves de cuentas de servicio en la documentación de Google Cloud.

Establecer username a _json_key y accessToken al contenido del archivo de claves como una única cadena JSON. Lo siguiente AWS CLI el comando crea el secreto y usa el jq herramienta para crear la cadena JSON:

aws secretsmanager create-secret \ --name omics-registry/google \ --secret-string "$(jq -n --rawfile key key.json '{username: "_json_key", accessToken: $key}')" \ --region us-east-1

Puedes registrar el nombre de recurso de Amazon (ARN) del secreto de la respuesta y usarlo como credentialArn valor en la asignación de registro.

Paso 2: Otorgar permisos al rol de servicio

HealthOmics usa el rol de servicio al que transfieres StartRun para leer el secreto, crear el repositorio de destino e insertar la imagen copiada. El rol de servicio debe estar en el mismo Cuenta de AWS como la carrera. De lo contrario, HealthOmics rechaza el rol con el error El rol de IAM no coincide con la cuenta de AWS solicitante.

Para obtener información sobre la política, consulte Política de funciones de servicio para el soporte de contenedores que no son de PTC.

Tras conceder estos permisos, añada una asignación de registro con el ARN secreto como credentialArn. Para obtener más información, consulte Mapeos de registro.

Nombramiento del repositorio de destino

Las asignaciones de registro se especifican al crear un flujo de trabajo y HealthOmics copia las imágenes durante una ejecución. Para obtener más información, consulte Añadir contenedores privados o de terceros durante la creación del flujo de trabajo.

Cada imagen copiada llega a una URI que puedes calcular a partir de la asignación de registro:

account-id.dkr.ecr.region.amazonaws.com/ecrRepositoryPrefix/image-path:tag

image-path es la URI de la imagen ascendente sin el host de registro y sin upstreamRepositoryPrefix si configuras uno. Mantenga upstreamRepositoryPrefix Puesta de sol para Wave (wave.seqera.io). La cuenta es la cuenta del flujo de trabajo, a menos que configures ecrAccountId. Cuando configuras ecrAccountId, HealthOmics crea el repositorio e inserta la copia en esa cuenta utilizando su rol de servicio. Entonces, el rol de servicio necesita los mismos permisos de Amazon ECR en los repositorios de esa cuenta, y las políticas de registro y repositorio de esa cuenta deben permitirlo.

Por ejemplo, community.wave.seqera.io/library/samtools:1.22.1--eccb42ff8fb55509 con prefijo wave-seqera aterriza en 111122223333.dkr.ecr.us-east-1.amazonaws.com/wave-seqera/library/samtools:1.22.1--eccb42ff8fb55509.

Para confirmar que la copia se realizó correctamente, compruebe que la imagen existe en su URI de destino, por ejemplo con lo siguiente AWS CLI comando:

aws ecr describe-images \ --repository-name wave-seqera/library/samtools \ --image-ids imageTag=1.22.1--eccb42ff8fb55509 \ --region us-east-1

Si el repositorio no existe en la cuenta del flujo de trabajo, HealthOmics lo crea. Si el repositorio no tiene una política de repositorios, HealthOmics adjunta una que permite HealthOmics tira de la imagen. Si el repositorio ya tiene una política, HealthOmics la deja sin cambios, así que incluye una sentencia que permita HealthOmics extraer imágenes. Para ver un ejemplo, consulta Cree una política de recursos para el repositorio de Amazon ECR.

ecrRepositoryPrefix/image-path se convierte en el nombre de un repositorio de Amazon ECR, por lo que el prefijo debe utilizar letras minúsculas, números y caracteres /, -, _, y ..

Si tus flujos de trabajo en la misma cuenta comparten un ecrRepositoryPrefix, comparten las imágenes copiadas. Si eliminas una imagen copiada, esto afectará a todos los flujos de trabajo que usen esa imagen con ese prefijo.

Consideraciones sobre la compatibilidad con contenedores que no son de PTC

Cuando utilice un soporte para contenedores que no sean de PTC, tenga en cuenta lo siguiente:

  • Arquitectura — HealthOmics copia solo imágenes x86_64. ARM-based y no se admiten imágenes con varias arquitecturas.

  • Uso compartido del flujo de trabajo: Non-PTC La compatibilidad con contenedores no es compatible con los flujos de trabajo compartidos. Cuando otra cuenta ejecuta un flujo de trabajo que compartiste, HealthOmics ignora las asignaciones de registro que incluyen credentialArn.

  • Etiquetas de imagen — HealthOmics copia la imagen que contiene una etiqueta, como latest, señala a la copia y no la actualiza cuando cambia el contenido original. Para obtener el nuevo contenido, borre la imagen copiada de Amazon ECR. Después de eliminarlo, HealthOmics vuelve a copiar la imagen del registro anterior la próxima vez que la necesite. Si tu flujo de trabajo hace referencia a una nueva etiqueta o resumen, HealthOmics copia esa imagen la primera vez que una tarea la necesita.

  • Errores de copia: si la credencial de registro no es válida o el rol de servicio no tiene los permisos necesarios HealthOmics necesita, la copia de la imagen falla y la tarea y la ejecución fallan. Si ya existe una copia de la imagen en Amazon ECR, HealthOmics usa esa copia y no comprueba la credencial de registro.