안녕하세요 😊
이번 포스팅은 이전 포스팅과 이어집니다.
이전포스팅을 참고하여 EB 구성을 진행 후 이 포스팅을 참고하시면 됩니다 :)
AWS 블로그에서도 ElasticBeanStalk + EFS 구성이 잘 설명되어있지만,
이 포스팅에서는 조금더 자세히 Step by Step으로 진행하겠습니다.
지금부터 ElasticBeanStalk 환경에 EFS를 마운트하여 사용하는 실습을 해보겠습니다.
● EFS 생성
Elastic File System 콘솔에 접속합니다 :)
파일 시스템을 생성합니다.
이름만 넣고 바로 생성해줍니다.
"사용자 지정"을 클릭하여 efs생성 시 다양한 옵션을 선택할 수 있지만, 이번 실습에서는 그냥 기본으로 두고 생성을 클릭합니다.
efs 생성이 완료 되면, 그림과 같이 네트워크를 확인하실 수 있습니다.
오른쪽 상단의 "연결"을 클릭하여 연결 커멘드를 간단히 사용할 수 있습니다 :)
EFS 탑제헬퍼사용 명령어 복사해놓습니다 !! 아래에서 바로 사용할 예정입니다.
여기까지 완료 되었으면, 다음 단계로 넘어갑니다!
● ebextentions 구성 (efs-mount.config)
ebextensions 이란, 인프라 구성이 완료 된 후 EC2 내부의 환경 구성 파일이라고 보면 됩니다.
앞 포스팅을 따라 하셨다면, 확인해보셨을텐데, ElasticBeanstalk을 구성할 소스의 루트 디렉토리(번들)에는 2개의 숨은 디렉토리가 이 있습니다.
바로 .extensions 디렉토리와 .elasticbeanstalk 디렉토리 입니다.
ec2-user:~/environment/php_sample $ tree -a
.
├── cron.yaml
├── .ebextensions
│ └── logging.config
├── EBSampleApp-PHP.iml
├── .elasticbeanstalk
│ └── config.yml
├── .gitignore
├── index.php
├── logo_aws_reduced.gif
├── scheduled.php
└── styles.css
.elasticbeanstalk 디렉토리는 eb 인프라에 대한 파일이 (config.yml) 정의되어있습니다.
.ebextensions 디렉토리는 환경이 만들어진 후, 옵션을 수정하는 구성파일이 정의됩니다.
설명이 어려운데.. 한번 실행해볼게요!
(ebextentions 디렉터리 내 정의된 .config 파일들은 번호 순으로 실행됩니다.)
저는 이해하기 쉽도록 짧게 구성파일을 만들 예정인데,
실 운영환경이라면 여기를 클릭하여 그대로 사용하시는것을 추천 드립니다. 스크립트가 너무 잘되어있거든요 :)
먼저 efs-mount.config 파일을 생성합니다.
명령어 아래 부분을 모두 복사하여 붙여넣기 하세요.
주의할점은 띄어쓰기입니다. 2칸씩이 기본이고, 탭은 사용할수없습니다.
ec2-user:~/environment/php_sample $ vim .ebextensions/efs-mount.config
packages:
yum:
amazon-efs-utils: []
commands:
01_mount:
command: "/tmp/mount-efs.sh"
files:
"/tmp/mount-efs.sh":
mode: "000755"
content : |
#!/bin/bash
mkdir -p /my_efs
mount -t efs -o tls fs-d09a83b1:/ /my_efs
자, 이렇게 efs-mount.confg 파일을 .ebextentions 디렉터리 아래에 생성했습니다.
자, 이제 eb deploy로 배포해봅니다. :)
오류없이 잘 끝나면 됩니다.!
이제 EFS가 잘 마운트 되었는지 확인해볼까요?
eb ssh 명령어를 사용하여 인스턴스에 접속합니다.
ec2-user:~/environment/php_sample $ eb ssh
앞 포스팅에서 SSH 설정을 해주었기때문에 접속이 가능합니다.
만약 여기서 ssh오류가 났다면 키페어 설정이 되어있는지 확인 합니다.
자, 이렇게 EC2 내에서 df -h 명령어 실행해보면, /my_efs 디렉토리가 마운트 된것을 확인할 수 있습니다.
EC2를 강제로 종료하고, 장애감지후 새로 생성되는 EC2를 확인해보아도
마찬가지로 /my_efs가 마운트 되어있는것을 확인할 수있습니다. 😎
이번 포스팅은 여기까지입니다.
고생하셨습니다.