Tempo Di Valse

[AWS] ECS 에 Docker 연동하기 -4- (EFS 생성) 본문

개발/AWS

[AWS] ECS 에 Docker 연동하기 -4- (EFS 생성)

TempoDiValse 2022. 11. 22. 09:10

이 전까지는, 

 

[AWS] ECS 에 Docker 연동하기 -3- (서비스/클러스터 생성)

저번 포스팅 에서는 ECS 환경에 로컬에서 작업했던 이미지를 띄우기 전, 기본 환경 작업인 Task 정의에 대해 포스팅을 작성해 보았고, [AWS] ECS 에 Docker 연동하기 -2- (ECS Task 정의) 이번 포스팅은 ECS -

tempodivalse.tistory.com

기본적인 ECS 의 생성/구축 방법이 었다면 지금부터는 약간의 추가 작업 정도의 포스팅이 될 것이다. 자세히 작성하는 것이 아니라 구축하면서 흐름을 이해 할 수 있도록 작성하는 포스팅이기 때문에 다소 디테일이 떨어질 수 있으니, 정확하고 디테일한 내용은 AWS 공식문서를 참조하길 바란다.

 

이번 포스팅에서는 Docker 의 볼륨 역할을 하게 될 EFS 설정에 대해 알아보도록 하겠다.


1. EFS 는 뭘까?

 Elastic File System 이라고 하는 AWS의 스토리지 서비스인데, 이름처럼 따로 정해진 제한 용량이 없는 것 같다. 문서에서는 사용자가 파일을 추가/제거함에 따라 자동적으로 EFS 가 용량 자체를 관리하기 때문에 신경을 쓰지 않아도 된다고 한다. 하지만 쓴 만큼은 돈 낸다고 한다.. 

 

 이 서비스가 ECS 와 연동을 하는 게 참 잘 맞는 것 같다라고 생각하는 이유는 사용하기가 너무 간편하기 떄문인 것 같다. Docker 에서도 Volume 을 통해서 이미지 내의 경로에 로컬 시스템을 마운트 하여 사용하게 되는데, 그것을 ECS 에서 똑같이 할 수 있기 때문이다. 단, EFS 도 클라우드 서비스이기 떄문에 EC2 를 통해서 접근해야 하는 점이 있다. 

 

그럼 이제 EFS 를 만들어서 파일을 넣어보도록 하자

 

2. EFS 생성

생성하는 방법은 이전에 했던 작업들과는 비교할 수 없을 정도로 꽤나 간단하다.

그저 비어있는 리스트에서 "파일 시스템 생성" 기능을 통해 이름과 VPC 만 지정해주고 생성하면 끝인 것이다.

생성이 완료되면 리스트에 바로 뜰 것이고 기본 6KB는 잡고 있는 듯 하다.

 

3. EFS 연결

연결 부터가 조금 특이할 수 있는데, 연결은 EFS 콘솔 내에서 하는 것이 아닌 EC2 인스턴스를 통해서 연결을 해야 한다. 보통이면 콘솔 내에서 클릭-클릭으로 뭔가 할 수 있지 않나 싶은데, 생성된 EFS 눌러 상세창에서 연결을 누르면..

보는 것대로 터미널에서 알아서 해라.. 라는 커맨드 가이드만 나온다. 그래서 한번 EC2와 연결을 해보도록 하자. 일단 EC2 인스턴스를 생성하고 SSH 연결까지는 완료한다.

 

먼저, EFS 와 EC2 를 연결하기 위해서는 NFS 포트를 보안그룹을 이용해서 오픈해주어야 한다. NFS 포트 번호는 2049 번으로, TCP 상태에서도 입력하고 적용을 누르면 TCP 가 NFS 로 변환되어 적용된 것을 볼 수 있다. 2049 포트가 열려있는 보안 그룹은 EFS 와 EC2 동일하게 적용 되어야 하며, 열려있지 않는 경우에는 계속 터미널에서 Timed Out 메세지를 뱉기 때문에 신경써줘야 한다.

그리고 나서 EC2 인스턴스의 터미널에 접속하고서 커맨드를 통해 EFS 에 연결하게 되는데, 연결하기 위해서는 amazon-efs-utils 라는 패키지가 인스턴스에 깔려있어야 한다. EC2 에서 제공해주는 서버 OS 마다 차이는 있지만 AMI 를 사용하는 인스턴스는 자동으로 깔려있다. 만약 되지 않거나 한다면 수동으로 설치를 해줄 필요가 있다.

sudo yum install -y amazon-efs-utils

다음 해야 될 작업은 EFS 볼륨을 EC2 와 연결하기 위해서는 먼저 마운트 대상이 될 폴더를 미리 만들어야 한다. 그 전에 우리가 사용할 커맨드는 EFS 콘솔에서 보여주었던 첫번째 커맨드를 사용하면 된다.

sudo mount -t efs -o tls ${efs_volume_id}:/ ${folder_name}

여기에서 efs_volume_id 는 내가 만들었던 EFS 볼륨의 ID 값을 입력하면 된다. folder_name 은 마운트 대상이 될 폴더가 되는 것이다.

커맨드 가이드에서는 efs 폴더가 고정으로 써 있지만 내가 짓고 싶은대로 지어도 상관은 없다.

 

커맨드를 입력하고 나면 한번에 될 수도 있지만 botocore 를 설치하라는 문구가 뜰 수도 있다. 그럴 때는 설치해주면 된다.

 

botocore 설치 - Amazon Elastic File System

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com

입력하고 나서는 약간의 딜레이 타임을 가진 후에 셸 입력창이 한번 더 뜨게 되는데, 그럼 연결이 완성 된 것이다. 연결이 성공 되었다는 멘트가 나오면 참 좋을 것 같은데 그렇지는 않은 듯 하다.

 

4. EFS 에 파일 추가

파일 추가는 별 다른 특별한 방법은 가지고 있지 않다. 일반적인 터미널에서 할 수 있는 CRUD 의 행위를 할 수 있기 때문에 마운트한 폴더에 그저 파일만 넣어주면 된다. 그래서 FileZilla 같은 파일 전송 클라이언트를 통해서 EC2 인스턴스에 접속하여 파일을 전송해도 된다. 스토리지의 상태는 콘솔에서 확인할 수 있어서 내가 얼마나 넣었는 지 쉽게 확인할 수 있다.


여기까지 ECS 이미지와 연결할 볼륨을 준비하는 방법에 대해 알아보았고, 다음에는 실질적으로 이미지와 연결을 해보도록 하겠다.

반응형
Comments