VPC-Connected Workflows: 워크플로우에서 인터넷과 크로스 리전 S3에 접근하기
개요
2026년 3월, AWS HealthOmics에 VPC-Connected Workflows 기능이 추가되었습니다. 이 기능을 사용하면 HealthOmics 워크플로우가 고객이 관리하는 VPC를 통해 네트워크 트래픽을 라우팅할 수 있어, 기존 RESTRICTED 모드의 네트워크 제한을 해소할 수 있습니다.
본 게시물에서는 이 기능의 동작 원리, 실제 테스트 결과, 그리고 CDK를 활용한 인프라 구성 방법을 소개합니다.
기존 RESTRICTED 모드의 한계
HealthOmics 워크플로우의 기본 네트워킹 모드는 RESTRICTED입니다. 이 모드에서 워크플로우 태스크는 같은 리전의 S3와 ECR에만 접근할 수 있으며, 그 외의 네트워크 통신은 모두 차단됩니다.
이로 인해 다음과 같은 일반적인 생물정보학 워크플로우 시나리오가 제한됩니다:
- 공개 데이터베이스 접근 불가: NCBI, Ensembl 등 공개 생물정보학 데이터베이스에서 레퍼런스 데이터를 다운로드할 수 없음
- 외부 API 호출 불가: 라이선스 서버, REST API, 알림 웹훅 등에 연결할 수 없음
- 크로스 리전 S3 접근 불가: 다른 AWS 리전의 S3 버킷에 저장된 유전체 데이터셋에 접근할 수 없음
특히 크로스 리전 S3의 경우, RESTRICTED 모드에서는 StartRun API 호출 시점에 S3 버킷의 리전을 검증하여, 다른 리전의 S3 URI가 포함되어 있으면 워크플로우가 시작조차 되지 않습니다.
VPC 모드: 어떻게 동작하는가
VPC 모드에서는 HealthOmics가 워크플로우 태스크의 ENI(Elastic Network Interface)를 고객의 VPC 프라이빗 서브넷에 생성합니다. 이 ENI를 통해 트래픽이 VPC의 NAT 게이트웨이를 거쳐 인터넷 또는 다른 리전의 AWS 서비스로 라우팅됩니다.
┌──────────────────────────────────────────────────────┐
│ VPC (10.0.0.0/16) │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌────────────┐ │
│ │ Private Sub-a│ │ Private Sub-b│ │Private Sub-c│ │
│ │ HealthOmics │ │ HealthOmics │ │ HealthOmics│ │
│ │ ENIs │ │ ENIs │ │ ENIs │ │
│ └──────┬───────┘ └──────┬───────┘ └─────┬──────┘ │
│ └─────────────────┼────────────────┘ │
│ │ │
│ ┌────────▼────────┐ │
│ │ NAT Gateway │ │
│ │ (Public Subnet) │ │
│ └────────┬────────┘ │
│ │ │
│ S3 Gateway Endpoint ─── 같은 리전 S3 (비용 없음) │
│ Security Group: 아웃바운드 HTTPS 443만 허용 │
└───────────────────────────┼──────────────────────────┘
│
┌─────────────┼─────────────┐
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 퍼블릭 │ │ 크로스 리전 │ │ 외부 │
│ 인터넷 │ │ S3 버킷 │ │ REST API │
│ (NCBI 등) │ │ (us-east-1) │ │ (GitHub 등) │
└──────────────┘ └──────────────┘ └──────────────┘
트래픽 경로 요약:
- 같은 리전 S3: S3 Gateway 엔드포인트를 통해 직접 접근 (데이터 전송 비용 없음)
- 인터넷/크로스 리전: 프라이빗 서브넷 → NAT 게이트웨이 → 인터넷 게이트웨이
콘솔에서 확인하기
HealthOmics 콘솔의 Run summary에서 두 모드의 차이를 확인할 수 있습니다.
RESTRICTED 모드 실행 화면
RESTRICTED 모드로 실행한 경우, Networking mode 항목에 Restricted로 표시됩니다. Configuration 항목은 표시되지 않으며, 워크플로우는 HealthOmics의 기본 네트워크 환경에서 실행됩니다. 같은 리전의 S3와 ECR만 접근 가능하고, 외부 인터넷 연결은 불가합니다.
VPC 모드 실행 화면
VPC 모드로 실행한 경우, Networking mode 항목에 Virtual Private Cloud (VPC)로 표시되며, 그 아래에 Configuration 항목이 추가로 나타납니다. 여기에는 연결된 VPC Configuration의 이름(예: tutorial-vpc-config)이 링크로 표시되어, 클릭하면 해당 Configuration의 상세 정보(VPC ID, 서브넷, 보안 그룹 등)를 확인할 수 있습니다.
두 실행 모두 동일한 워크플로우(vpc-connectivity-test-v3, WDL)를 사용했으며, 실행 시간도 유사합니다(RESTRICTED: 5분 49초, VPC: 5분 21초).
실제 테스트 결과
ap-northeast-2(서울) 리전에서 동일한 WDL 워크플로우를 RESTRICTED 모드와 VPC 모드로 각각 실행하여 연결성을 비교 테스트했습니다.
테스트 항목
카테고리 A — 인터넷 접근:
- A1:
curl https://checkip.amazonaws.com(아웃바운드 HTTPS + NAT 퍼블릭 IP 확인) - A2:
wget https://ftp.ncbi.nlm.nih.gov/robots.txt(NCBI 공개 리소스 다운로드) - A3:
curl https://api.github.com(외부 REST API 접근)
카테고리 B — 크로스 리전 S3 접근 (us-east-1 → ap-northeast-2):
- B1:
aws s3 cp(크로스 리전 파일 다운로드) - B2:
aws s3 ls(크로스 리전 버킷 목록 조회)
결과 비교
| 테스트 | RESTRICTED 모드 | VPC 모드 |
|---|---|---|
| A1 — checkip.amazonaws.com | FAIL (타임아웃) | PASS (NAT IP 반환) |
| A2 — NCBI robots.txt 다운로드 | FAIL (타임아웃) | PASS (파일 다운로드 성공) |
| A3 — GitHub API 호출 | FAIL (타임아웃) | PASS (HTTP 200) |
| B1 — 크로스 리전 S3 다운로드 | API에서 차단 | PASS (파일 다운로드 성공) |
| B2 — 크로스 리전 S3 목록 조회 | API에서 차단 | PASS (객체 목록 반환) |
RESTRICTED 모드에서는 인터넷 테스트가 모두 타임아웃으로 실패하며, 크로스 리전 S3는 StartRun API 호출 자체가 ValidationException: S3 bucket not located in ap-northeast-2 region으로 거부됩니다.
VPC 모드에서는 5개 테스트 모두 성공합니다.
CDK를 활용한 인프라 구성
VPC 모드를 사용하려면 HealthOmics 요구사항에 맞는 VPC와 HealthOmics Configuration을 생성해야 합니다. 이를 간소화하기 위해 HealthOmicsVpc CDK L3 Construct를 활용할 수 있습니다.
이 CDK Construct는 cdk deploy 한 번으로 다음을 모두 생성합니다:
- VPC: HealthOmics 지원 AZ에 자동 배치된 퍼블릭/프라이빗 서브넷
- NAT 게이트웨이: development(1개) 또는 production(AZ당 1개) 모드 선택
- 보안 그룹: 최소 권한 원칙 (아웃바운드 HTTPS 443만 허용)
- S3 Gateway 엔드포인트: 같은 리전 S3 접근 시 데이터 전송 비용 없음
- VPC Flow Logs: CloudWatch Logs로 자동 전송
- HealthOmics Configuration: Custom Resource를 통해 자동 생성 및 수명 주기 관리
사용 예시
import { HealthOmicsVpc } from './lib';
new HealthOmicsVpc(stack, 'HealthOmicsVpc', {
networkingConfigurationName: 'my-vpc-config',
deploymentMode: 'development', // NAT GW 1개 (비용 절감)
vpcEndpoints: ['s3'], // S3 Gateway 엔드포인트
});
배포 절차
# 환경 변수 설정
export AWS_REGION=us-east-1
export AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
# CDK 배포
cd healthomics-vpc-cdk-main
npm install
npx cdk bootstrap aws://${AWS_ACCOUNT_ID}/${AWS_REGION}
npx cdk deploy --require-approval never
배포 후 Configuration이 ACTIVE 상태가 되면 (약 5분 소요) VPC 모드로 워크플로우를 실행할 수 있습니다.
워크플로우 실행 방법
RESTRICTED 모드 (기본)
aws omics start-run \
--workflow-id <WORKFLOW_ID> \
--role-arn <ROLE_ARN> \
--output-uri s3://my-bucket/output/ \
--parameters '{"output_s3_uri": "s3://my-bucket/report.json"}'
VPC 모드
aws omics start-run \
--workflow-id <WORKFLOW_ID> \
--role-arn <ROLE_ARN> \
--output-uri s3://my-bucket/output/ \
--networking-mode VPC \
--configuration-name my-vpc-config \
--parameters '{
"output_s3_uri": "s3://my-bucket/report.json",
"cross_region_s3_uri": "s3://bucket-in-other-region/data.txt"
}'
차이점은 --networking-mode VPC와 --configuration-name 두 가지 파라미터의 추가입니다.
알아두면 좋은 점
ECR 이미지 설정
HealthOmics는 ECR 프라이빗 리포지토리 이미지만 지원합니다. Docker Hub나 Public ECR 이미지는 사용할 수 없습니다. 또한 IAM 역할 권한 외에 ECR 리포지토리 자체에 omics.amazonaws.com 서비스 프린시플에 대한 접근 정책을 설정해야 합니다.
aws ecr set-repository-policy \
--repository-name my-repo \
--policy-text '{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": {"Service": "omics.amazonaws.com"},
"Action": [
"ecr:BatchGetImage",
"ecr:GetDownloadUrlForLayer",
"ecr:BatchCheckLayerAvailability"
]
}]
}'
S3 파라미터 검증
HealthOmics는 StartRun 호출 시 워크플로우 파라미터의 S3 URI를 검증합니다:
- 참조하는 S3 객체가 존재해야 합니다 (출력 경로의 경우 플레이스홀더 생성 필요)
- RESTRICTED 모드에서는 S3 버킷이 같은 리전에 있어야 합니다
성능 영향
VPC 모드는 ENI 프로비저닝으로 인해 시작 시간이 약 30~60초 더 소요됩니다. 워크플로우 태스크 자체의 실행 시간에는 유의미한 차이가 없습니다.
비용 고려
| 리소스 | 비용 | 비고 |
|---|---|---|
| NAT 게이트웨이 | 시간당 ~$0.045 + 데이터 처리 | 가장 큰 비용 항목 |
| S3 Gateway 엔드포인트 | 무료 | 같은 리전 S3 접근 |
| VPC Flow Logs | CloudWatch Logs 수집 비용 | 트러블슈팅에 유용 |
테스트나 개발 목적이라면 development 모드(NAT 게이트웨이 1개)를 사용하고, 테스트 완료 후 즉시 리소스를 정리하여 불필요한 비용을 방지하세요.
지원 리전
| 리전 | AZ 수 |
|---|---|
| us-east-1 (버지니아 북부) | 4 |
| us-west-2 (오레곤) | 3 |
| eu-west-1 (아일랜드) | 3 |
| eu-west-2 (런던) | 3 |
| eu-central-1 (프랑크푸르트) | 3 |
| ap-southeast-1 (싱가포르) | 3 |
| ap-northeast-2 (서울) | 3 |
| il-central-1 (텔아비브) | 3 |
정리
VPC-Connected Workflows는 HealthOmics 워크플로우의 네트워크 접근성을 크게 확장하는 기능입니다. 외부 데이터베이스 접근, API 호출, 크로스 리전 데이터 활용이 필요한 생물정보학 파이프라인에서 특히 유용하며, CDK L3 Construct를 활용하면 복잡한 VPC 인프라 구성을 단일 명령으로 완료할 수 있습니다.

