Imagens de contêiner no Amazon ECR para fluxos de trabalho privados - AWS HealthOmics

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Imagens de contêiner no Amazon ECR para fluxos de trabalho privados

Antes de criar um fluxo de trabalho privado, você cria uma imagem de contêiner para seu fluxo de trabalho. Você carrega a imagem em um repositório de imagens privado no Amazon Elastic Container Registry (Amazon ECR). Quando você executa o fluxo de trabalho, o HealthOmics serviço acessa os contêineres que você fornece.

Imagem de contêiner O repositório Amazon ECR deve residir na mesma AWS região da conta que está chamando o serviço. Uma pessoa diferente Conta da AWS pode possuir a imagem do contêiner, desde que o repositório de imagens de origem forneça as permissões apropriadas. Para obter mais informações, consulte as políticas de repositório do Amazon Elastic Container Registry para fluxos de trabalho compartilhados.

Recomendamos que você defina a imagem do contêiner do Amazon ECR URIs como parâmetros em seu fluxo de trabalho para que o acesso possa ser verificado antes do início da execução. Também facilita a execução de um fluxo de trabalho em uma nova região alterando o parâmetro Região.

nota

HealthOmics não oferece suporte a contêineres ARM e não oferece suporte ao acesso a repositórios públicos.

Para obter informações sobre como configurar as permissões do IAM HealthOmics para acessar o Amazon ECR, consulte. Permissões de recursos

Considerações gerais sobre imagens de contêineres do Amazon ECR

  • Arquitetura

    HealthOmics suporta contêineres x86_64. Se sua máquina local for baseada em ARM, como Apple (Mac), use um comando como o seguinte para criar uma imagem de contêiner x86_64:

    docker build --platform amd64 -t my_tool:latest .
  • Ponto de entrada e concha

    HealthOmics os mecanismos de fluxo de trabalho injetam scripts bash como uma substituição de comando nas imagens de contêiner usadas pelas tarefas do fluxo de trabalho. Portanto, as imagens de contêiner devem ser criadas sem um ENTRYPOINT especificado, de forma que um shell bash seja o padrão.

  • Caminhos montados

    Um sistema de arquivos compartilhado é montado nas tarefas do contêiner em /tmp. Todos os dados ou ferramentas incorporados à imagem do contêiner nesse local serão substituídos.

    A definição do fluxo de trabalho está disponível para tarefas por meio de uma montagem somente para leitura em /mnt/workflow.

  • Tamanho da imagem

    Consulte HealthOmics cotas de tamanho fixo do fluxo de trabalho os tamanhos máximos de imagem do contêiner.

Variáveis de ambiente para HealthOmics fluxos de trabalho

HealthOmics fornece variáveis de ambiente que têm informações sobre o fluxo de trabalho em execução no contêiner. Você pode usar os valores dessas variáveis na lógica das tarefas do fluxo de trabalho.

Todas as variáveis do HealthOmics fluxo de trabalho começam com o AWS_WORKFLOW_ prefixo. Esse prefixo é um prefixo de variável de ambiente protegido. Não use esse prefixo para suas próprias variáveis em contêineres de fluxo de trabalho.

HealthOmics fornece as seguintes variáveis de ambiente de fluxo de trabalho:

AWS_REGION

Essa variável é a região em que o contêiner está sendo executado.

AWS_WORKFLOW_EXECUTAR

Essa variável é o nome da execução atual.

AWS_WORKFLOW_ID DE EXECUÇÃO

Essa variável é o identificador da execução atual.

AWS_WORKFLOW_EXECUTAR UUID

Essa variável é o UUID de execução da execução atual.

AWS_WORKFLOW_TAREFA

Essa variável é o nome da tarefa atual.

AWS_WORKFLOW_ID DA TAREFA

Essa variável é o identificador da tarefa atual.

AWS_WORKFLOW_TASK_UUID

Essa variável é o UUID da tarefa atual.

O exemplo a seguir mostra valores típicos para cada variável de ambiente:

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

Usando Java em imagens de contêiner do Amazon ECR

Se uma tarefa de fluxo de trabalho usa um aplicativo Java como o GATK, considere os seguintes requisitos de memória para o contêiner:

  • Os aplicativos Java usam memória de pilha e memória de pilha. Por padrão, a memória máxima da pilha é uma porcentagem da memória total disponível no contêiner. Esse padrão depende da distribuição específica da JVM e da versão da JVM, portanto, consulte a documentação relevante da sua JVM ou defina explicitamente o máximo de memória do heap usando as opções da linha de comando Java (como `-Xmx`).

  • Não defina a memória máxima do heap como 100% da alocação de memória do contêiner, pois a pilha da JVM também requer memória. A memória também é necessária para o coletor de lixo da JVM e para qualquer outro processo do sistema operacional em execução no contêiner.

  • Alguns aplicativos Java, como o GATK, podem usar invocações de métodos nativos ou outras otimizações, como arquivos de mapeamento de memória. Essas técnicas exigem alocações de memória executadas “fora da pilha”, que não são controladas pelo parâmetro máximo de pilha da JVM.

    Se você sabe (ou suspeita) que seu aplicativo Java aloca memória fora da pilha, certifique-se de que sua alocação de memória de tarefas inclua os requisitos de memória fora da pilha.

    Se essas alocações fora do heap fizerem com que o contêiner fique sem memória, você normalmente não verá um OutOfMemory erro de Java, porque a JVM não controla essa memória.

Adicionar entradas de tarefas a uma imagem de contêiner ECR

Adicione todos os executáveis, bibliotecas e scripts necessários para executar uma tarefa de fluxo de trabalho na imagem do Amazon ECR usada para executar a tarefa.

É uma prática recomendada evitar o uso de scripts, binários e bibliotecas externos à imagem do contêiner de tarefas. Isso é especialmente importante ao usar nf-core fluxos de trabalho que usam um bin diretório como parte do pacote de fluxo de trabalho. Embora esse diretório esteja disponível para a tarefa do fluxo de trabalho, ele é montado como um diretório somente para leitura. Os recursos necessários nesse diretório devem ser copiados na imagem da tarefa e disponibilizados em tempo de execução ou ao criar a imagem do contêiner usada para a tarefa.

Consulte HealthOmics cotas de tamanho fixo do fluxo de trabalho o tamanho máximo da imagem do contêiner HealthOmics compatível.