Notice
Recent Posts
Recent Comments
Link
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
Archives
Today
Total
관리 메뉴

Cloud Is My Life

[26WKRD2] EFS on ECS 경험해보기 본문

카테고리 없음

[26WKRD2] EFS on ECS 경험해보기

CloudBackend 2026. 4. 3. 02:20

Image by Amazon Web Services

 

개요

ECS 환경에서도 여러 태스크가 동시에 접근할 수 있는 공유 스토리지가 필요할 때 Amazon EFS를 사용할 수 있습니다. 컨테이너를 재시작하거나 태스크가 다른 인스턴스에 재배치되더라도 동일한 데이터를 계속 참조할 수 있기 때문에, 정적 파일 공유, 업로드 데이터 보관, 공통 작업 디렉터리 구성과 같은 상황에서 유용하게 활용할 수 있습니다.

 

이번 글에서는 Amazon ECS에서 EFS를 연동하는 방법을 간단히 살펴보겠습니다. EFS 파일 시스템과 Access Point를 준비하고, ECS Task Definition과 Service에 이를 연결한 뒤, 실제로 컨테이너에서 공유 스토리지가 정상적으로 마운트되는지 확인해보겠습니다. 운영 환경에서 함께 고려해야 할 권한 설정이나 보안 포인트도 간단히 정리해보겠습니다.

1. VPC 및 초기 리소스 셋업

먼저, ECS 클러스터와 앱, EFS 등을 배포하기 위한 VPC를 생성해줍니다. 필자는 서울 리전에 아래와 같이 VPC를 구성하였습니다.

 

이후, 이번 프로젝트에서 사용할 보안 그룹을 설정합니다. 보안 그룹은 아래와 같이 설정합니다.

ECS SG; Allow inbound from 10.56.0.0/16(vpc cidr) to any, Allow outbound to 0.0.0.0/0 from any.

EFS SG; Allow inbound from ECS SG to port 2049, Allow outbound to 10.56.0.0/16(vpc cidr) from any.

2. EFS 구성하기

이제 ECS Task가 사용할 EFS와 Access Point를 생성해보겠습니다. 

아래는 필자의 구성이므로, 여러분들이 구성할 때에는 여러분들의 입맛에 맞게 잘 선택하여 생성하시면 좋겠습니다.

 

네트워크 파트의 경우, Mount Point가 배치될 Subnet을 Private subnet으로 설정하고, 보안 그룹은 앞서 생성한 efs-sg로 설정합니다.

 

이후, 파일 시스템 정책 파트는 여러분의 입맛에 맞게 잘 설정하도록 합니다. 그리고 생성합니다.

 

그 다음으로, EFS Access Point를 생성합니다.

아래 설정 또한 필자가 임의로 지정한 값들이니 여러분들이 생성 시에는 여러분들의 입맛에 맞게 잘 설정하시기 바랍니다. 단, POSIX 값, 루트 디렉토리 설정 권한의 user, group id는 가능하면 아래 설정을 따르는 것을 권장합니다.

 

이렇게 값을 잘 채워넣은 뒤, 생성합니다. POSIX User를 0으로 두는 이유는 ECS Task는 기본적으로 Root 유저로 실행되기 때문입니다. 

fsap가 잘 생성되었습니다! Yarr~

3. ECR 구성

테스트용 App을 ECS에 배포하기 위해 ECR을 사용합니다. 아래와 같이 잘 설정하여 ECR 레포를 생성합니다.

 

이후, 이 레포<링크삽입필요>를 클론받아, 아래 명령어를 실행하여 이미지를 업로드합니다.

cd app
chmod +x _push_to_ecr.sh
./_push_to_ecr.sh <repo name>

 

실행한 후, 이미지가 잘 업로드된 것을 볼 수 있습니다.

4. ECS 클러스터 구성 및 배포

먼저, 실행할 ECS Task에 대한 태스크 정의를 생성합니다. 아래 값들은 필자가 임의로 선택한 값들이오니 참고하시기 바랍니다. 

이 때, ecsTaskRoleforEFS 설정값은 아래 내용을 참고하시기 바랍니다.

 

이렇게 설정한 후, 스토리지 파트에 볼륨 유형을 EFS로 설정하여 연결합니다. EFS AP의 경우 선택적으로 사용합니다.

위의 컨테이너 볼륨 탑재 경로는 적절히 여러분들의 상황에 맞게 설정합니다. 

이후, 고급 구성에서 전송 중 암호화, IAM 권한 부여 옵션을 활성화합니다.

 

이제, ECS Cluster를 생성해봅시다.

이름을 설정한 후, Fargate 및 자체 관리형 인스턴스에서 새 ASG 그룹, 온디맨드를 선택합니다. 만약 Managed Instance 또는 Fargate Only로 Capa provider를 구성하길 원할 경우, 해당 방식으로 진행해도 좋습니다. 

(사실 해보니 Fargate만 해도 될 듯 합니다.)

 

AMI는 AL2023을 선택하였고, EC2 Instance Type 및 용량은 t3.medium, Min 2대, Max 3대를 선택하였습니다. 또한, 굳이 SSH 접속이 필요 없기에 Key Pair를 선택하지 않았습니다. 

EC2 Instance Role은 EFS ClientMount, ClientWrite 권한을 부여하여 생성했습니다.

 

VPC는 이전에 생성한 ecsfs vpc, 서브넷은 Private subnet 전체를 선택하였고, ECS Security Group을 선택하였습니다.

이제 우리의 작고 소중한 ECS 클러스터가 생성되었습니다.

 

이렇게 생성한 후, 아까 클론받은 repo의 patch_ecs_lt_for_efs.sh를 아래 명령어로 실행하여 EFS Util 패치를 진행합니다. 만약 Fargate Only로 구성한 경우 진행하지 않아도 무관합니다.

chmod +x patch_ecs_lt_for_efs.sh
./patch_ecs_lt_for_efs.sh <cluster-name>


그 다음으로, 태스크를 생성해봅시다. ECS 클러스터 -> 태스크 -> 새 태스크 실행을 선택합니다.

이제, 태스크를 실행해봅시다. 아래 값 또한 필자가 임의로 설정한 값이니 여러분들이 구성할 때에는 여러분들의 입맛에 맞게 잘 설정하여 구성하시기 바랍니다.

이후, 컴퓨팅 옵션은 Fargate를 선택하도록 합니다.

네트워킹 파트의 경우 ecsfs vpc와 Private subnet 전체, EFS Security Group을 선택합니다.

 

이후, 태스크 배치도 적절히 선택합니다.

이제 생성합니다.

정상적으로 실행됩니다.

 

로그도 잘 찍힙니다 Yarr~

마치며

이번 글에서는 Amazon ECS 환경에서 Amazon EFS를 연동하여 여러 태스크가 동시에 접근할 수 있는 공유 스토리지를 구성하는 과정을 간단히 살펴보았습니다. VPC와 보안 그룹 같은 기본 네트워크 구성을 준비한 뒤, EFS 파일 시스템과 Access Point를 생성하고, 이를 ECS Task Definition과 연결하여 실제 컨테이너에서 정상적으로 마운트되는 것까지 확인해보았습니다.

 

EFS는 컨테이너가 재시작되거나 다른 호스트로 재배치되더라도 동일한 데이터를 지속적으로 참조할 수 있다는 점에서, 상태를 일부 유지해야 하는 워크로드나 여러 태스크 간 파일 공유가 필요한 환경에서 꽤 유용한 선택지가 될 수 있습니다. 특히 업로드 파일 저장, 공용 작업 디렉터리, 정적 리소스 공유 같은 시나리오에서 ECS와 잘 어울립니다.

다만 실제 운영 환경에서는 단순히 마운트가 되는지만 확인하는 것을 넘어, Access Point를 활용한 권한 분리, IAM 권한 부여, 전송 중 암호화, 보안 그룹 최소 허용 정책, 그리고 성능 모드나 비용 구조까지 함께 고려하는 것이 중요합니다. 또한 Fargate와 EC2 기반 ECS는 구성 방식과 점검 포인트가 조금씩 다를 수 있으므로, 사용하는 실행 환경에 맞춰 세부 설정을 검토하는 것이 좋습니다.