EFS란?
간단하게 말해서 EC2끼리 공유할 수 있는 저장소이다. VPC 내에 있는 EC2에 mount해서 사용할 수 있다.
Naver Cloud Platform에서는 NAS라는 이름이었는데 AWS에서는 EFS라고 한다.
VPC - Subnet 만들기
간단하게 "VPC 등"을 선택해서 만들어준다.
이름 태그만 바꿔주고 디폴트로 만들 경우
VPC(1개) - AZ 2개 - AZ 당 subnet 2개(4개) - public rt(1개), private rt(2개) - internet gateway, s3용 endpoint를 만든다.
EC2 만들기
이름 및 태그를 정하고 OS 이미지를 선택한다.
프리티어인 Amazon Linux 2023 AMI를 선택한다.(64비트)
인스턴스 유형도 프리티어인 t2.micro를 선택한다.(리전마다 다르기 때문에 프리티어 아무거나 선택한다.)
키 페어가 없다면 새로 생성하고 있다면 기존의 키 페어를 선택한다.
(생성 시 그냥 이름만 입력하고 나머지는 default로 하면 된다. 생성하면 key 파일을 다운로드 받는데 이 파일은 잘 보관한다.)
네트워크 설정에서 꼭 편집을 눌러서 VPC를 선택하자.
(안할 경우 default VPC가 선택된다.)
아까 생성한 VPC, public subnet을 선택하고 퍼블릭 IP 자동 할당을 활성화 한다.
(퍼블릭 IP가 있어야 EC2에 접속할 수 있다. 물론 다른 방법도 있음.)
기존 보안그룹이 있다면 보안 그룹을 선택하고 없다면 새로 생성한다.
보안 그룹 이름을 정해주고 인바운드 규칙을 설정한다.
(아웃바운드는 보통 모든 트래픽을 허용하기 때문에 수정하지 않는다.)
ssh로 접속할 것이기 때문에 ssh 유형을 선택하고 소스 유형은 위치 무관이나 내 IP를 선택한다.
스토리지의 경우 프리티어는 30GB까지 가능한데 그냥 default로 둔다.
스토리지 구성에서 바로 EFS를 생성하고 mount 할 수도 있지만 일단은 넘어가자.
그 외 많은 설정이 가능한데 웬만하면 쓸 일이 없는 것 같다.
인스턴스 생성을 눌러 EC2를 생성한다.
EFS용 보안 그룹 만들기
EFS는 연결하려는 타겟에 따라 보안 그룹을 설정할 수 있다.
EC2 -> 네트워크 및 보안 -> 보안 그룹 -> 보안 그룹 생성
보안 그룹 이름, 설명을 입력하고 VPC를 선택한다.
인바운드 규칙을 정하는 것이 중요한데 유형은 모든 트래픽을 선택하고 소스 유형은 사용자 지정,
소스를 EC2에 적용되는 보안 그룹을 선택한다.
이렇게 할 경우 저 보안 그룹이 적용된 EC2에서 들어오는 모든 트래픽을 받을 수 있다.
아웃바운드는 모든 트래픽을 허용해 준다.
EFS 만들기
EFS -> 파일 시스템 -> 파일 시스템 생성
EFS 이름을 입력하고 VPC를 선택한다.
생성된 EFS를 눌러 상세보기를 하면 아래 쪽에 네트워크 탭이 있는데 네트워크 탭을 누르고 관리를 누른다.
이 EFS를 탑재할 수 있는 탑재 대상이 나온다.
현재 VPC에 AZ가 2개 있기 때문에 탑재 대상이 2개가 나온다.
여기서 중요한 것은 보안 그룹을 바꿔야 한다. 기존에 default로 있는 보안 그룹을 X를 눌러 삭제하고 아까 만들었던 EFS용 보안 그룹을 선택하고 저장한다.
EC2 접속 및 EFS mount 준비하기
생성된 EFS를 EC2에 mount 해야 한다.
먼저 퍼블릭 IP를 이용해 EC2에 접속한다.
서버에 접속하기 위한 다양한 방법이 있지만 여기서는 간단하게 AWS 콘솔에서 제공하는 연결을 이용한다.
EC2 -> 인스턴스 -> 인스턴스 ID를 눌러서 인스턴스 요약 화면에서 "연결"을 누른다.
AWS 콘솔에서 제공하는 터미널에서 vim 작업하려니 이상하다...MobaXterm이든 vscode든 다른 방법으로 접속하자.
(아래 링크에서 root 대신 ec2-user를 넣어야 한다.)
https://joosblog.tistory.com/300
창이 하나 새로 뜨면서 터미널 화면이 나온다.
# 파일 시스템 보기
df -h
df -h 명령어를 통해 현재 파일 시스템을 볼 수 있다.
현재 파일 시스템에는 EFS가 보이지 않는다.
# root 유저로 변경
sudo -s
yum update
yum install -y amazon-efs-utils
# 마운트할 폴더 만들기
mkdir /mnt/efs
sudo -s 명령어로 root 유저로 변경 후 yum을 update한다.
(현재 최신 상태라 업데이트가 안됨)
EFS를 mount하기 위한 패키지인 amazon-efs-utils를 설치한다.
EFS를 mount하기 위한 폴더를 생성한다.
기본적으로 /mnt 폴더가 있고 이 안에 efs라는 폴더를 하나 만들어준다.
mkdir /mnt/efs
EFS mount하기
mount를 하기 위해서는 EFS ID를 알아야 한다.
EFS -> 파일 시스템 -> 내 EFS 선택
"연결"을 누른다.
mount하기 위한 여러 가지 방법이 있는데 여기서는 EFS 탑재 헬퍼를 사용하기로 한다.
아까 설치한 amazon-efs-utils가 EFS 탑재 헬퍼이다.
fs-로 시작하는 EFS ID는 유저마다 다르기 때문에 콘솔에 있는 명령어를 이용해야 한다.
efs 부분이 mount하려는 경로이기 때문에 /mnt/efs로 경로를 수정한다.(절대 경로도 가능하고 상대 경로도 가능하다.)
sudo mount -t efs -o tls fs-0c58671f651df805c:/ /mnt/efs
mount가 되고 난 후에 df -h를 입력하면 EFS가 /mnt/efs 폴더에 mount 된 것을 볼 수 있다.
EFS 자동 mount 설정하기
위의 방법으로 mount된 EFS는 EC2를 재부팅하면 mount가 해제된다.
mount가 해제 되지 않도록 설정해주어야 한다.
vi나 vim을 이용해서 /etc/fstab 파일을 연다.
sudo vi /etc/fstab
i를 눌러 insert 모드에서 [EFS ID] [mount 경로] efs _netdev,tls 0 0 을 입력하고 저장한다.
(esc 눌러서 insert 모드 나간 후 :wq 로 저장)
띄어쓰기 주의 할 것!
fs-0c58671f651df805c:/ /mnt/efs efs _netdev,tls 0 0
재부팅 후 df -h를 입력해서 mount가 유지되는지 보자.
/mnt/efs에 제대로 mount 되어 있는 것을 확인할 수 있다.
'배운 내용 > AWS(아마존 웹 서비스)' 카테고리의 다른 글
aws ecr, docker login 로그인, ecr repository 생성 (0) | 2024.07.01 |
---|---|
[AWS] Step Functions (0) | 2024.05.21 |
[AWS] vpc flow log (0) | 2024.05.20 |
AWS Lambda + DynamoDB (0) | 2024.05.09 |
AWS Lambda+S3 (0) | 2024.05.08 |