기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Elastic Beanstalk에 Sinatra 애플리케이션 배포
이 연습에서는 간단한 Sinatra
참고
AWS 2024년 10월 1일 이후에 생성된 계정은 새 환경을 성공적으로 생성하려면 일시적으로 옵션을 설정해야 합니다. 새 계정과 마찬가지로, 하지만 계정에 환경이 아직 없는 리전의 경우에만 기존 계정이 동일한 작업을 수행해야 합니다. 자세한 내용은 시작 템플릿 단원을 참조하십시오.
사전 조건
이 자습서에서는 사용자가 기본 Elastic Beanstalk 작업 및 Elastic Beanstalk 콘솔에 대해 어느 정도 알고 있다고 가정합니다. 아직 그렇지 않은 경우 Elastic Beanstalk 시작하기의 지침에 따라 첫 Elastic Beanstalk 환경을 시작합니다.
이 설명서의 절차를 수행하기 위해서는 실행 명령줄을 입력할 쉘 또는 터미널이 필요합니다. 명령은 프롬프트 기호($)와 해당하는 경우 현재 디렉터리 이름 뒤에 리스트로 표시됩니다.
~/eb-project$ this is a command
this is output
Linux 및 macOS의 경우 선호하는 쉘과 패키지 관리자를 사용할 수 있습니다. Windows에서 Linux용 Windows 하위 시스템을 설치
Sinatra 2.1.0에는 Ruby 2.3.0 이상이 필요합니다. 이 자습서에서는 Ruby 3.0.2 및 해당 Elastic Beanstalk 플랫폼 버전을 사용합니다. Elastic Beanstalk를 위한 루비 개발 환경 설정하기의 지침을 따라서 Ruby를 설치합니다.
Elastic Beanstalk 환경 시작
Elastic Beanstalk 콘솔을 사용하여 Elastic Beanstalk 환경을 생성합니다. Ruby 플랫폼을 선택하고 기본 설정과 샘플 코드를 적용합니다.
환경을 시작하려면(콘솔)
-
미리 구성된 링크를 사용하여 Elastic Beanstalk 콘솔을 엽니다. console.aws.amazon.com/elasticbeanstalk/home#/newApplication?applicationName=tutorials&environmentType=LoadBalanced
-
[플랫폼]에서 애플리케이션에 사용되는 언어와 일치하는 플랫폼 및 플랫폼 브랜치를 선택합니다.
-
애플리케이션 코드에서 샘플 애플리케이션을 선택합니다.
-
검토 및 시작을 선택합니다.
-
사용할 수 있는 옵션을 검토하십시오. 사용할 수 있는 옵션을 선택하고 준비가 되면 앱 생성을 선택합니다.
다음 리소스를 사용해 환경을 생성하는 데 약 5분 가량 걸립니다.
-
EC2 인스턴스 - 선택한 플랫폼에서 웹 앱을 실행하도록 구성된 Amazon Elastic Compute Cloud(AmazonEC2) 가상 머신입니다.
특정 언어 버전, 프레임워크, 웹 컨테이너 또는 그 조합을 지원하도록 각 플랫폼마다 특정 소프트웨어, 구성 파일 및 스크립트 세트를 실행합니다. 대부분의 플랫폼은 웹 앱 앞에 있는 Apache 또는 역방향 프록시NGINX를 사용하고, 요청을 전달하고, 정적 자산을 제공하고, 액세스 및 오류 로그를 생성합니다.
-
인스턴스 보안 그룹 - 포트 80에서 인바운드 트래픽을 허용하도록 구성된 Amazon EC2 보안 그룹입니다. 이 리소스를 사용하면 로드 밸런서의 HTTP 트래픽이 웹 앱을 실행하는 EC2 인스턴스에 도달할 수 있습니다. 기본적으로 다른 포트에서는 트래픽이 허용되지 않습니다.
-
로드 밸런서(Load balancer) - 애플리케이션을 실행하는 인스턴스로 요청을 분산하도록 구성된 Elastic Load Balancing 로드 밸런서입니다. 또한 로드 밸런서가 있으면 인터넷에 인스턴스를 직접 노출할 필요가 없습니다.
-
로드 밸런서 보안 그룹 - 포트 80에서 인바운드 트래픽을 허용하도록 구성된 Amazon EC2 보안 그룹입니다. 이 리소스를 사용하면 인터넷의 HTTP 트래픽이 로드 밸런서에 도달할 수 있습니다. 기본적으로 다른 포트에서는 트래픽이 허용되지 않습니다.
-
Auto Scaling 그룹(Auto Scaling group) - 인스턴스가 종료되거나 사용할 수 없게 될 경우 인스턴스를 대체하도록 구성된 Auto Scaling 그룹입니다.
-
Amazon S3 버킷(Amazon S3 bucket) - Elastic Beanstalk 사용 시 생성된 소스 코드, 로그 및 기타 아티팩트의 스토리지 위치입니다.
-
Amazon CloudWatch 경보 - 환경의 인스턴스에 대한 부하를 모니터링하고 부하가 너무 높거나 너무 낮으면 트리거되는 CloudWatch 경보 2개입니다. 경보가 트리거되면 이에 대한 응답으로 Auto Scaling 그룹이 스케일 업 또는 축소됩니다.
-
AWS CloudFormation 스택 - Elastic Beanstalk는 AWS CloudFormation 를 사용하여 환경의 리소스를 시작하고 구성 변경을 전파합니다. 리소스는 AWS CloudFormation 콘솔
에서 볼 수 있는 템플릿에서 정의됩니다. -
도메인 이름 - 형식으로 웹 앱으로 라우팅하는 도메인 이름입니다.
subdomain
.region
.elasticbeanstalk.com.도메인 보안
Elastic Beanstalk 애플리케이션의 보안을 강화하기 위해 elasticbeanstalk.com 도메인은 퍼블릭 접미사 목록(PSL)
에 등록됩니다. Elastic Beanstalk 애플리케이션의 기본 도메인 이름에 민감한 쿠키를 설정해야 하는 경우 보안을 강화하기 위해
__Host-
접두사가 있는 쿠키를 사용하는 것이 좋습니다. 이 방법은 교차 사이트 요청 위조 시도()로부터 도메인을 보호합니다CSRF. 자세한 내용은 Mozilla 개발자 네트워크의 Set-Cookie페이지를 참조하세요.
이러한 모든 리소스는 Elastic Beanstalk에서 관리합니다. 사용자가 환경을 종료하면 Elastic Beanstalk는 환경에 있는 모든 리소스를 종료합니다.
참고
Elastic Beanstalk에서 생성하는 Amazon S3 버킷은 환경 간에 공유되며 환경을 종료해도 삭제되지 않습니다. 자세한 내용은 Amazon S3에서 Elastic Beanstalk 사용을(를) 참조하세요.
기본 Sinatra 웹 사이트 작성
Sinatra 애플리케이션을 생성 및 배포하려면
-
다음 내용이 포함된 config.ru라는 구성 파일을 생성합니다.
예 config.ru
require './helloworld' run Sinatra::Application
-
다음 내용이 포함된 helloworld.rb라는 Ruby 코드 파일을 생성합니다.
예 helloworld.rb
require 'sinatra' get '/' do "Hello World!" end
-
다음 내용이 포함된 Gemfile을 생성합니다.
예 Gemfile
source 'https://rubygems.org' gem 'sinatra' gem 'puma'
-
번들 설치를 실행하여
Gemfile.lock
을 생성합니다.~/eb-sinatra$
bundle install
Fetching gem metadata from https://rubygems.org/.... Resolving dependencies... Using bundler 2.2.22 Using rack 2.2.3 ... -
Elastic Beanstalk가 Ruby 플랫폼에서 애플리케이션을 성공적으로 배포하기 위해서는
Gemfile.lock
의 업데이트가 필요합니다.Gemfile.lock
에 대한 일부 종속성은 플랫폼별로 다를 수 있습니다. 따라서 필요한 모든 종속성이 배포와 함께 설치되도록platform ruby
를Gemfile.lock
에 추가해야 합니다.~/eb-sinatra$
bundle lock --add-platform ruby
Fetching gem metadata from https://rubygems.org/.... Resolving dependencies... Writing lockfile to /Users/janedoe/EBDPT/RubyApps/eb-sinatra/Gemfile.lock -
다음 콘텐츠를 통해 Procfile을 생성합니다.
예 Procfile
web: bundle exec puma -C /opt/elasticbeanstalk/config/private/pumaconf.rb
애플리케이션 배포
소스 파일을 포함하는 소스 번들을 만듭니다. 다음 명령은 sinatra-default.zip
이라는 이름의 소스 번들을 생성합니다.
~/eb-sinatra$ zip ../sinatra-default.zip -r * .[^.]*
Elastic Beanstalk에 소스 번들을 업로드하여 Sinatra를 환경에 배포합니다.
소스 번들을 배포하려면
Elastic Beanstalk 콘솔
을 열고 리전 목록에서 를 선택합니다 AWS 리전. -
탐색 창에서 환경을 선택한 다음 목록에서 환경의 이름을 선택합니다.
참고
환경이 많은 경우 검색 창을 사용하여 환경 목록을 필터링합니다.
-
환경 개요 페이지에서 [업로드 및 배포]를 선택합니다.
-
화면에 표시되는 대화 상자를 사용하여 소스 번들을 업로드합니다.
-
배포(Deploy)를 선택합니다.
-
배포가 완료되면 사이트를 선택하여 새 탭에서 웹 사이트를 URL 열 수 있습니다.
정리
Elastic Beanstalk 작업을 완료하면 환경을 종료할 수 있습니다. Elastic Beanstalk는 Amazon EC2 인스턴스, 데이터베이스 인스턴스, 로드 밸런서, 보안 그룹 및 경보와 같이 환경과 연결된 모든 AWS 리소스를 종료합니다.
콘솔에서 Elastic Beanstalk 환경을 종료하려면
Elastic Beanstalk 콘솔
을 열고 리전 목록에서 를 선택합니다 AWS 리전. -
탐색 창에서 환경을 선택한 다음 목록에서 환경의 이름을 선택합니다.
참고
여러개의 환경을 보유한 경우 검색 창을 통해 환경 목록을 필터링합니다.
-
작업(Actions)을 선택한 후 환경 종료(Terminate Environment)를 선택합니다.
-
화면에 표시되는 대화 상자를 사용하여 환경 종료를 확인합니다.
Elastic Beanstalk로 언제든지 애플리케이션을 위한 새로운 환경을 쉽게 생성할 수 있습니다.
다음 단계
Sinatra에 대한 자세한 내용은 sinatrarb.com
애플리케이션을 계속 개발하다 보면 .zip 파일을 수동으로 생성하여 이를 Elastic Beanstalk 콘솔에 업로드하지 않고도 환경을 관리하고 애플리케이션을 배포할 수 있는 방법이 필요할 것입니다. Elastic Beanstalk 명령줄 인터페이스(EB CLI)는 명령줄에서 Elastic Beanstalk 환경에 애플리케이션을 생성, 구성 및 배포하기 위한 명령을 제공합니다 easy-to-use.
마지막으로 프로덕션 환경에서 애플리케이션을 사용할 계획이라면 환경에 대한 사용자 지정 도메인 이름을 구성하고 보안 연결을 활성화HTTPS해야 합니다.