본문 바로가기

Minding's Programming/AWS

[AWS/Elastic Beanstalk] Elastic Beanstalk

728x90
반응형

Elastic Beanstalk는 애플리케이션을 신속하게 구성하고 관리할 수 있는 AWS의 서비스다. 관리 복잡성을 줄일 수 있다는 장점이 있으며, 애플리케이션을 업로드하기만 하면 용량 프로비저닝, 로드 밸런싱, 조정, 애플리케이션 상태 모니터링 세부 정보를 자동으로 처리한다.

 

Go, Java, .NET, PHP, Python 등의 애플리케이션을 지원한다. 애플리케이션을 배포할 때, Elastice Beanstalk가 선택된 지원 가능 플랫폼 버전을 구축하고, Amazon EC2 등의 AWS 리소스를 하나 이상 프로비저닝해 애플리케이션을 실행한다.

 

Elastic Beanstalk 생성

Elastic Beanstalk > 애플리케이션 생성 으로 진입한다. 1단계 화면에서는 환경 티어, 정보, 플랫폼(언어) 등을 설정할 수 있고, 실습 환경의 경우 대부분을 기본값으로 진행하면 된다.

 

* 주의할 점

2024년 10월 1일부터 Elastic Beanstalk의 새로운 환경을 설정할 때 Launch configurations 대신 Launch templates로 대체한다고 한다. Launch templates를 사용하기 위해서는 아래 옵션 중 한 가지를 선택해야 한다. (Launch templates의 장점은 아래 접은 글 참고)

더보기

Launch templates의 장점

 

런치 템플릿과 런치 구성의 차이점

  • 런치 구성: EC2 인스턴스를 시작하기 위한 설정 정보를 제공하며, 한 번 생성되면 수정할 수 없습니다. 버전 관리 기능이 없어 다양한 버전을 유지하기 어렵습니다.
  • 런치 템플릿: 런치 구성과 유사하게 인스턴스 설정 정보를 제공하지만, 여러 버전을 관리할 수 있습니다. 이는 다양한 설정을 테스트하거나 업데이트할 때 유용합니다. 또한, 최신 EC2 기능을 사용할 수 있도록 지원합니다


런치 템플릿의 장점

  • 버전 관리: 여러 버전을 생성하여 다양한 설정을 테스트하고 유지할 수 있습니다.
  • 최신 기능 지원: 최신 EC2 인스턴스 유형 및 기능을 사용할 수 있습니다. 예를 들어, 시스템 관리자 매개변수, 최신 EBS 볼륨, T2 무제한 인스턴스 등을 지원합니다.
  • 유연성: 다양한 인스턴스 유형과 구매 옵션을 설정할 수 있습니다.
  • RootVolumeType을 gp3로 설정
  • BlockDeviceMappings에 gp3 포함
  • DisableIMDSv1을 true로 설정
  • EnableSpot을 true로 설정

+ IAM 오류 발생시

The instance profile aws-elasticbeanstalk-ec2-role associated with the environment does not exist.

Elastic Beanstalk 생성 시 인스턴스 프로파일이 존재하지 않는다는 오류가 나타날 수 있다. AWS 보안 정책 변경으로 인해 Role을 자동 생성이 아닌 수동으로 생성해야 하기 때문이다. 아래 접은 글에 해결 방법을 적어놓았다.

더보기
  1. IAM 콘솔에서 역할 생성:
    • AWS Management Console에서 IAM 서비스로 이동합니다.
    • Roles 페이지를 열고 Create role을 선택합니다.
    • Trusted entity type에서 AWS service를 선택하고, Use case에서 EC2를 선택합니다.
  2. 정책 연결:
    • Elastic Beanstalk에 필요한 관리형 정책을 연결합니다. 일반적으로 다음과 같은 정책이 필요합니다:
      • AWSElasticBeanstalkWebTier
      • AWSElasticBeanstalkWorkerTier
      • AWSElasticBeanstalkMulticontainerDocker
      • AWSElasticBeanstalkWebTier
      • AWSElasticBeanstalkWorkerTier
      • AWSElasticBeanstalkMulticontainerDocker
      • AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy

 

  1. 역할 이름 지정 및 생성:
    • 역할 이름을 "aws-elasticbeanstalk-ec2-role"로 지정하고 역할을 생성합니다.
  2. 환경에 인스턴스 프로파일 할당:
    • Elastic Beanstalk 환경 설정으로 돌아가 새로 생성한 인스턴스 프로파일을 선택하여 환경 생성을 계속 진행합니다.

 

Elastic Beanstalk 인스턴스 연결

Elastic Beanstalk로 생성된 인스턴스와 터미널을 통해 콘솔을 연결할 수 있다.

ssh -i {your_key}.pem ec2-user@{ElasticIP}

ElasticBeanstalk가 나타나는 화면과 함께 인스턴스가 연결됐다.

 

실행되는 어플리케이션 파일은 '/var/app/current'에 있다.

[ec2-user@ip-172-31-15-150 ~]$ cd /var/app
[ec2-user@ip-172-31-15-150 app]$ ls
current  venv
[ec2-user@ip-172-31-15-150 app]$ cd current
[ec2-user@ip-172-31-15-150 current]$ ls
application.py  cron.yaml  Procfile  __pycache__

 

실행에 대한 로그는 '/var/log'에 저장된다. 웹 애플리케이션에 대한 로그는 'web.stdout.log'에, ElasticBeanstalk에 대한 로그는 'eb-engine.log'에 저장된다.

[ec2-user@ip-172-31-15-150 current]$ cd ../..
[ec2-user@ip-172-31-15-150 var]$ cd log
[ec2-user@ip-172-31-15-150 log]$ ls
amazon       cfn-init-cmd.log  cloud-init.log         eb-cfn-init.log  healthd   nginx    sa        web.stdout.log
audit        cfn-init.log      cloud-init-output.log  eb-engine.log    httpd     private  secure    wtmp
btmp         cfn-wire.log      cron                   eb-hooks.log     lastlog   README   sssd      xray
cfn-hup.log  chrony            eb-cfn-init-call.log   eb-publish.log   messages  rotated  tallylog
[ec2-user@ip-172-31-15-150 log]$ pwd
/var/log

 

 

728x90

'Minding's Programming > AWS' 카테고리의 다른 글

[AWS] CloudFront  (1) 2024.10.24
[AWS] Certification Manager  (1) 2024.10.24
[AWS] Route53  (1) 2024.10.24
[AWS] RDS, DocumentDB, DynamoDB  (0) 2024.10.24
[AWS/EC2] EC2로 서버 생성 및 연결하는 방법  (1) 2024.10.23