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.
Imágenes de contenedores en Amazon ECR para flujos de trabajo privados
Antes de crear un flujo de trabajo privado, debe crear una imagen de contenedor para su flujo de trabajo. La imagen se carga en un repositorio de imágenes privado de Amazon Elastic Container Registry (Amazon ECR). Al ejecutar el flujo de trabajo, el HealthOmics servicio accede a los contenedores que usted proporciona.
El repositorio Amazon ECR de la imagen del contenedor debe residir en la misma AWS región que la cuenta que llama al servicio. La imagen del contenedor Cuenta de AWS puede ser propiedad de otra persona, siempre que el repositorio de imágenes de origen proporcione los permisos adecuados. Para obtener más información, consulte las políticas de repositorio de Amazon Elastic Container Registry para flujos de trabajo compartidos.
Le recomendamos que defina la imagen del contenedor de Amazon ECR URIs como parámetros de su flujo de trabajo para poder verificar el acceso antes de que comience la ejecución. También facilita la ejecución de un flujo de trabajo en una nueva región al cambiar el parámetro de región.
nota
HealthOmics no admite contenedores ARM ni admite el acceso a repositorios públicos.
Para obtener información sobre la configuración de los permisos de IAM para acceder HealthOmics a Amazon ECR, consulte. Permisos de recursos
Temas
Consideraciones generales sobre las imágenes de contenedores de Amazon ECR
-
Arquitectura
HealthOmics admite contenedores x86_64. Si su máquina local está basada en ARM (como Apple Mac), utilice un comando como el siguiente para crear una imagen de contenedor x86_64:
docker build --platform amd64 -t my_tool:latest .
-
Punto de entrada y shell
HealthOmics Los motores de flujo de trabajo inyectan scripts bash como una sustitución de comandos en las imágenes del contenedor utilizadas en las tareas del flujo de trabajo. Por lo tanto, las imágenes de los contenedores deben crearse sin un PUNTO DE ENTRADA específico, de modo que el shell bash sea el predeterminado.
-
Rutas montadas
Un sistema de archivos compartido se monta en las tareas del contenedor en /tmp. Se anularán todos los datos o herramientas integrados en la imagen del contenedor en esta ubicación.
La definición del flujo de trabajo está disponible para las tareas mediante un montaje de solo lectura en /mnt/workflow.
-
Tamaño de imagen
Consulte los tamaños máximos HealthOmics cuotas de tamaño fijo del flujo de trabajo de imagen del contenedor.
Variables de entorno para los HealthOmics flujos de trabajo
HealthOmics proporciona variables de entorno que contienen información sobre el flujo de trabajo que se ejecuta en el contenedor. Puede utilizar los valores de estas variables en la lógica de las tareas del flujo de trabajo.
Todas las variables HealthOmics del flujo de trabajo comienzan con el AWS_WORKFLOW_
prefijo. Este prefijo es un prefijo de variable de entorno protegido. No utilice este prefijo para sus propias variables en los contenedores de flujo de trabajo.
HealthOmics proporciona las siguientes variables de entorno de flujo de trabajo:
- AWS_REGION
-
Esta variable es la región en la que se ejecuta el contenedor.
- AWS_WORKFLOW_EJECUTAR
-
Esta variable es el nombre de la ejecución actual.
- AWS_WORKFLOW_RUN_ID
-
Esta variable es el identificador de ejecución de la ejecución actual.
- AWS_WORKFLOW_RUN_UUID
-
Esta variable es el UUID de ejecución de la ejecución actual.
- AWS_WORKFLOW_TAREA
-
Esta variable es el nombre de la tarea actual.
- AWS_WORKFLOW_TASK_ID
-
Esta variable es el identificador de la tarea actual.
- AWS_WORKFLOW_TASK_UUID
-
Esta variable es el UUID de la tarea actual.
El siguiente ejemplo muestra los valores típicos de cada variable de entorno:
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
Uso de Java en imágenes de contenedores de Amazon ECR
Si una tarea de flujo de trabajo utiliza una aplicación Java como GATK, tenga en cuenta los siguientes requisitos de memoria para el contenedor:
-
Las aplicaciones Java utilizan memoria de pila y memoria de pila. De forma predeterminada, la memoria de pila máxima es un porcentaje de la memoria total disponible en el contenedor. Este valor predeterminado depende de la distribución específica de la JVM y de la versión de la JVM, así que consulte la documentación correspondiente a su JVM o establezca explícitamente el máximo de memoria dinámica mediante las opciones de la línea de comandos de Java (como `-Xmx`).
-
No establezcas que la memoria de pila máxima sea el 100% de la asignación de memoria del contenedor, ya que la pila de JVM también requiere memoria. También se necesita memoria para el recolector de basura de la JVM y para cualquier otro proceso del sistema operativo que se ejecute en el contenedor.
-
Algunas aplicaciones Java, como GATK, pueden utilizar invocaciones de métodos nativos u otras optimizaciones, como los archivos de mapeo de memoria. Estas técnicas requieren asignaciones de memoria que se realicen «fuera del montón», que no están controladas por el parámetro de pila máxima de la JVM.
Si sabe (o sospecha) que su aplicación Java asigna memoria fuera del montón, asegúrese de que la asignación de la memoria a las tareas incluya los requisitos de memoria fuera del montón.
Si estas asignaciones fuera del montón provocan que el contenedor se quede sin memoria, normalmente no aparecerá ningún OutOfMemory error de Java, ya que la JVM no controla esta memoria.
Añada entradas de tareas a una imagen de contenedor ECR
Añada todos los ejecutables, bibliotecas y scripts necesarios para ejecutar una tarea de flujo de trabajo a la imagen de Amazon ECR que se utiliza para ejecutar la tarea.
Se recomienda evitar el uso de scripts, archivos binarios y bibliotecas externos a la imagen del contenedor de tareas. Esto es especialmente importante cuando se utilizan nf-core
flujos de trabajo que utilizan un bin
directorio como parte del paquete de flujo de trabajo. Si bien este directorio estará disponible para la tarea de flujo de trabajo, está montado como un directorio de solo lectura. Los recursos necesarios de este directorio deben copiarse en la imagen de la tarea y estar disponibles en tiempo de ejecución o al crear la imagen del contenedor utilizada para la tarea.
Consulte HealthOmics cuotas de tamaño fijo del flujo de trabajo el tamaño máximo de la imagen del contenedor que HealthOmics admite.