Category: AWS CodeCommit


Github에 대한 AWS DevOps 개발 도구 기능 확대

AWS 개발자 도구는 AWS CodeCommit, AWS CodePipeline, AWS CodeBuildAWS CodeDeploy를 포함하는 서비스 모음입니다. 이들 서비스는 애플리케이션 소스 코드의 버전 관리를 안전하게 저장 및 유지하고 애플리케이션을 AWS 또는 온프레미스 환경에 자동으로 구축하고 테스트하고 배포하는 데 도움이 됩니다. AWS 개발자 도구는 개발자 및 IT 전문가가 소프트웨어를 신속하고 안전하게 제공할 수 있도록 설계되어 있습니다.

AWS는 AWS 개발자 도구 에코시스템을 타사의 도구 및 서비스로 확장하려는 지속적인 노력의 일환으로 마침내 AWS CodeStarAWS CodeBuild와 GitHub의 통합을 실현했습니다. 이 덕분에 GitHub 사용자도 이제 AWS 개발자 도구를 사용하여 지속적 통합 및 배포 도구 체인을 릴리스 프로세스의 일부로 보다 용이하게 구축할 수 있게 되었습니다.

이 게시물에서는 다음에 대해 알아보겠습니다.

사전 조건:

AWS 계정, GitHub 계정, Amazon EC2 키 페어, 그리고 AWS Identity & Access Management(IAM), AWS CodeStar, AWS CodeBuild, AWS CodePipeline, Amazon EC2, Amazon S3의 관리자 수준 권한이 필요합니다.

GitHub와 AWS CodeStar의 통합

AWS CodeStar를 사용하면 AWS에서 애플리케이션을 빠르게 개발하고 빌드하고 배포할 수 있습니다. AWS CodeStar의 통합 사용자 인터페이스는 한 곳에서 소프트웨어 개발 활동을 손쉽게 관리할 수 있게 해 줍니다. AWS CodeStar를 사용하면 몇 분 이내에 지속적 배포 도구 체인 전체를 구축할 수 있으므로 코드 릴리스를 보다 빨리 시작할 수 있습니다.

AWS CodeStar가 올해 4월에 출시되었을 때 AWS CodeCommit을 호스팅 대상 소스 리포지토리로 사용했습니다. 이제는 AWS CodeCommit 또는 GitHub 중에 선택하여 CodeStar 프로젝트를 위한 소스 제어 서비스로 지정할 수 있습니다. 이에 더해, CodeStar 프로젝트 대시보드를 사용하면 커밋, 이슈 및 풀 요청과 같은 GitHub 활동을 추적할 수 있습니다. 이 기능은 CI/CD 도구 체인의 구성 요소 전체에 걸쳐 프로젝트 활동을 용이하게 관리할 수 있도록 해 줍니다. GitHub 대시보드 보기 기능이 추가되면 AWS 애플리케이션의 배포가 더욱 간단해질 것입니다.

여기에서는 CodeStar 프로젝트를 위한 소스 공급자로 GitHub를 활용하는 방법을 보여 드릴 것입니다. 아울러 CodeStar 대시보드에서 최근의 커밋, 이슈 및 풀 요청과 관련된 작업을 수행하는 방법을 알려 드릴 것입니다.

AWS Management Console에 로그인한 다음 [Services] 메뉴에서 [CodeStar]를 클릭합니다. CodeStar 콘솔에서 [Create a new project]를 선택합니다. 그러면 [Choose a project template] 페이지가 나타납니다.

CodeStar 프로젝트

프로그래밍 언어, 애플리케이션 범주 또는 AWS 서비스 별로 옵션을 선택합니다. 저는 Amazon EC2에서 실행되는 Rails 웹 애플리케이션에서 Ruby를 선택할 것입니다.

이제 [Project details] 페이지에서 GitHub 옵션을 확인할 수 있습니다. 프로젝트의 이름을 입력하고 [Connect to GitHub]를 선택합니다.

프로젝트 세부 정보

GitHub 리포지토리에 연결할 수 있는 권한을 요청하는 메시지가 표시됩니다. 메시지가 표시되면 [Authorize]를 선택한 다음 GitHub 계정 암호를 입력합니다.

승인

그러면 GitHub ID가 OAuth를 통해 AWS CodeStar에 연결됩니다. 언제나 [GitHub application settings]에서 탐색을 통해 설정을 살펴볼 수 있습니다.

설치된 GitHub 앱

아래와 같이 [AWS CodeStar is now connected to GitHub]라는 메시지가 표시됩니다.

프로젝트 만들기

퍼블릭 또는 프라이빗 리포지토리를 선택할 수 있습니다. GitHub는 퍼블릭 및 오픈 소스 프로젝트에 참여하는 사용자 및 조직에 대해 무료 계정을 제공하는 한편 무제한 프라이빗 리포지토리와 사용자 관리 기능 및 보안 기능(옵션)이 포함된 유료 계정 또한 제공하고 있습니다.

이 예제에서는 퍼블릭 리포지토리 옵션을 선택합니다. 원할 경우 리포지토리 설명을 편집한 다음 [Next]를 선택합니다.

CodeStar 프로젝트 세부 정보를 검토한 다음 [Create Project]를 선택합니다. [Choose an Amazon EC2 Key Pair]에서 [Create Project]를 선택합니다.

키 페어

[Review project details]에서 [Edit Amazon EC2 configuration]이 표시됩니다. 이 링크를 선택하여 인스턴스 유형, VPC 및 서브넷 옵션을 구성합니다. AWS CodeStar의 경우 AWS 리소스 및 IAM 권한을 생성하고 관리하려면 서비스 역할이 필요합니다. 이 서비스 역할은 [AWS CodeStar would like permission to administer AWS resources on your behalf ] 확인란을 선택하면 생성됩니다.

[Create Project]를 선택합니다. 프로젝트 및 리소스를 생성하는 데 몇 분 정도 걸릴 수 있습니다.

프로젝트 세부 정보 검토

CodeStar 프로젝트를 만들면 프로젝트 팀에 소유자로 추가됩니다. AWS CodeStar를 처음으로 사용하는 경우 다음과 같은 정보를 제공하라는 메시지가 표시되는데, 다른 사람에게 공개되는 정보입니다.

  • 표시 이름
  • 이메일 주소

이 정보는 AWS CodeStar 사용자 프로필에 사용됩니다. 사용자 프로필은 프로젝트가 아닌 단일 AWS 리전에 한정됩니다. 사용자가 여러 리전의 프로젝트 일원인 경우 각 리전마다 사용자 프로필을 생성해야 합니다.

사용자 설정

사용자 설정

[Next]를 선택합니다. AWS CodeStar는 여러분이 설정한 구성에 따라 GitHub 리포지토리를 생성합니다(예: https://github.com/biyer/ruby-on-rails-service).

IDE(통합 개발 환경)를 AWS CodeStar와 통합하면 원하는 환경에서 계속 코드를 작성하고 개발할 수 있습니다. 변경 사항은 코드를 커밋하고 푸시할 때마다 AWS CodeStar 프로젝트에 포함됩니다.

IDE

IDE를 선택한 후에, [Next]를 선택하여 CodeStar 대시보드로 이동합니다. 익숙해지도록 몇 분 정도 대시보드를 살펴보십시오. 작업 항목의 백로그에서 최근의 코드 배포까지 전체 소프트웨어 개발 프로세스에 걸쳐 진행 사항을 용이하게 추적할 수 있습니다.

대시보드

애플리케이션 배포가 완료되면 애플리케이션을 표시할 엔드포인트를 선택합니다.

Pipeline

해당 애플리케이션의 엔드포인트를 열면 다음과 같은 화면이 표시됩니다.

대시보드의 [Commit history] 섹션에 GitHub 리포지토리의 커밋 이력이 표시됩니다. 커밋 ID 또는 [Open in GitHub ]옵션을 선택하면, GitHub 리포지토리에 대한 핫링크를 사용할 수 있습니다.

커밋 이력

AWS CodeStar 프로젝트 대시보드에서 사용자와 사용자의 팀은 프로젝트에 대한 최신 커밋, 지속적 제공 파이프라인의 상태, 인스턴스 성능을 비롯한 프로젝트 리소스의 상태를 확인합니다. 이 정보는 특정 리소스 전용 타일에 표시됩니다. 이러한 리소스에 대한 자세한 내용을 보려면 해당 타일에서 세부 정보 링크를 선택합니다. 해당 AWS 서비스의 콘솔이 해당 리소스의 세부 정보 페이지에서 열립니다.

문제

또한 상태 및 할당된 사용자를 기준으로 이슈를 필터링할 수 있습니다.

필터

AWS CodeBuild, 이제 GitHub 풀 요청 구축 지원

CodeBuild는 소스 코드를 컴파일하고 테스트를 실행하며 배포 준비가 완료된 소프트웨어 패키지를 생성하는 완전 관리형 빌드 서비스입니다. CodeBuild를 사용하면 자체 빌드 서버를 프로비저닝, 관리 및 확장할 필요가 없습니다. CodeBuild는 지속적으로 확장되며 여러 빌드를 동시에 처리하기 때문에 빌드가 대기열에서 대기하지 않습니다. 사전 패키징된 빌드 환경을 사용하여 신속하게 시작할 수 있으며 혹은 자체 빌드 도구를 사용하는 사용자 지정 빌드 환경을 만들 수 있습니다.

최근 AWS는 AWS CodeBuild에서 이제 GitHub 풀 요청 구축을 지원한다는 사실을 발표했습니다. 이 기능을 사용하면 CodeBuild로 애플리케이션 코드를 편집하고 빌드하는 동시에 팀원들과 보다 용이하게 협업할 수 있습니다. AWS CodeBuild 콘솔 또는 AWS CodePipeline 콘솔에서 AWS CodeBuild를 실행할 수 있습니다. 또한 AWS Command Line Interface(AWS CLI), AWS SDK 또는 AWS CodeBuild Plugin for Jenkins를 사용하여 AWS CodeBuild의 실행을 자동화할 수 있습니다.

AWS CodeBuild

이 단원에서는 Webhook을 통한 GitHub로부터의 풀 요청을 사용하여 AWS CodeBuild에서 빌드를 트리거하는 방법을 알아보겠습니다.

https://console.aws.amazon.com/codebuild/에서 AWS CodeBuild 콘솔을 엽니다. [Create Project]를 선택합니다. CodeBuild 프로젝트가 이미 있는 경우, [Edit project]를 선택한 다음 지시를 따르면 됩니다. CodeBuild는 AWS CodeCommit, S3, BitBucket 및 GitHub와 연결하여 빌드의 소스 코드를 가져올 수 있습니다. [Source provider]에서, [GitHub]를 선택한 다음, [Connect to GitHub]를 선택합니다.

구성

GitHub와 CodeBuild 프로젝트를 성공적으로 연결한 후에는 GitHub 계정에서 리포지토리를 선택할 수 있습니다. CodeBuild 또한 임의의 퍼블릭 리포지토리에 대한 연결을 지원합니다. [GitHub application settings]에서 탐색을 통해 설정을 살펴볼 수 있습니다.

GitHub 앱

[Source: What to Build]의 [Webhook]에서 [Rebuild every time a code change is pushed to this repository ] 확인란을 선택합니다.

참고: 이 옵션은 [ Repository]에서 [Use a repository in my account]를 선택한 경우에만 선택할 수 있습니다.

소스

[Environment: How to build]의 [Environment image]에서 [Use an image managed by AWS CodeBuild]를 선택합니다. [Operating system]에서 [Ubuntu]를 선택합니다. [Runtime]에서 [Base]를 선택합니다. [Version]에서 가용한 최신 버전을 선택합니다. [Build specification]에서 빌드 명령 및 관련 설정 모음을 YAML 형식(buildspec.yml)으로 제공하거나 빌드 명령을 콘솔에 직접 삽입함으로써 빌드 사양을 재정의할 수 있습니다. AWS CodeBuild는 이들 명령을 사용하여 빌드를 실행합니다. 이 예제에서 출력은 문자열 “hello”입니다.

환경

[Artifacts: Where to put the artifacts from this build project]의 [Type]에서 [No artifacts]를 선택합니다. (이는 테스트를 실행하거나 도커 이미지를 Amazon ECR에 넣을 경우 선택하는 유형이기도 합니다.) AWS CodeBuild가 사용자를 대신하여 종속 AWS 서비스와 상호 작용할 수 있으려면 AWS CodeBuild 서비스 역할이 있어야 합니다. 기존에 역할이 없는 경우에는 [Create a role]을 선택하고 [Role name]에서 역할 이름을 입력합니다.

결과물

이 예제에서는 고급 설정을 기본값으로 둡니다.

[Show advanced settings]를 확장하면 다음을 포함하여 빌드를 지정할 수 있는 옵션이 표시됩니다.

  • 빌드 제한 시간
  • 이 프로젝트의 빌드에서 사용할 모든 결과물을 암호화하는 KMS 키
  • 도커 이미지 빌드 옵션
  • 빌드 작업 동안의 권한 상승(예: 빌드 컨테이너 내의 도커에 액세스하여 Dockerfile을 빌드)
  • 컴퓨팅 유형을 빌드하기 위한 리소스 옵션
  • 환경 변수(내장 또는 사용자 지정) 자세한 내용은 AWS CodeBuild 사용 설명서의 [Create a Build Project]를 참조하십시오.

고급 설정

AWS CodeBuild 콘솔을 사용하여 Amazon EC2 시스템 관리자에서 파라미터를 생성할 수 있습니다. [Create a parameter]를 선택한 다음, 대화 상자에 표시되는 지시에 따릅니다. (대화 상자의 [KMS key]에서 계정에 있는 AWS KMS 키의 ARN을 선택적으로 지정할 수 있습니다. Amazon EC2 시스템 관리자는 이 키를 사용하여 저장하는 동안 파라미터의 값을 암호화하고 검색 동안 암호를 해독합니다.)

파라미터 생성

[Continue]를 선택합니다. 나중에 [Review] 페이지에서 [Save and build] 또는 [Save]를 선택하여 빌드를 실행합니다.

[Start build]를 선택합니다. 빌드가 완료되면 [Build logs ]에 빌드에 관한 세부 정보가 표시됩니다.

로그

풀 요청을 시연하기 위해 리포지토리를 다른 GitHub 사용자로 포크하고, 포크된 리포지토리로 커밋하고, 변경 사항을 새로 생성된 브랜치로 체크인한 다음, 풀 요청을 엽니다.

풀 요청

풀 요청이 제출되는 즉시, CodeBuild가 빌드 실행을 시작합니다.

구축

GitHub가 HTTP POST 페이로드를 Webhook의 구성된 URL(강조 표시된 부분)로 전송합니다. 이 URL은 CodeBuild가 최신 소스 코드를 다운로드하고 빌드 단계를 실행하는 데 사용합니다.

빌드 프로젝트

GitHub 풀 요청에 대해 [Show all checks] 옵션을 확장하면 CodeBuild가 빌드를 완료하였고, 모든 확인이 통과되었고, CodeBuild 콘솔에서 빌드 이력을 여는 데 사용하는 딥 링크가 [Details]에 제공됨을 확인할 수 있습니다.

풀 요청

요약:

이 게시물에서 GitHub를 CodeStar 프로젝트의 소스 공급자로 활용하는 방법과 CodeStar 대시보드에서 최근의 커밋, 이슈 및 풀 요청과 관련된 작업을 수행하는 방법을 알아봤습니다. 또한 GitHub 풀 요청을 사용하여 AWS CodeBuild에서 빌드를 자동으로 트리거하는 방법과 특히 이 기능을 사용하면 CodeBuild를 통해 애플리케이션 코드를 편집하고 빌드하는 동시에 팀원들과 보다 용이하게 협업할 수 있다는 것을 알려 드렸습니다.


작성자 소개:

Balaji Iyer는 AWS 전문 서비스 팀에서 엔터프라이즈 컨설턴트로 활약하고 있습니다. Balaji Iyer는 이 역할을 맡으면서 다수의 고객이 AWS 제품을 알아보고 선택하는 데 일조했습니다. 그의 전문 분야는 고도 확장형 분산 시스템, 서버 없는 아키텍처, 대규모 마이그레이션, 운영 보안, 전략적 AWS 이니셔티브 등의 설계 및 구현입니다. Balaji Iyer는 Amazon에 합류하기 전에 10년 이상 운영 체계, 빅 데이터 분석 솔루션, 모바일 서비스 및 웹 애플리케이션을 구축해 왔습니다. 여가 시간에는 아웃도어 활동을 즐기거나 가족과 함께 시간을 보냅니다.

이 글은 AWS DevOps 블로그의 AWS Developer Tools Expands Integration to Include GitHub의 한국어 번역입니다.

AWS CodeCommit을 위한 IAM 기반 아이디 생성 및 인증하기

HTTPS를 통해 AWS CodeCommit 저장소(repository)에 인증하는 간단한 방법을 소개합니다.

Git 자격 증명(Git Credentials)을 사용하면, 명령 줄이나 Git CLI, 혹은 HTTPS 인증을 지원하는 어떤 Git 도구에서든 AWS CodeCommit 저장소에 액세스하는데 사용 할 수 있는 정적 사용자 이름과 암호를 IAM (Identity and Access Management) 콘솔에서 생성 할 수 있습니다.이는 정적 자격 증명이기 때문에, 로컬 운영 체제에 포함된 암호 관리 도구를 사용하여 캐시하거나 자격 증명 관리 유틸리티에 저장할 수 있습니다. 이를 통해 수분 내에 AWS CodeCommit을 시작 할 수 있습니다.

HTTPS를 통해 AWS CodeCommit 저장소에 연결하기 위해 AWS CLI를 다운로드하거나 Git 클라이언트를 구성 할 필요가 없습니다. 또한 인기있는 Git GUI 클라이언트 (예 : TowerUI)와 IDE(예 : Eclipse, IntelliJ 및 Visual Studio)등 사용자 이름과 비밀번호를 이용한 인증을 지원하는 타사 도구에서 AWS CodeCommit 저장소를 손쉽게 연결할 수 있습니다.그러면 이 기능을 왜 추가했을까요? 이전까지 HTTPS 연결을 통해 AWS CodeCommit을 이용하려는 사용자는 인증을 위해 AWS credential helper를 구성해야했습니다.

일부 고객 분들은 이러한 credential helper가 가끔씩 Keychain Access와 Windows Vault 같은 암호 관리 도구를 방해하여 인증 실패를 발생시킨다고 말했습니다. 또한 많은 Git GUI 도구와 IDE는 원격 Git 저장소에 연결하기 위해 정적 사용자 이름과 암호가 필요하며 credential helper를 이용한 연결을 지원하지 않습니다.이번 블로그 게시물에서는 AWS CodeCommit 저장소 생성, Git 자격 증명 생성, AWS CodeCommit 저장소에 대한 CLI Access 설정 과정을 설명합니다.

Git Credentials 실습
Dave가 AWS CodeCommit에서 저장소를 만들고 그의 컴퓨터에서 로컬 액세스를 설정하려는 상황을 가정 해봅시다.

선행 조건: Dave가 이전에 로컬 컴퓨터에 AWS CodeCommit에 대한 credential helper를 구성한 경우, .gitconfig 파일을 편집하여 해당 정보를 제거해야 합니다. 또한 로컬 컴퓨터가 MacOS인 경우 Keychain Access에서 캐시된 자격 증명을 지워야 할 수 있습니다.

Git 자격 증명을 이용하면, Dave는 이제 4 단계의 간단한 작업으로 저장소를 만들고 AWS CodeCommit을 사용 할 수 있습니다.

1 단계: IAM 사용자에게 필수 권한이 ​​있는지 확인합니다.
Dave가 Git 자격 증명을 이용한 AWS CodeCommit 액세스 권한을 설정하려면 그의 IAM 사용자이 아래 관리 정책(managed policies)에 연결되어 있어야 합니다. (또는 이와 동등한 권한)

  • AWSCodeCommitPowerUser (or an appropriate CodeCommit managed policy)
  • IAMSelfManageServiceSpecificCredentials
  • IAMReadOnlyAccess

2 단계 : AWS CodeCommit 저장소를 생성합니다.
다음으로, AWS CodeCommit 콘솔에 로그인하고 저장소가 없는 경우 새로 저장소를 만듭니다. 액세스 권한이 있다면 AWS 계정 내 어떤 저장소를 선택하여도 괜찮습니다. Git 자격 증명을 만드는 방법은 도움말 패널에 나와 있습니다. (지시 사항이 표시되지 않으면 연결 단추를 선택하십시오.) IAM 사용자 링크를 클릭하면 IAM 콘솔이 열리며 자격 증명을 생성 할 수 있습니다. (역자주: 현재 AWS CodeCommit은 한국어 콘솔을 제공하고 있습니다.)

3 단계 : IAM 콘솔에서 HTTPS Git 자격 증명 만들기
IAM 사용자 페이지에서, Security Credentials 탭을 선택한 후 HTTPS Git credentials for AWS CodeCommit 영역의 Generate 버튼을 클릭합니다. 사용자 이름과 암호가 생성되고 표시됩니다. 자격 증명을 파일로 다운로드 할 수 있습니다.

GitCred_Blog2

Note: 이 단계에서만 암호를 확인하거나 다운로드할 수 있습니다.

4 단계 : 로컬 시스템 저장소에 복제합니다.
AWS CodeCommit 콘솔 페이지에서 Clone URL을 선택한 다음, 저장소 복제를 위한 HTTPS 링크를 복사합니다. 명령 행이나 터미널에서 방금 복사한 링크를 사용하여 저장소를 복제합니다. 예를 들어 다음과 같이 HTTP 링크를 복사하고,

그런 다음, 명령 줄이나 터미널에 아래와 같이 입력합니다.

$ git clone https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/TestRepo_Dave

사용자 이름과 암호를 묻는 메시지가 나타나면 3 단계에서 생성 한 Git 자격 증명 (사용자 이름과 암호)을 제공합니다.

이제 코드를 새 저장소로 푸시할 준비가 되었습니다.

Git 자격 증명은 요구 사항에 따라 활성화하거나 비활성화 할 수 있습니다. 또한 필요한 경우, 암호를 재설정 할 수도 있습니다.

다음 단계

  1. 필요에 따라 Git 자격 증명 캐싱 명령(링크를 참조)을 사용하여 자격 증명을 캐시 할 수 있습니다 .
  2. 공동 작업자를 AWS CodeCommit 저장소에서 작업 할 수 있도록 초대하고 싶습니까? AWS 계정에 새 IAM 사용자를 만들고, 해당 사용자에 대한 Git 자격 증명을 만든 후 저장소 URL과 Git 자격 증명을 공동 작업하려는 사람과 안전하게 공유하기 만하면 됩니다.
  3. Git 자격 증명 (저장된 사용자 이름 및 비밀번호)을 통한 원격 Git 리포지토리 연결을 지원하는 타사 클라이언트(third-party client)에 연결합니다. 사실상 모든 도구와 IDE를 정적 자격 증명을 사용하여 연결할 수 있습니다. 우리는 다음을 테스트했습니다 :
    • Visual Studio (기본 Git plugin 사용)
    • Eclipse IDE (기본 Git plugin 사용)
    • Git Tower UI

자세한 내용은 AWS CodeCommit 설명서를 참조하십시오.

AWS CodeCommit에 연결하는 새로운 방법을 제공하게 된 것을 기쁘게 생각합니다. 더 많은 Tool과 IDE에서 AWS CodeCommit 저장소를 사용하실 수 있기를 바랍니다.

이 글은 AWS DevOps 블로그의 Introducing Git Credentials: A Simple Way to Connect to AWS CodeCommit Repositories Using a Static User Name and Password의 한국어 번역으로 강정희 솔루션즈 아키텍트께서 번역해 주셨습니다.

AWS CodeCommit, 서울 리전 출시 및 한국어 콘솔 등

AWS 개발 도구는 최신 개발 환경인 데브옵스(DevOps)을 지원해 주는 서비스 모음입니다. 이를 위해 AWS CodeCommit, CodeDeployCodePipeline, CodeBuild 서비스 등을 제공하고 있습니다.

데브옵스를 좀 더 원활하게 운영하기 위해 이번에 AWS CodeDeploy에 이어 AWS CodeCommit이 서울 리전에 출시되었습니다.

AWS CodeCommit는 안전하고 확장성이 뛰어난 전용 Git 저장소를 쉽게 호스트 할 수 있는 매니지드 소스 관리 서비스입니다. CodeCommit를 사용하면 자체 소스 제어 시스템을 운영하거나 인프라 조정을 염려할 필요가 없습니다. CodeCommit를 사용하면 소스 코드에서 바이너리까지 모든 것을 안전하게 저장할 수 있고 기존 Git 도구와 완벽히 호환됩니다.

또한, 저장소 트리거를 이용하여 단위 테스트 및 배포 도구 소스 코드 관리 워크 플로우에 통합할 수 있습니다. 트리거는 효율적이고 확장이므로 변경을 가져오도록 구축 된 모델보다 더 광범위하게 적용 가능합니다. 지속적인 통합지속적인 전달을 기반으로 한 개발 방법론을 위해 트리거 기능이 매우 유용합니다.

특히 코드 콘솔 조회 기능, 커밋  기록 보기, 커밋 기록 그래픽 표시 기능 , Elastic Beanstalk 통합 기능 등이 출시 되었으며 이번에 몇 가지 기능을 추가로 소개합니다.

한국어 콘솔 – AWS CodeCommit은 한국어 콘솔이 함께 출시되었습니다. 현재 Amazon ECS, AWS CloudWatch, AWS Certificate Manager, Directory Service, AWS Rekognition,  AWS Storage Gateway 등의 관리 콘솔에 한국어 지원이 계속 추가될 예정입니다.

브랜치 관리 기능 – 이제 콘솔에서 브랜치 생성 및 변경 등의 기능을 사용 할 수 있습니다.

코드 커밋 비교 기능 – 코드 보기 뿐만 아니라, 커밋간 혹은 브랜치 커밋 간 비교가 가능합니다.

더 자세히 살펴 보기

AWS 기반 데브옵스 살펴 보기

이제 AWS CodeCommit을 통해서 좀 더 간편하게 Git 레포지터리 관리 서비스를 이용해 보시기 바랍니다.

Channy(윤석찬);

AWS CodeCommit 이벤트 알림 신규 기능

AWS CodeCommit는 안전하고 확장성이 뛰어난 전용 Git 저장소를 쉽게 호스트 할 수 있는 매니지드 소스 관리 서비스입니다. 이번에 저장소 트리거를 추가하여 CodeCommit이 좀 더 유용한 서비스가 되었습니다. 트리거를 이용하여 단위 테스트 및 배포 도구 소스 코드 관리 워크 플로우에 통합할 수 있습니다. 트리거는 효율적이고 확장이므로 변경을 가져오도록 구축 된 모델보다 더 광범위하게 적용 가능합니다. 지속적인 통합지속적인 전달을 기반으로 한 개발 방법론을 위해 트리거 기능이 매우 유용합니다.

통지 기능 소개
CodeCommit 저장소마다 최대 10 개의 트리거를 만들 수 있습니다. 트리거는 코드 푸시/태그 생성/태그 삭제를 포함하는 저장소 동작에 대한 응답을 받습니다. 트리거는 저장소 특정 지점이나 모든 지점에 넣을 수 있습니다.

트리거를 통해 Amazon Simple Notification Service (SNS) 노티 항목을 보내거나 AWS Lambda 함수 호출이 가능합니다. 또한, 개별 트리거는 사용자 정의 데이터로 확장하는 것이 가능하고, 그 데이터에 의해 특정 트리거 같은 이벤트에서 실행되는 다른 트리거와 구별 할 수 있습니다. 저장소 이벤트를 이메일이나 SNS를 통해 구매하는 트리거를 사용할 수 있습니다. SNS에서 SQS에 쓰기 큐를 통해 CI/CD 도구에 작업을 올리거나 사용 도구가 제공하는 훅(webhook)에 SNS를 사용하여 활성화 할 수 있습니다. 특정 경우에는 CodeCommit 저장소 변경에 의해 지정된 작업이 시작됩니다. 또한, Lambda 기능을 이용하여 빌드 구문 확인, 코드의 복잡성 메트릭스 확인, 개발자 생산성 측정 등을 할 수 있습니다. 이 글 마지막에 몇 가지 특이한 아이디어를 생각해 보았습니다. (여러분도 한번 생각해 보시길!)

트리거는 AWS Management Console, AWS Command Line Interface (CLI)CodeCommit API를 통해 직접 관리 할 수 있습니다. 여기에서는 콘솔을 사용하도록 하겠습니다. 왼쪽 내비게이션 열에 Triggers 항목이 추가되어 있습니다 :

Create Trigger를 클릭하여 시작합니다. 하나의 이벤트 (또는 여러 이벤트)를 선택하고 단일 지점 (또는 여러 지점)을 선택하고 노티 발행과 Lambda 함수 호출에 필요한 정보를 입력합니다 :

대상 이벤트와 코드 지점을 선택했습니다.

 

SNS 토픽 또는 Lambda 함수를 지정하고 (적절한 권한이 지정되어 있는지 확인한 후) 예상대로 작동하는지 확인하기 위해 Test Trigger를 이용하고 Create 버튼을 클릭합니다.

예상대로 IAM 권한이 작동하는지 확인하기 위해 Test Trigger를 사용할 수 있습니다. 예를 들어, 아래에서는 일부러 오류를 발생시키고 있습니다:

이 문제는 How to Allow AWS CodeCommit to run the Function 문서에서 해결 방법을 찾을 수 있습니다.

정식 사용 가능
이 기능은 지금 바로 사용 가능하며, 더 자세한 정보는 Managing Triggers for an AWS CodeCommit Repository를 참고하시기 바랍니다.

Clare Liguori는 CodeCommit 트리거 기능을 활용한 몇 가지 아이디어를 만들었습니다. CI/CD를 통해 유용하게 진행 할 수 있습니다.

  • 동영상 배포 – 새로운 동영상 혹은 기존 동영상의 새 버전이 커밋되었는지 여부를 Lambda 함수로 체크하고 업데이트가 발생하면 동영상을 YouTube에 배포하기
  • 광고 배포 – 새로운 광고 자료가 준비 되면 Facebook에 자동으로 광고 생성, 실행, 소셜 미디어에 뉴스 등록하기

여러분이 개발 과정에서 이러한 트리거를 이용하여 창조적인 배포 방법이 있다면 꼭 공유해 주시기 바랍니다.

Jeff;

이 글은 New – Notifications for AWS CodeCommit의 한국어 번역입니다. AWS CodeCommit은 현재 미국 버지니아 리전에서만 제공되나, 소스 콘트롤 관리 서비스로 테스트해 보실 수 있습니다.

AWS CodeCommit 정식 출시

지난해 11월 AWS re:Invent에서 AWS CodeCommit을 발표한 이후(참고: AWS 코드 개발 및 배포 도구), 오늘 누구나 사용할 수 있도록 오늘 정식 오픈을 하게되었습니다. 새로운 서비스를 돌려 보기 전에 CodeCommit의 기능을 한번 다시 살펴보겠습니다.

CodeCommit 소개

CodeCommit은 관리형 소스 콘트롤 서비스로서 Git 레포지터리를 지원하고 모든 Git 기반 개발도구와 호환됩니다. 레포지터리에 있는 모든 파일은 크기나 숫자에 제한 없이 사용 가능하며, 여러분의 Git 사용 지식 및 도구와 베스트 프랙티스를 그대로 활용할 수 있습니다.

나아가 CodeCommit은 Git을 확장 가능한 가용성 높도록 개선하였고 이를 통해 여러분의 코드와 자산을 좀 더 안전하게 접근할 수 있게 됩니다. CodeCommit은 여러분의 파일을 커밋 시 암호화 하며, 관리자가 개발자를 제어할 수 있게 IAM 역할을 사용합니다. 개발 환경에서 올라오는 모든 데이터는 HTTPS나 SSH 연결로 접근 가능합니다. CodeCommit은 AWS 클라우드에서 실행 되며, 여러분의 팀이 다양한 장소에서 함께 개발하거나 파트너 및 벤더 등과 협업을 할 때도 유용합니다.

미리 CodeCommit를 사용해 보신 사용자들의 이야기를 한번 들어보면:

“저희는 수십만개의 동영상을 제공하고 있으며 각 비디오 플레이어 코드를 저장할 소스 콘트롤 시스템을 찾고 있었습니다. AWS CodeCommit을 통해 많은 수의 레포지터리를 확장성 걱정없이 사용할 수 있고, 크기도 걱정하지 않게 되었습니다. 우리 개발자들은 이미 친숙한 Git 인터페이스와 개발 도구를 통해 쉽게 사용할 수 있었습니다. Brian Deitte, Architect, Brightcove”

“이전에는 저희는 기존 데이터 센터에 설치한 중앙 집중된 버전 콘트롤 시스템을 쓰고 있었습니다. AWS CodeCommit을 통해 확장 가능한 분산형 소스 콘트롤을 통해 잘 관리되어서, 더 이상 하드웨어 확장 비용을 고려할 피요 없고 오히려 사용한 만큼 내는 가격 정책으로 더 유연할 뿐만 아니라 라이선스 걱정 없이도 사용자 추가나 제거가 가능합니다. 저희는 멋진 앱을 만드는데만 집중하고 AWS CodeCommit이 멋진 버전 콘트롤 관리 서비스를 더 잘 만들것으로 생각합니다. Ajit Zadgaonkar, Executive Director, Software Engineering Operations, Edmunds”

CodeCommit 지금 사용하기

CodeCommit을 직접 사용해 보기 위해서 AWS SDK for PHP 레포지터리의 미러를 만들어 보기로 했습니다. 우선 작은 EC2 인스턴스를 하나 만들어 Amazon Linux AMI를 설치합니다. 그리고 최신 버전의 AWS 코멘드라인 도구(CLI)를 설치하고 아래와 같이 Git을 설정합니다.

$ sudo yum install git

Git 개인 설정을 진행합니다.

$ git config --global user.name "Jeff Barr"
$ git config --global user.email jbarr@amazon.com

AWS CLI를 기본값으로 IAM 사용자로 설정하고, AWSCodeCommitFullAccess를 추가하여 관리 권한을 줄 수 있습니다. 이 정책이 적용되면 모든 레포지터리에 대해 CodeCommit 기능을 실행시켜볼 수 있습니다. 예를 들어 다른 개발자에게 레포지터리를 추가하거나 삭제할 수 있는 권한을 줄수도 있습니다.

그리고 나서, CodeCommit 자체적으로 인증할 수 있도록 아래와 같이 설정합니다.

 
$ git config --global credential.helper '!aws codecommit credential-helper $@'
$ git config --global credential.UseHttpPath true

credential helper는 aws 코맨드에서 제공되기 때문에 Git 설정에는 CLI를 사용하기 위해 설정했던 어떤 프로필도 참고할 수 있습니다. 이러한 옵션은 각자의 크리덴셜을 가지고 각 레포지터를 활용하는 여러 개의 프로젝트에서 일할 때 매우 유용합니다. credential.helper를 설정하고 아래와 같이 레포지터리 마다 설정 가능합니다.

$ cd repo1
$ git config --local credential.helper '!aws codecommit --profile jb_repo1 credential-helper $@' 
$ cd ../repo2
$ git config --local credential.helper '!aws codecommit --profile jb_repo2 credential-helper $@' 

Git이 설정되면, 콘솔에서 레포지터리를 하나 만들어 보겠습니다. (물론 CLI를 통해 create-repogitory 명령도 사용 가능):

이제 레포지터리가 사용가능합니다. CodeCommit 대시보드에서 한번에 레포지터리 목록을 볼 수도 있습니다.

이제 AWS_PHP_SDK 레포지터리에 올릴 수 있는 상태가 되었고, URL 아이콘을 클릭해서 HTTPS URL을 복사합니다.

SDK 복사본을 다운로드하고 이를 내 레포지터리에 올립니다.

$ git push https://git-codecommit.us-east-1.amazonaws.com/v1/repos/AWS_PHP_SDK --all
Counting objects: 28690, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (9608/9608), done.
Writing objects: 100% (28690/28690), 12.91 MiB | 625.00 KiB/s, done.544.00 KiB/s
Total 28690 (delta 16604), reused 28686 (delta 16603)

To https://git-codecommit.us-east-1.amazonaws.com/v1/repos/AWS_PHP_SDK
* [new branch] 2.8 -> 2.8
* [new branch] master -> master

콘솔을 통해 더 자세한 사항을 볼 수 있습니다.

또한, 레포지터리명을 변경하거나 다른 설정값도 바꿀 수 있습니다.

지금 사용해 보기

CodeCommit은 지금 사용 가능합니다. 월 별로 활성 사용자(IAM 사용자, 통합 사용자 및 루트 계정)당 1달러의 사용료가 발생하며, 생성하는 레포지터리 갯수는 관계가 없습니다.

각 사용자는 월간 10GB의 스토리지와 2,000번의 Git 요청(레포지터리 파일이 이동하는 push 또는 pull)을 할 수 있으며 추가 스토리지 용량은 GB당 $0.06 그리고 1회 요청당 $0.001의 비용이 청구됩니다.

AWS 무료 이용 범위에 따라 5개 활성 사용자에 대해 매월 50GB의 스토리지와 10,000번의 Git 요청이 무료로 제공됩니다.

향후 계획

저희는 CodeCommit에 대해 많은 계획을 가지고 있고, 현재 한참 작업중입니다.

  • Post-Receive Hooks – 레포지터리로 푸시를 한 후 CodeCommit 호출을 외부 시스템에서 할 수 있습니다. 이것은 지속 통합(Continuous Integration, CI) 서버에 알려주어 빌드 및 테스트를 할 수 있게 됩니다
  • CloudTrail 지원 – CodeCommit으로의 모든 API 호출을 저장 및 감시할 수 있습니다.
  • 추가 리전 지원 – 오늘은 US East (Northern Virginia)에만 오픈하지만, 향후에 지원 지역을 계속 추가할 예정입니다.
  • 추가 유저인터페이스 요소 지원 – 향후 완벽한 웹 기반 소스 코드 레포지터리 유저 인터페이스를 지원할 예정입니다.

— Jeff;

본 글은 Now Available – AWS CodeCommit 한국어 번역입니다.