주절주절 서론
이번 포스팅에서는 Elastic Beanstalk에 대한 설명을 작성하려고 합니다!
이번 포스팅도 재밌게(?) 봐주셨으면 좋겠습니다!
Elastic Beanstalk?
Elastic Beanstalk은 애플리케이션을 배포하고 관리할 수 있는 PaaS입니다!
사용자가 애플리케이션 코드를 업로드하면 자동으로 [서버 설정, 스케일링, 로드 밸런싱, 모니터링] 등을 관리해 주어 인프라 관리에 대한 사용자의 인적 자원 집중도를 감소시켜 애플리케이션 개발에 집중할 수 있도록 하는 서비스입니다!
Elastic Beanstalk 특징
- 관리 자동화 : 사용자가 코드를 업로드하면, Elastic Beanstalk이 인프라를 자동으로 설정하고 운영!
- 편리한 배포 : Elastic Beanstalk이 인프라를 관리해 주어, 간편하게 애플리케이션이나 API 서버를 배포 가능!
- 다양한 언어 및 환경 지원 : Java, Python, Node.js, Ruby, PHP, .NET, Go 등 다양한 개발 환경을 지원!
Elastic Beanstalk 애플리케이션 생성
먼저 AWS에 접속 후 Elastic Beanstalk을 검색 후 [애플리케이션 생성] 버튼을 클릭합니다!
간단하게 이름 입력 후 생성을 누르면 Elastic Beanstalk 애플리케이션이 생성된 것을 확인할 수 있습니다.
하지만, Elastic Beanstalk의 메인은 이것이 아닌 환경을 설정하는 부분입니다!
Elastic Beanstalk 환경 생성
앞서 생성한 애플리케이션을 클릭하면 [새 환경 생성] 버튼을 확인할 수 있습니다!
해당 버튼을 클릭해주시면 됩니다!
테스트로 만드는 것이니, 대부분 값을 기본 값으로 진행해 주시면 되기에, 주의해야할 점에 대해서만 포스팅을 하겠습니다!
Elastic Beanstalk 환경 생성 시 주의점 1.
1단계 환경구성을 마친 후, 2단계 서비스 액세스 구성으로 넘어가게 된다면, EC2 인스턴스 프로파일에 기입 가능해야 할 [aws-elasticbeanstalk-ec2-role]이 보이지 않는 경우가 있습니다!
이유는 AWS 보안 정책의 변경으로 인해, Role을 자동 생성이 아닌 수동 생성 방식으로 변경되었기 때문입니다.
해결 방법
- IAM 콘솔에서 역할 생성 :
- AWS Management Console에서 IAM 서비스로 이동합니다.
- Roles 페이지를 열고 Create role을 선택합니다.
- Trusted entity type에서 AWS service를 선택하고, Use case에서 EC2를 선택합니다.
- 정책 연결 :
- Elastic Beanstalk에 필요한 관리형 정책을 연결합니다. 일반적으로 다음과 같은 정책이 필요합니다:
- AWSElasticBeanstalkWebTier
- AWSElasticBeanstalkWorkerTier
- AWSElasticBeanstalkMulticontainerDocker
- Elastic Beanstalk에 필요한 관리형 정책을 연결합니다. 일반적으로 다음과 같은 정책이 필요합니다:
- 역할 이름 지정 및 생성 :
- 역할 이름을 "aws-elasticbeanstalk-ec2-role"로 지정하고 역할을 생성합니다.
- 환경에 인스턴스 프로파일 할당 :
- Elastic Beanstalk 환경 설정으로 돌아가 새로 생성한 인스턴스 프로파일을 선택하여 환경 생성을 계속 진행합니다.
Elastic Beanstalk 환경 생성 시 주의점 2.
주의점 1을 해결했지만, 다음 함정이 기다리고 있습니다!
바로 24년 10월 1일부터 Elastic Beanstalk의 환경 설정 시, Launch configurations 대신 Launch templates로 대체 된다는 것 때문에 발생하는 문제입니다!
Launch templates?
Launch templates VS Launch Configurations
- Launch templates
- EC2 인스턴스를 시작하기 위한 설정 정보를 제공하며, 한 번 생성되면 수정 불가!
- 버전 관리 기능이 없어 다양한 버전을 유지하기 어려움!
- Launch configurations
- 런치 구성과 유사하게 인스턴스 설정 정보를 제공하지만, 여러 버전을 관리 가능!
- 최신 EC2 기능을 사용할 수 있도록 지원!
Launch templates의 장점
- 버전 관리: 여러 버전을 생성하여 다양한 설정을 테스트하고 유지 가능!
- 최신 기능 지원: 최신 EC2 인스턴스 유형 및 기능을 사용 가능!
- 유연성: 다양한 인스턴스 유형과 구매 옵션을 설정 가능!
해결 방법
- RootVolumeType을 gp3로 설정
- BlockDeviceMappings에 gp3 포함
- DisableIMDSv1을 true로 설정
- EnableSpot을 true로 설정
이렇게 4가지 방법이 존재하지만, 저는 1번 방법을 사용해서 해결했습니다!
앞선 사진에서 default 값으로 작성된 루트 볼륨을 gp3(범용 3)으로 수정해주시면 됩니다!
Elastic Beanstalk 연결
해당 주의점 2가지를 유의하고 진행하셨다면, 성공적으로 Elastic Beanstalk을 통해 생성된 인스턴스를 확인하실 수 있습니다!
EC2에서 빠트린 설명이지만, EC2와 동일하게 터미널에서 해당 명령어를 통해 인스턴스에 접근이 가능합니다!
% ssh -i {key_pair}.pem ec2-user@{IP}
# 애플리케이션 파일 위치
% cd /var/app/current
# 로그 위치
% cd /var/log
# 웹 애플리케이션 로그 : web.stdout.log
# Elastic BeanStalk 로그 : eb-engine.log
마치며..
저도 Elastic Beanstalk을 생성하면서, 해당 주의점 2개를 알지못해 허송세월을 보냈습니다...
여러분은 제 포스팅을 통해 한번에 해결하셨으면 좋겠어요!
오늘 포스팅도 봐주셔서 감사합니다!
'AWS' 카테고리의 다른 글
[AWS] 6. Route53? (0) | 2024.10.25 |
---|---|
[AWS] 5. RDS? (0) | 2024.10.25 |
[AWS] 3. EBS? (2) | 2024.10.24 |
[AWS] 2. EC2? (0) | 2024.10.24 |
[AWS] 1. AWS? Cloud Computing? (1) | 2024.10.24 |