Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Images de conteneurs dans Amazon ECR pour les flux de travail privés
Avant de créer un flux de travail privé, vous devez créer une image de conteneur pour votre flux de travail. Vous chargez l'image dans un référentiel d'images privé dans Amazon Elastic Container Registry (Amazon ECR). Lorsque vous exécutez le flux de travail, le HealthOmics service accède aux conteneurs que vous fournissez.
Le référentiel Amazon ECR d'images de conteneur doit se trouver dans la même AWS région que le compte appelant le service. Une autre personne Compte AWS peut être propriétaire de l'image du conteneur, à condition que le référentiel d'images source fournisse les autorisations appropriées. Pour plus d'informations, consultez les politiques de référentiel Amazon Elastic Container Registry pour les flux de travail partagés.
Nous vous recommandons de définir votre image de conteneur Amazon ECR en URIs tant que paramètre de votre flux de travail afin que l'accès puisse être vérifié avant le début de l'exécution. Cela facilite également l'exécution d'un flux de travail dans une nouvelle région en modifiant le paramètre Région.
Note
HealthOmics ne prend pas en charge les conteneurs ARM et ne prend pas en charge l'accès aux référentiels publics.
Pour plus d'informations sur la configuration des autorisations IAM pour accéder HealthOmics à Amazon ECR, consultez. Autorisations d’accès aux ressources
Rubriques
Considérations générales relatives aux images de conteneurs Amazon ECR
-
Architecture
HealthOmics prend en charge les conteneurs x86_64. Si votre machine locale est basée sur ARM (Apple Mac, par exemple), utilisez une commande telle que la suivante pour créer une image de conteneur x86_64 :
docker build --platform amd64 -t my_tool:latest .
-
Point d'entrée et coque
HealthOmics les moteurs de flux de travail injectent des scripts bash pour remplacer les commandes des images de conteneur utilisées par les tâches de flux de travail. Ainsi, les images de conteneur doivent être créées sans point d'entrée spécifié, de sorte qu'un shell bash soit le shell par défaut.
-
Chemins montés
Un système de fichiers partagé est monté sur les tâches du conteneur dans /tmp. Toutes les données ou tous les outils intégrés à l'image du conteneur à cet emplacement seront remplacés.
La définition du flux de travail est accessible aux tâches via un montage en lecture seule sur /mnt/workflow.
-
Taille de l'image
Voir HealthOmics quotas de taille fixe du flux de travail pour les tailles maximales des images des conteneurs.
Variables d'environnement pour les HealthOmics flux de travail
HealthOmics fournit des variables d'environnement contenant des informations sur le flux de travail exécuté dans le conteneur. Vous pouvez utiliser les valeurs de ces variables dans la logique de vos tâches de flux de travail.
Toutes les variables HealthOmics de flux de travail commencent par le AWS_WORKFLOW_
préfixe. Ce préfixe est un préfixe de variable d'environnement protégée. N'utilisez pas ce préfixe pour vos propres variables dans les conteneurs de flux de travail.
HealthOmics fournit les variables d'environnement de flux de travail suivantes :
- AWS_REGION
-
Cette variable correspond à la région dans laquelle le conteneur est exécuté.
- AWS_WORKFLOW_EXÉCUTER
-
Cette variable est le nom de l'exécution en cours.
- AWS_WORKFLOW_RUN_ID
-
Cette variable est l'identifiant de l'exécution en cours.
- AWS_WORKFLOW_EXÉCUTER_UUID
-
Cette variable est l'UUID d'exécution de l'exécution en cours.
- AWS_WORKFLOW_TÂCHE
-
Cette variable est le nom de la tâche en cours.
- AWS_WORKFLOW_IDENTIFIANT DE TÂCHE
-
Cette variable est l'identifiant de la tâche en cours.
- AWS_WORKFLOW_UUID DE TÂCHE
-
Cette variable est l'UUID de la tâche en cours.
L'exemple suivant montre les valeurs typiques de chaque variable d'environnement :
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
Utilisation de Java dans les images de conteneurs Amazon ECR
Si une tâche de flux de travail utilise une application Java telle que GATK, tenez compte des exigences de mémoire suivantes pour le conteneur :
-
Les applications Java utilisent de la mémoire en pile et de la mémoire en tas. Par défaut, la mémoire de segment maximale est un pourcentage de la mémoire totale disponible dans le conteneur. Cette valeur par défaut dépend de la distribution et de la version de la JVM spécifiques. Consultez donc la documentation correspondante à votre machine virtuelle Java ou définissez explicitement le maximum de mémoire à l'aide des options de ligne de commande Java (telles que `-Xmx`).
-
Ne définissez pas la mémoire de segment maximale à 100 % de l'allocation de mémoire du conteneur, car la pile JVM nécessite également de la mémoire. De la mémoire est également requise pour le ramasse-miettes de la machine virtuelle Java et pour tout autre processus du système d'exploitation exécuté dans le conteneur.
-
Certaines applications Java, telles que GATK, peuvent utiliser des invocations de méthodes natives ou d'autres optimisations telles que des fichiers de mappage de mémoire. Ces techniques nécessitent des allocations de mémoire effectuées « hors segment », qui ne sont pas contrôlées par le paramètre de mémoire maximale de la JVM.
Si vous savez (ou pensez) que votre application Java alloue de la mémoire hors segment, assurez-vous que l'allocation de mémoire aux tâches inclut les exigences en matière de mémoire hors segment.
Si ces allocations hors segment entraînent un manque de mémoire du conteneur, vous ne verrez généralement pas d'OutOfMemoryerreur Java, car la JVM ne contrôle pas cette mémoire.
Ajouter des entrées de tâches à une image de conteneur ECR
Ajoutez tous les exécutables, bibliothèques et scripts nécessaires pour exécuter une tâche de flux de travail dans l'image Amazon ECR utilisée pour exécuter la tâche.
Il est recommandé d'éviter d'utiliser des scripts, des fichiers binaires et des bibliothèques externes à une image de conteneur de tâches. Cela est particulièrement important lorsque vous utilisez nf-core
des flux de travail qui utilisent un bin
répertoire dans le cadre du package de flux de travail. Bien que ce répertoire soit disponible pour la tâche de flux de travail, il est monté en tant que répertoire en lecture seule. Les ressources requises dans ce répertoire doivent être copiées dans l'image de la tâche et mises à disposition lors de l'exécution ou lors de la création de l'image de conteneur utilisée pour la tâche.
Voir HealthOmics quotas de taille fixe du flux de travail pour connaître la taille maximale de l'image de conteneur prise HealthOmics en charge.