⭐️ Amazon Web Service/AWS ElasticBeanStalk

[AWS ElasticBeanStalk Basic- 2] EB에 EFS 마운트 하기 (ebextentions 사용 실습) 😎

mini_world 2020. 11. 19. 11:17
목차 접기

 

안녕하세요 😊

이번 포스팅은 이전 포스팅과 이어집니다.
이전포스팅을 참고하여 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가 마운트 되어있는것을 확인할 수있습니다. 😎

이번 포스팅은 여기까지입니다.

고생하셨습니다.

 


 

728x90