Elastic Beanstalk를 시작하는 방법 알아보기 - AWS Elastic Beanstalk

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Elastic Beanstalk를 시작하는 방법 알아보기

Elastic Beanstalk를 사용하면 웹 애플리케이션 및 서비스를 배포, 모니터링 및 확장할 수 있습니다. 일반적으로 코드를 로컬에서 개발한 다음 Amazon EC2 서버 인스턴스에 배포합니다. 환경이라고도 하는 이러한 인스턴스는 AWS 콘솔 또는 명령줄을 통해 업그레이드할 수 있는 플랫폼에서 실행됩니다.

시작하려면 콘솔에서 직접 사전 구축된 샘플 애플리케이션을 배포하는 것이 좋습니다. 그런 다음의 명령줄에서 로컬로 개발하고 배포하는 방법을 배울 수 있습니다QuickStart: Elastic Beanstalk에 PHP 애플리케이션 배포.

Elastic Beanstalk를 사용하는 데 드는 비용은 없지만,이 자습서를 진행하는 동안 생성한 AWS 리소스는 마지막에 삭제할 때까지 표준 요금이 적용됩니다. 총 요금은 일반적으로 1달러 미만입니다. 요금을 최소화하는 방법에 대한 자세한 내용은 AWS 프리 티어를 참조하세요.

이 자습서를 완료하면 Amazon EC2 인스턴스에서 실행되는 환경을 사용하여 Elastic Beanstalk 애플리케이션을 생성, 구성, 배포, 업데이트 및 모니터링하는 기본 사항을 이해할 수 있습니다.

예상 소요 시간: 35~45분

웹 서버 환경을 사용하는 Elastic Beanstalk 애플리케이션의 간소화된 아키텍처입니다.

빌드할 항목

첫 번째 Elastic Beanstalk 애플리케이션은 PHP 관리형 플랫폼에서 PHP 샘플을 실행하는 단일 Amazon EC2 환경으로 구성됩니다.

Elastic Beanstalk 애플리케이션

Elastic Beanstalk 애플리케이션은 애플리케이션 코드가 Elastic Beanstalk에서 제공 및 관리하는 플랫폼 또는 사용자가 제공하는 사용자 지정 컨테이너에서 실행되는 환경을 포함하여 Elastic Beanstalk 구성 요소의 컨테이너입니다.

환경

Elastic Beanstalk 환경은 Amazon EC2 인스턴스를 포함하여 함께 실행되는 AWS 리소스 모음입니다. 환경을 생성하면 Elastic Beanstalk가 필요한 리소스를 AWS 계정에 프로비저닝합니다.

플랫폼

플랫폼은 운영 체제, 프로그래밍 언어 런타임, 웹 서버, 애플리케이션 서버 및 추가 Elastic Beanstalk 구성 요소의 조합입니다. Elastic Beanstalk는 관리형 플랫폼을 제공하거나 컨테이너에 자체 플랫폼을 제공할 수 있습니다.

Elastic Beanstalk는 다양한 프로그래밍 언어, 애플리케이션 서버 및 Docker 컨테이너를 위한 플랫폼을 지원합니다. 환경을 생성할 때 플랫폼을 선택해야 합니다. 플랫폼을 업그레이드할 수 있지만 환경의 플랫폼은 변경할 수 없습니다.

플랫폼 전환

프로그래밍 언어를 변경해야 하는 경우 다른 플랫폼에서 새 환경을 생성하고 전환해야 합니다.

1단계 - 애플리케이션 생성

예제 애플리케이션을 생성하려면 애플리케이션 생성 콘솔 마법사를 사용해야합니다. Elastic Beanstalk 애플리케이션을 생성하고 애플리케이션 내에서 환경을 시작합니다.

알림: 환경은 애플리케이션 코드를 실행하는 데 필요한 AWS 리소스 모음입니다.

애플리케이션 생성 버튼을 가리키는 화살표가 있는 Elastic Beanstalk 콘솔.
애플리케이션 생성

  1. Elastic Beanstalk 콘솔을 엽니다.

  2. 애플리케이션 생성을 선택합니다.

  3. 애플리케이션 이름getting-started-app을 입력합니다.

콘솔은 애플리케이션을 생성하고 환경을 구성하는 6단계 프로세스를 제공합니다. 이 빠른 시작을 위해 처음 두 단계에만 집중하면 됩니다. 그런 다음 건너뛰어 애플리케이션과 환경을 검토하고 생성할 수 있습니다.

환경을 구성하려면
  1. 환경 정보에서 환경 이름에를 입력합니다gs-app-web-env.

  2. 플랫폼에서 PHP 플랫폼을 선택합니다.

  3. 애플리케이션 코드프리셋에서 기본값(샘플 애플리케이션단일 인스턴스)을 수락한 후 다음을 선택합니다.

서비스 액세스를 구성하려면

다음으로 두 가지 역할이 필요합니다. 서비스 역할을 통해 Elastic Beanstalk는 EC2 인스턴스를 모니터링하고 환경의 플랫폼을 업그레이드할 수 있습니다. EC2 인스턴스 프로파일 역할은 로그 작성 및 다른 서비스와의 상호 작용과 같은 작업을 허용합니다.

서비스 역할을 생성하려면
  1. 서비스 역할에서 역할 생성을 선택합니다.

  2. 신뢰할 수 있는 엔터티 유형에서 AWS 서비스를 선택합니다.

  3. 사용 사례에서 Elastic Beanstalk – 환경을 선택합니다.

  4. 다음을 선택합니다.

  5. 권한 정책에 다음이 포함되어 있는지 확인한 다음을 선택합니다.

    • AWSElasticBeanstalkEnhancedHealth

    • AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy

  6. 역할 생성을 선택합니다.

  7. 서비스 액세스 구성 탭으로 돌아가 목록을 새로 고친 다음 새로 생성된 서비스 역할을 선택합니다.

EC2 인스턴스 프로파일을 생성하려면
  1. 역할 생성을 선택합니다.

  2. 신뢰할 수 있는 엔터티 유형에서 AWS 서비스를 선택합니다.

  3. 사용 사례에서 Elastic Beanstalk – 컴퓨팅을 선택합니다.

  4. 다음을 선택합니다.

  5. 권한 정책에 다음이 포함되어 있는지 확인한 다음을 선택합니다.

    • AWSElasticBeanstalkWebTier

    • AWSElasticBeanstalkWorkerTier

    • AWSElasticBeanstalkMulticontainerDocker

  6. 역할 생성을 선택합니다.

  7. 서비스 액세스 구성 탭으로 돌아가 목록을 새로 고친 다음 새로 생성된 EC2 인스턴스 프로파일을 선택합니다.

애플리케이션 구성 및 생성을 완료하려면
  1. EC2 키 페어를 건너뜁니다.

    콘솔을 통해 Amazon EC2 인스턴스에 연결하는 다른 방법을 보여드리겠습니다.

  2. 검토로 건너뛰기를 선택하여 여러 선택적 단계로 이동합니다.

    선택적 단계: 네트워킹, 데이터베이스, 조정 파라미터, 업데이트, 모니터링 및 로깅을 위한 고급 구성.

  3. 선택 사항 요약이 표시된 검토 페이지에서 제출을 선택합니다.

축하합니다!

애플리케이션을 생성하고 환경을 구성했습니다! 이제 리소스가 배포될 때까지 기다려야 합니다.

2단계 - 애플리케이션 배포

애플리케이션을 생성하면 Elastic Beanstalk가 환경을 자동으로 설정합니다. 앉아서 기다리기만 하면 됩니다.

초기 배포는 리소스를 생성하는 데 최대 5분이 걸릴 수 있습니다. 변경 사항만 스택에 배포되므로 업데이트 시간이 단축됩니다.

배포 프로세스를 나타내는 예시 이미지

예제 애플리케이션을 생성할 때 Elastic Beanstalk는 다음 리소스를 생성합니다.

  • EC2 인스턴스 - 선택한 플랫폼에서 웹 앱을 실행하도록 구성된 Amazon EC2 가상 머신입니다.

    모든 플랫폼은 다양한 소프트웨어, 구성 파일 및 스크립트 세트를 실행하여 특정 언어 버전, 프레임워크, 웹 컨테이너 또는 이들의 조합을 지원합니다. 대부분의 플랫폼은 Apache 또는 nginx를 역방향 프록시로 사용하여 웹 트래픽을 웹 앱으로 전달하고, 정적 자산을 제공하고, 액세스 및 오류 로그를 생성합니다. Amazon EC2 인스턴스에 연결하여 구성 및 로그를 볼 수 있습니다.

  • 인스턴스 보안 그룹 - 포트 80에서 수신 요청을 허용하도록 Amazon EC2 보안 그룹이 생성되므로 로드 밸런서의 인바운드 트래픽이 웹 앱에 도달할 수 있습니다.

  • Amazon S3 버킷 - 소스 코드, 로그 및 기타 아티팩트의 스토리지 위치입니다.

  • Amazon CloudWatch 경보 - 인스턴스의 부하를 모니터링하고 필요에 따라 확장 또는 축소하기 위해 두 개의 CloudWatch 경보가 생성됩니다.

  • AWS CloudFormation 스택 - Elastic Beanstalk는 AWS CloudFormation 를 사용하여 환경에 리소스를 배포하고 구성을 변경합니다. AWS CloudFormation 콘솔에서 리소스 정의 템플릿을 볼 수 있습니다.

  • 도메인 이름 - 형식으로 웹 앱으로 라우팅되는 도메인 이름입니다subdomain.region.elasticbeanstalk.com.

Elastic Beanstalk는 애플리케이션을 생성하고, 환경을 시작하고, 애플리케이션 버전을 만든 다음 코드를 환경에 배포합니다. 프로세스 중에 콘솔은 진행 상황을 추적하고 이벤트 탭에 이벤트 상태를 표시합니다.

웹 서버 환경을 사용하는 Elastic Beanstalk 애플리케이션의 아키텍처 개요입니다.

모든 리소스가 배포되면 환경의 상태가 로 변경되어야 합니다Ok.

애플리케이션이 준비되었습니다!

애플리케이션 상태가 로 변경되면 웹 애플리케이션의 웹 사이트로 이동할 Ok수 있습니다.

3단계 - Elastic Beanstalk 환경 살펴보기

콘솔의 환경 개요 페이지에서 배포된 애플리케이션 환경을 살펴보기 시작합니다.

환경 및 애플리케이션을 보려면
  1. Elastic Beanstalk 콘솔을 열고 리전 목록에서를 선택합니다 AWS 리전.

  2. 탐색 창에서 환경을 선택한 다음 목록에서 환경의 이름을 선택합니다.

  3. 환경으로 이동을 선택하여 애플리케이션을 찾습니다.

    (도인에 나열된 URL 링크를 선택하여 애플리케이션을 찾아볼 수도 있습니다.)

    연결은 HTTP(HTTPS 아님)이므로 브라우저에 경고가 표시될 수 있습니다.

샘플 Elastic Beanstalk 애플리케이션의 축하 화면 예제입니다.

Elastic Beanstalk 콘솔의 상단 부분에는 이름, 도메인 URL, 현재 상태, 실행 중인 버전, 애플리케이션이 실행 중인 플랫폼 등 환경에 대한 최상위 정보가 포함된 환경 개요가 표시됩니다. 실행 중인 버전 및 플랫폼은 현재 배포된 애플리케이션의 문제를 해결하는 데 필수적입니다.

개요 창 뒤에 이벤트 탭에 최근 환경 활동이 표시됩니다.

시작된 환경을 보여주는 Elastic Beanstalk 콘솔.

Elastic Beanstalk가 AWS 리소스를 생성하고 애플리케이션을 시작하는 동안 환경은 Pending 상태입니다. 시작 이벤트에 대한 상태 메시지는 이벤트 목록에 지속적으로 추가됩니다.

환경의 도메인은 배포된 웹 애플리케이션의 URL입니다. 왼쪽 탐색 창에서 환경으로 이동하면 도메인으로도 이동합니다. 마찬가지로 왼쪽 탐색 창에는 다양한 탭에 해당하는 링크가 있습니다.

왼쪽 탐색 창의 구성 링크를 기록해 둡니다.이 링크에는 범주별로 그룹화된 환경 구성 옵션 값의 요약이 표시됩니다.

환경 구성 설정

왼쪽 탐색 창의 구성 링크를 기록해 둡니다. 서비스 역할, 네트워킹, 데이터베이스, 조정, 관리형 플랫폼 업데이트, 메모리, 상태 모니터링, 롤링 배포, 로깅 등과 같은 세부 환경 설정을 보고 편집할 수 있습니다.

다양한 탭에는 환경에 대한 자세한 정보가 포함되어 있습니다.

  • 이벤트 - 환경의 리소스에 대한 Elastic Beanstalk 서비스 및 기타 서비스의 정보 및 오류 메시지의 업데이트 목록을 봅니다.

  • 상태 - 애플리케이션을 실행하는 Amazon EC2 인스턴스의 상태 및 세부 상태 정보를 봅니다.

  • 로그(Logs) — 사용자 환경에 있는 Amazon EC2에서 로그를 검색하고 다운로드합니다. 전체 로그 또는 최근 활동을 검색할 수 있습니다. 검색된 로그는 15분 동안 사용할 수 있습니다.

  • 모니터링 - 평균 지연 시간 및 CPU 사용률과 같은 환경에 대한 통계를 봅니다.

  • 경보 - 환경 지표에 대해 구성된 경보를 보고 편집합니다.

  • 관리형 업데이트 - 예정된 관리형 플랫폼 업데이트 및 완료된 관리형 플랫폼 업데이트 및 인스턴스 교체에 대한 정보를 봅니다.

  • 태그 - 환경에 적용되는 키-값 페어를 보고 편집합니다.

참고

콘솔 탐색 창의 링크에는 해당 탭이 표시됩니다.

로그 문제 해결

예상치 못한 동작 문제를 해결하거나 배포를 디버깅하려면 환경의 로그를 확인해야 할 수 있습니다.

Elastic Beanstalk 콘솔의 로그 탭에서 모든 로그 파일 100줄을 요청할 수 있습니다. 또는 Amazon EC2 인스턴스에 직접 연결하고 로그를 실시간으로 테일링할 수 있습니다.

로그를 요청하려면(Elastic Beanstalk 콘솔)
  1. Elastic Beanstalk 콘솔에서 환경으로 이동합니다.

  2. 로그 탭 또는 왼쪽 탐색을 선택한 다음 로그 요청을 선택합니다.

  3. 마지막 100개 줄을 선택합니다.

  4. 로그를 생성한 후 다운로드 링크를 선택하여 브라우저에서 로그를 봅니다.

로그에서 로그를 찾고 nginx 액세스 로그의 디렉터리를 기록해 둡니다.

Amazon EC2에 대한 연결을 활성화하는 정책 추가

연결하려면 먼저 Session Manager를 사용하여 Amazon EC2에 연결할 수 있는 정책을 추가해야 합니다.

  1. IAM 콘솔로 이동합니다.

  2. aws-elasticbeanstalk-ec2-role 역할을 찾아 선택합니다.

  3. 권한 추가를 선택한 다음 정책 연결을 선택합니다.

  4. 다음 텍스트로 시작하는 기본 정책을 검색AmazonSSMManagedEC2Instance한 다음 역할에 추가합니다.

세션 관리자를 사용하여 Amazon EC2에 연결하려면
  1. Amazon EC2 콘솔로 이동합니다.

  2. 인스턴스를 선택한 다음 gs-app-web-env 인스턴스를 선택합니다.

  3. 연결을 선택한 다음 세션 관리자를 선택합니다.

  4. 연결을 선택합니다.

인스턴스에 연결한 후 bash 셸을 시작하고 로그를 테일링합니다.

  1. bash 명령을 실행합니다.

  2. cd /var/log/nginx 명령을 실행합니다.

  3. tail -f access.log 명령을 실행합니다.

  4. 브라우저에서 애플리케이션 도메인 URL로 이동합니다. 새로 고칩니다.

축하합니다. 연결되었습니다!

페이지를 새로 고칠 때마다 인스턴스 업데이트에 로그 항목이 표시되어야 합니다.

연결 버튼이 작동하지 않나요?

연결 버튼을 사용할 수 없는 경우 IAM으로 돌아가 필요한 정책을 역할에 추가했는지 확인합니다.

4단계 - 애플리케이션 업데이트

결국 애플리케이션을 업데이트해야 합니다. 환경에서 다른 업데이트 작업이 진행 중이지 않은 한 언제든지 새 버전을 배포할 수 있습니다.

이 튜토리얼로 시작한 애플리케이션 버전을 예제 애플리케이션이라고 합니다.

환경 업데이트를 암시하는 예시 이미지입니다.
애플리케이션 버전을 업데이트하려면
  1. 다음 PHP 샘플 애플리케이션을 다운로드합니다.

    PHP - php-v2.zip

  2. Elastic Beanstalk 콘솔을 열고 리전 목록에서를 선택합니다 AWS 리전.

  3. 탐색 창에서 환경을 선택한 다음 목록에서 환경의 이름을 선택합니다.

  4. 환경 개요 페이지에서 업로드 및 배포를 선택합니다.

  5. 파일 선택을 선택한 다음, 다운로드한 샘플 애플리케이션 소스 번들을 업로드합니다.

    콘솔은 버전 레이블을 새 고유 레이블로 자동으로 채워 후행 정수를 자동으로 증가시킵니다. 자체 버전 레이블을 선택하는 경우 고유한지 확인합니다.

  6. 배포(Deploy)를 선택합니다.

Elastic Beanstalk가 Amazon EC2 인스턴스에 파일을 배포하는 동안 환경 개요에서 배포 상태를 볼 수 있습니다. 애플리케이션 버전이 업데이트되는 동안 환경 상태는 회색입니다. 배포가 완료되면 Elastic Beanstalk에서 애플리케이션 상태 확인을 수행합니다. 애플리케이션이 상태 확인에 응답하면 상태가 정상으로 간주되고 상태가 녹색으로 돌아갑니다. 환경 개요는 새로운 실행 버전(버전 레이블로 제공한 이름)을 표시합니다.

Elastic Beanstalk는 또한 새 애플리케이션 버전을 업로드하고 애플리케이션 버전 테이블에 추가합니다. 테이블을 보려면, 탐색 창의 getting-started-app에서 애플리케이션 버전을 선택합니다.

업데이트 성공!

브라우저를 새로 고친 후 업데이트된 "v2" 메시지가 표시됩니다.

소스를 직접 편집하려면 소스 번들의 압축을 풀고 편집한 다음 다시 압축합니다. macOS에서 -X와 함께 php 디렉터리 내부에서 다음 명령을 사용하여 추가 파일 속성을 제외합니다.

zip -X -r ../php-v2.zip .

5단계 - 애플리케이션 규모 조정

애플리케이션에 더 적합하도록 환경을 구성할 수 있습니다. 예를 들어 컴퓨팅 집약적인 애플리케이션이 있는 경우 애플리케이션을 실행 중인 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스의 유형을 변경할 수 있습니다. 구성 변경을 적용하기 위해 Elastic Beanstalk는 환경 업데이트를 수행합니다.

일부 구성은 간단하고 빠르게 변경됩니다. 일부 변경 사항에서는 AWS 리소스를 삭제하고 다시 생성해야 하며, 몇 분 정도 걸릴 수 있습니다. 구성 설정을 변경하면 Elastic Beanstalk는 잠재적 인 애플리케이션 중단 시간에 대해 경고합니다.

환경의 성장을 보여주는 예시 이미지입니다.

용량 설정 증가

이 구성 변경 예에서는 환경의 용량 설정을 편집합니다. Auto Scaling 그룹에 2-4개 Amazon EC2 인스턴스가 있는 로드 밸런서 수행 및 확장 가능 환경을 구성한 다음 변경이 발생했는지 확인합니다. Elastic Beanstalk는 Amazon EC2 인스턴스를 추가로 생성하여 처음에 생성된 단일 인스턴스에 추가합니다. 그런 다음 Elastic Beanstalk는 두 인스턴스를 환경의 로드 밸런서와 연결합니다. 결과적으로 애플리케이션의 응답성이 향상되고 가용성이 향상됩니다.

환경 용량을 변경하려면 다음을 수행합니다.
  1. Elastic Beanstalk 콘솔을 열고 리전 목록에서를 선택합니다 AWS 리전.

  2. 탐색 창에서 환경을 선택한 다음 목록에서 환경의 이름을 선택합니다.

  3. 탐색 창에서 구성을 선택합니다.

  4. 인스턴스 트래픽 및 스케일링(Instance traffic and scaling) 구성 범주에서 편집(Edit)을 선택합니다.

  5. 용량(Capacity) 섹션을 더 쉽게 볼 수 있도록 인스턴스(Instances) 섹션을 축소합니다. Auto Scaling 그룹에서 환경 유형로드 밸런싱 수행으로 변경합니다.

  6. 인스턴스 행에서 최소를 로, 2 최대를 로 변경합니다4.

  7. 변경 사항을 저장하려면 페이지 하단에서 적용을 선택합니다.

    업데이트가 현재 인스턴스를 모두 대체한다는 경고가 표시되는 경우 확인을 선택합니다.

환경이 업데이트되는 데 몇 분이 걸릴 수 있습니다. 이벤트 목록에 여러 업데이트가 표시됩니다. 이벤트에 새 구성을 환경에 성공적으로 배포했는지 확인합니다.

용량 증가 확인

환경 업데이트가 완료되고 환경이 준비되면 Elastic Beanstalk는 새 최소 용량 설정을 충족하기 위해 두 번째 인스턴스를 자동으로 시작했습니다.

용량 증가를 확인하려면
  1. 탭 목록 또는 왼쪽 탐색 창에서 상태를 선택합니다.

  2. 향상된 인스턴스 상태 섹션을 검토합니다.

방금 스케일 업했습니다!

두 개의 Amazon EC2 인스턴스를 사용하면 환경 용량이 두 배로 증가했으며 몇 분 밖에 걸리지 않습니다.

Elastic Beanstalk 환경 정리

사용하지 않는 서비스에 대해 요금이 부과되지 않도록 하려면 모든 애플리케이션 버전을 삭제하고 환경을 종료합니다. 그러면 환경에서 생성한 AWS 리소스도 삭제됩니다.

리소스 삭제를 보여주는 예시 이미지입니다.
애플리케이션 및 모든 관련 리소스를 삭제하려면
  1. 모든 애플리케이션 버전 삭제.

    1. Elastic Beanstalk 콘솔을 열고 리전 목록에서를 선택합니다 AWS 리전.

    2. 탐색 창에서 애플리케이션을 선택한 다음 getting-started-app을 선택합니다.

    3. 탐색 창에서 애플리케이션 이름을 찾은 다음 애플리케이션 버전을 선택합니다.

    4. 애플리케이션 버전 페이지에서 삭제할 모든 애플리케이션 버전을 선택합니다.

    5. 작업을 선택한 후 삭제를 선택합니다.

    6. Amazon S3에서 버전 삭제를 켭니다.

    7. 삭제를 선택한 다음 완료를 선택합니다.

  2. 환경 종료.

    1. 탐색 창에서 getting-started-app을 선택한 후 환경 목록에서 GettingStartedApp-env를 선택합니다.

    2. 작업을 선택한 후 환경 종료를 선택합니다.

    3. 환경 이름을 입력하고 Terminate를 선택하여 GettingStartedApp-env 종료를 확인합니다.

  3. getting-started-app 애플리케이션을 삭제합니다.

    1. 탐색 창에서 getting-started-app을 선택합니다.

    2. 작업을 선택한 후 애플리케이션 삭제를 선택합니다.

    3. 애플리케이션 이름을 입력하고 삭제를 선택하여 getting-started-app 삭제를 확인하세요.

축하합니다!

샘플 애플리케이션을 AWS 클라우드에 성공적으로 배포하고, 새 버전을 업로드하고, 구성을 수정하여 두 번째 Auto Scaling 인스턴스를 추가하고, 리소스를 정리했습니다 AWS !

다음 단계

eb 명령줄 도구를 사용하여 Elastic Beanstalk에 코드 배포를 자동화하는 방법을 알아보려면를 계속 사용하는 것이 좋습니다QuickStart: Elastic Beanstalk에 PHP 애플리케이션 배포.

다음으로 HTTPS 연결을 설정하는 방법을 검토할 수 있습니다. 섹션을 참조하세요Elastic Beanstalk 환경에 사용할 HTTPS 구성.