기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
프라이빗 워크플로를 위한 Amazon ECR의 컨테이너 이미지
프라이빗 워크플로를 생성하기 전에 워크플로에 대한 컨테이너 이미지를 생성합니다. Amazon Elastic Container Registry(Amazon ECR)의 프라이빗 이미지 리포지토리에 이미지를 업로드합니다. 워크플로를 실행하면 HealthOmics 서비스가 사용자가 제공하는 컨테이너에 액세스합니다.
컨테이너 이미지 Amazon ECR 리포지토리는 서비스를 호출하는 계정과 동일한 AWS 리전에 있어야 합니다. 소스 이미지 리포지토리가 적절한 권한을 제공하는 한 다른가 컨테이너 이미지를 소유할 AWS 계정 수 있습니다. 자세한 내용은 공유 워크플로에 대한 Amazon Elastic Container Registry 리포지토리 정책을 참조하세요.
실행이 시작되기 전에 액세스를 확인할 수 있도록 Amazon ECR 컨테이너 이미지 URIs를 워크플로의 파라미터로 정의하는 것이 좋습니다. 또한 리전 파라미터를 변경하여 새 리전에서 워크플로를 더 쉽게 실행할 수 있습니다.
참고
HealthOmics는 ARM 컨테이너를 지원하지 않으며 퍼블릭 리포지토리에 대한 액세스를 지원하지 않습니다.
HealthOmics가 Amazon ECR에 액세스하도록 IAM 권한을 구성하는 방법에 대한 자세한 내용은 섹션을 참조하세요리소스 권한.
주제
Amazon ECR 컨테이너 이미지에 대한 일반 고려 사항
-
아키텍처
HealthOmics는 x86_64 컨테이너를 지원합니다. 로컬 시스템이 Apple Mac과 같은 ARM 기반인 경우 다음과 같은 명령을 사용하여 x86_64 컨테이너 이미지를 빌드합니다.
docker build --platform amd64 -t my_tool:latest .
-
진입점 및 쉘
HealthOmics 워크플로 엔진은 워크플로 작업에 사용되는 컨테이너 이미지에 대한 명령 재정의로 bash 스크립트를 삽입합니다. 따라서 컨테이너 이미지는 bash 쉘이 기본값이 되도록 지정된 ENTRYPOINT 없이 빌드해야 합니다.
-
탑재된 경로
공유 파일 시스템은 /tmp에서 컨테이너 작업에 마운트됩니다. 이 위치의 컨테이너 이미지에 내장된 모든 데이터 또는 도구는 재정의됩니다.
워크플로 정의는 /mnt/workflow의 읽기 전용 탑재를 통해 태스크에 사용할 수 있습니다.
-
이미지 크기
최대 컨테이너 이미지 크기는 HealthOmics 워크플로 고정 크기 할당량 섹션을 참조하세요.
HealthOmics 워크플로의 환경 변수
HealthOmics는 컨테이너에서 실행되는 워크플로에 대한 정보가 있는 환경 변수를 제공합니다. 워크플로 작업의 로직에서 이러한 변수의 값을 사용할 수 있습니다.
모든 HealthOmics 워크플로 변수는 AWS_WORKFLOW_
접두사로 시작합니다. 이 접두사는 보호된 환경 변수 접두사입니다. 워크플로 컨테이너의 자체 변수에는이 접두사를 사용하지 마세요.
HealthOmics는 다음과 같은 워크플로 환경 변수를 제공합니다.
- AWS_REGION
-
이 변수는 컨테이너가 실행 중인 리전입니다.
- AWS_WORKFLOW_RUN
-
이 변수는 현재 실행의 이름입니다.
- AWS_WORKFLOW_RUN_ID
-
이 변수는 현재 실행의 실행 식별자입니다.
- AWS_WORKFLOW_RUN_UUID
-
이 변수는 현재 실행의 실행 UUID입니다.
- AWS_WORKFLOW_TASK
-
이 변수는 현재 작업의 이름입니다.
- AWS_WORKFLOW_TASK_ID
-
이 변수는 현재 작업의 작업 식별자입니다.
- AWS_WORKFLOW_TASK_UUID
-
이 변수는 현재 작업의 작업 UUID입니다.
다음 예제에서는 각 환경 변수의 일반적인 값을 보여줍니다.
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
Amazon ECR 컨테이너 이미지에서 Java 사용
워크플로 태스크가 GATK와 같은 Java 애플리케이션을 사용하는 경우 컨테이너에 대한 다음 메모리 요구 사항을 고려하세요.
-
Java 애플리케이션은 스택 메모리와 힙 메모리를 사용합니다. 기본적으로 최대 힙 메모리는 컨테이너에서 사용 가능한 총 메모리의 백분율입니다. 이 기본값은 특정 JVM 배포 및 JVM 버전에 따라 달라지므로 JVM 관련 설명서를 참조하거나 Java 명령줄 옵션(예: `-Xmx`)을 사용하여 힙 메모리 최대값을 명시적으로 설정합니다.
-
JVM 스택에도 메모리가 필요하므로 최대 힙 메모리를 컨테이너 메모리 할당의 100%로 설정하지 마세요. 메모리는 JVM 가비지 수집기 및 컨테이너에서 실행되는 기타 운영 체제 프로세스에도 필요합니다.
-
GATK와 같은 일부 Java 애플리케이션은 기본 메서드 호출 또는 메모리 매핑 파일과 같은 기타 최적화를 사용할 수 있습니다. 이러한 기법에는 JVM 최대 힙 파라미터로 제어되지 않는 "오프 힙"으로 수행되는 메모리 할당이 필요합니다.
Java 애플리케이션이 오프 힙 메모리를 할당한다는 것을 알고 있는 경우(또는 의심하는 경우) 태스크 메모리 할당에 오프 힙 메모리 요구 사항이 포함되어 있는지 확인합니다.
이러한 오프 힙 할당으로 인해 컨테이너의 메모리가 부족해지는 경우 일반적으로 JVM이이 메모리를 제어하지 않기 때문에 Java OutOfMemory 오류가 표시되지 않습니다.
ECR 컨테이너 이미지에 작업 입력 추가
워크플로 작업을 실행하는 데 필요한 모든 실행 파일, 라이브러리 및 스크립트를 작업을 실행하는 데 사용되는 Amazon ECR 이미지에 추가합니다.
작업 컨테이너 이미지 외부에 있는 스크립트, 바이너리 및 라이브러리를 사용하지 않는 것이 좋습니다. 이는 bin
디렉터리를 nf-core
워크플로 패키지의 일부로 사용하는 워크플로를 사용할 때 특히 중요합니다. 이 디렉터리는 워크플로 작업에 사용할 수 있지만 읽기 전용 디렉터리로 마운트됩니다. 이 디렉터리의 필수 리소스는 작업 이미지에 복사해야 하며 런타임 시 또는 작업에 사용되는 컨테이너 이미지를 빌드할 때 사용할 수 있어야 합니다.
HealthOmics가 지원하는 컨테이너 이미지의 최대 크기는 HealthOmics 워크플로 고정 크기 할당량 섹션을 참조하세요. HealthOmics