AWS CodeCommit과 EB CLI를 함께 사용 - AWS Elastic Beanstalk

AWS CodeCommit과 EB CLI를 함께 사용

EB CLI를 사용하여 AWS CodeCommit 리포지토리에서 직접 애플리케이션을 배포할 수 있습니다. CodeCommit을 사용하여 프로젝트 전체를 업로드하는 대신에, 배포 시 리포지토리에 변경 사항만 업로드할 수 있습니다. 큰 프로젝트가 있거나 인터넷 연결이 제한된 경우에 이를 통해 시간과 대역폭을 절약할 수 있습니다. EB CLI는 로컬 커밋을 푸시하고, eb create 또는 eb deploy를 사용할 때 이를 사용하여 애플리케이션 버전을 생성합니다.

변경 사항을 배포하려면 CodeCommit 통합 시 먼저 변경 사항을 커밋해야 합니다. 그러나 정상으로 확인되지 않은 변경 사항은 개발 또는 디버깅 과정에서 푸시하지 않을 수 있습니다. 변경 사항을 커밋하지 않으려면 변경을 스테이징하고 eb deploy --staged(표준 배포 수행)를 사용하면 됩니다. 또는 먼저 개발 브랜치나 테스트 브랜치에 변경 사항을 커밋한 후, 코드가 준비된 이후에 마스터 브랜치에 병합합니다. eb use를 사용하여 개발 브랜치에서 한 환경에 배포하고, 마스터 브랜치에서 다른 환경에 배포하도록 EB CLI를 구성할 수 있습니다.

참고

일부 리전에서는 CodeCommit을 제공하지 않습니다. Elastic Beanstalk와 CodeCommit 간의 통합은 이러한 리전에서 작동하지 않습니다.

각 리전에서 제공되는 AWS 서비스에 대한 자세한 내용은 리전 표를 참조하세요.

사전 조건

AWS Elastic Beanstalk에서 CodeCommit을 사용하려면 하나 이상의 커밋이 있는 로컬 Git 리포지토리(이미 있는 리포지토리 또는 생성한 새 리포지토리), CodeCommit을 사용할 권한, CodeCommit이 지원하는 리전의 Elastic Beanstalk 환경이 필요합니다. 환경과 리포지토리는 동일한 리전에 있어야 합니다.

Git 리포지토리를 초기화하려면

  1. 프로젝트 폴더에서 git init를 실행합니다.

    ~/my-app$ git init
  2. git add를 사용하여 프로젝트 파일을 스테이징합니다.

    ~/my-app$ git add .
  3. git commit을 사용하여 변경 사항을 커밋합니다.

    ~/my-app$ git commit -m "Elastic Beanstalk application"

EB CLI를 사용하여 CodeCommit 리포지토리 생성

CodeCommit을 시작하려면 eb init을 실행합니다. 리포지토리를 구성하는 동안 EB CLI는 CodeCommit을 사용하여 코드를 저장하고 배포 시간을 단축할지 묻는 메시지를 표시합니다. eb init을 사용하여 이전에 프로젝트를 구성했더라도 이를 다시 실행하여 CodeCommit을 구성할 수 있습니다.

EB CLI를 사용하여 CodeCommit 리포지토리를 생성하려면

  1. 프로젝트 폴더에서 eb init를 실행합니다. 구성하는 동안 EB CLI는 CodeCommit을 사용하여 코드를 저장하고 배포 시간을 단축할지 묻습니다. eb init을 사용하여 이전에 프로젝트를 구성했더라도 이를 다시 실행하여 CodeCommit을 구성할 수 있습니다. 프롬프트에 y를 입력하여 CodeCommit을 설정합니다.

    ~/my-app$ eb init Note: Elastic Beanstalk now supports AWS CodeCommit; a fully-managed source control service. To learn more, see Docs: https://aws.amazon.com/codecommit/ Do you wish to continue with CodeCommit? (y/n)(default is n): y
  2. Create new Repository(새 리포지토리 생성)를 선택합니다.

    Select a repository 1) my-repo 2) [ Create new Repository ] (default is 2): 2
  3. 리포지토리 이름을 입력하거나 입력을 눌러 기본 이름을 적용합니다.

    Enter Repository Name (default is "codecommit-origin"): my-app Successfully created repository: my-app
  4. 커밋에 대해 기존 브랜치를 선택하거나, EB CLI를 사용하여 새 브랜치를 만듭니다.

    Enter Branch Name ***** Must have at least one commit to create a new branch with CodeCommit ***** (default is "master"): ENTER Successfully created branch: master

CodeCommit 리포지토리에서 배포

EB CLI 리포지토리에서 CodeCommit을 구성하면 EB CLI는 리포지토리의 내용을 사용하여 소스 번들을 생성합니다. eb deploy 또는 eb create를 실행하면 EB CLI는 새 커밋을 푸시하고 브랜치의 HEAD 개정을 사용하여 환경의 EC2 인스턴스에 배포하는 아카이브를 생성합니다.

EB CLI를 사용하여 CodeCommit 통합을 사용하려면

  1. eb create를 사용하여 새 환경을 생성합니다.

    ~/my-app$ eb create my-app-env Starting environment deployment via CodeCommit --- Waiting for application versions to be pre-processed --- Finished processing application version app-ac1ea-161010_201918 Setting up default branch Environment details for: my-app-env Application name: my-app Region: us-east-2 Deployed Version: app-ac1ea-161010_201918 Environment ID: e-pm5mvvkfnd Platform: 64bit Amazon Linux 2016.03 v2.1.6 running Java 8 Tier: WebServer-Standard CNAME: UNKNOWN Updated: 2016-10-10 20:20:29.725000+00:00 Printing Status: INFO: createEnvironment is starting. ...

    EB CLI가 추적된 브랜치에서 최신 커밋을 사용하여 환경에 배포되는 애플리케이션 버전을 생성합니다.

  2. 새 로컬 커밋이 있는 경우 eb deploy를 사용하여 커밋을 푸시하고 환경에 배포합니다.

    ~/my-app$ eb deploy Starting environment deployment via CodeCommit INFO: Environment update is starting. INFO: Deploying new version to instance(s). INFO: New application version was deployed to running EC2 instances. INFO: Environment update completed successfully.
  3. 변경 사항을 커밋하기 전에 테스트하려면 --staged 옵션을 사용하여 git add를 사용하여 스테이징 영역에 추가한 변경 사항을 배포합니다.

    ~/my-app$ git add new-file ~/my-app$ eb deploy --staged

    --staged 옵션을 사용한 배포는 CodeCommit을 우회하는 표준 배포를 수행합니다.

추가 브랜치 및 환경 구성

CodeCommit 구성은 단일 브랜치에 적용됩니다. eb useeb codesource를 사용하여 브랜치를 추가로 구성하거나 현재 브랜치의 구성을 수정할 수 있습니다.

EB CLI를 사용하여 CodeCommit 통합을 구성하려면

  1. 원격 브랜치를 변경하려면 eb use 명령의 --source 옵션을 사용합니다.

    ~/my-app$ eb use test-env --source my-app/test
  2. 새 브랜치와 환경을 생성하려면 새 브랜치를 확인하고, 이를 CodeCommit에 푸시하고, 환경을 생성한 후, eb use를 사용하여 로컬 브랜치, 원격 브랜치 및 환경을 연결합니다.

    ~/my-app$ git checkout -b production ~/my-app$ git push --set-upstream production ~/my-app$ eb create production-env ~/my-app$ eb use --source my-app/production production-env
  3. CodeCommit을 대화식으로 구성하려면 eb codesource codecommit을 사용합니다.

    ~/my-app$ eb codesource codecommit Current CodeCommit setup: Repository: my-app Branch: test Do you wish to continue (y/n): y Select a repository 1) my-repo 2) my-app 3) [ Create new Repository ] (default is 2): 2 Select a branch 1) master 2) test 3) [ Create new Branch with local HEAD ] (default is 1): 1
  4. CodeCommit 통합을 비활성화하려면 eb codesource local을 사용합니다.

    ~/my-app$ eb codesource local Current CodeCommit setup: Repository: my-app Branch: master Default set to use local sources

기존 CodeCommit 리포지토리 사용

CodeCommit 리포지토리가 이미 있으며 이를 Elastic Beanstalk에서 사용하고자 하는 경우, 로컬 Git 리포지토리의 루트에서 eb init을 실행합니다.

EB CLI를 사용하여 기존 CodeCommit 리포지토리를 사용하려면

  1. CodeCommit 리포지토리를 복제합니다.

    ~$ git clone ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/my-app
  2. Elastic Beanstalk 환경에 사용할 브랜치를 확인한 후 푸시합니다.

    ~/my-app$ git checkout -b dev-env ~/my-app$ git push --set-upstream origin dev-env
  3. 실행 eb init. 현재 사용 중인 것과 동일한 리전, 리포지토리 및 브랜치 이름을 선택합니다.

    ~/my-app$ eb init Select a default region 1) us-east-1 : US East (N. Virginia) 2) us-west-1 : US West (N. California) 3) us-west-2 : US West (Oregon) 4) eu-west-1 : Europe (Ireland) 5) eu-central-1 : Europe (Frankfurt) 6) ap-south-1 : Asia Pacific (Mumbai) 7) ap-southeast-1 : Asia Pacific (Singapore) ... (default is 3): 1 ... Note: Elastic Beanstalk now supports AWS CodeCommit; a fully-managed source control service. To learn more, see Docs: https://aws.amazon.com/codecommit/ Do you wish to continue with CodeCommit? (y/n)(default is n): y Select a repository 1) my-app 2) [ Create new Repository ] (default is 1): 1 Select a branch 1) master 2) dev-env 3) [ Create new Branch with local HEAD ] (default is 2): 2

eb init 사용에 관한 자세한 내용은 EB CLI 구성 단원을 참조하세요.