Category: Developer Tools


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의 한국어 번역입니다.

ASP.NET Core를 위한 AWS CodeStar 사용 방법

AWS CodeStar 팀이 최근 ASP.NET Core 프로젝트 템플릿 2개를 추가로 발표했습니다.  AWS CodeStar는 개발자를 대신해 CI/CD(코드 통합 및 코드 배포) 파이프라인을 생성하므로 개발자는 인프라를 구축하는 대신 애플리케이션 빌드에 집중할 수 있습니다. 새로운 ASP.NET Core 프로젝트 템플릿을 사용하여 .NET 개발자는 처음부터 AWS 애플리케이션을 빌드하고 배포할 수 있습니다. AWS CodeStar에서 ASP.NET Core 애플리케이션을 생성하는 방법이 Tara Walker의 우수 블로그 게시물에 나와 있습니다. 이 블로그 게시물에서는 AWS CodeStar용 ASP.NET Core 프로젝트에 테스트를 추가하는 방법을 배우고 그 이면에서 이루어지는 일을 자세히 살펴볼 수 있습니다.

단위 테스트 프로젝트 추가

HelloController 기능을 연습하는 간단한 테스트 사례를 추가하는 것이 목적입니다. 새로운 ASP.Net Core 웹 서비스 프로젝트가 있다고 가정해 보겠습니다. 이 프로젝트가 없으면 Tara 블로그 게시물(위 내용 참조)에 따라 만드십시오. ASP.NET Core 웹 서비스 템플릿을 선택해야 합니다. AWS CodeStar용 ASP.NET Core를 만들고 Team Explorer를 통해 프로젝트 리포지토리를 복제한 후 AspNetCoreWebService 솔루션을 로드한 다음 블로그 게시물의 나머지 부분에 따르면 됩니다. Team Explorer를 통해 repo를 설정하기 위한 지침이 필요하면 Steve Robert의 Visual Studio 및 AWS CodeCommit 통합 5월자 발표를 참조하십시오.

먼저 AspNetCoreWebServiceTest라는 새 xUnit 프로젝트를 AspNetCoreWebService 솔루션에 추가하십시오. 새로운 테스트 프로젝트는 HelloController 클래스와 JsonResult를 참조하므로 AspNetCoreWebService를 프로젝트 참조로 추가하고 Microsoft.AspNetCore.Mvc를 NuGet 참조로 추가해야 합니다. 이 참조를 테스트 프로젝트에 추가한 후에  AspNetCoreWebServiceTest.csproj에 다음 내용이 추가되어야 합니다.

Xml
<ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.3" />
    ...
</ItemGroup>
...
<ItemGroup>
    <ProjectReference Include="..\AspNetCoreWebService\AspNetCoreWebService.csproj" />
</ItemGroup>

그러면 HelloController 클래스의 직접 참조를 만들고 JsonResult의 압축을 풀 수 있습니다. 다음과 같이 간단한 테스트 사례를 추가해 보겠습니다.

C#
using System;
using Xunit;
using Microsoft.AspNetCore.Mvc;
using AspNetCoreWebService.Controllers;

namespace AspNetCoreWebServiceTest
{
    public class HelloControllerTest
    {
        [Fact]
        public void SimpleTest()
        {
            HelloController controller = new HelloController();
            var response = controller.Get("AWS").Value as Response;
            Assert.Equal(response.output, "Hello AWS!");
        }
    }
}

파일 이름, 네임스페이스, 클래스 이름 및 메서드 이름이 바뀌었습니다. 테스트를 실행하고 통과하는지 확인하십시오. [Solution Explorer]에 다음과 같이 표시되어야 합니다.

이제 테스트 프로젝트가 작동하므로 애플리케이션을 배포하기 전에 파이프라인을 업데이트하여 테스트를 빌드하고 실행해야 합니다.

AWS CodeBuild 작업 업데이트

먼저 프로젝트가 어떻게 빌드되는지 살펴보겠습니다. 개발자나 팀 구성원이 repo에 변경 사항을 푸시하면 파이프라인이 최신 변경 사항에 따라 자동으로 빌드 프로세스를 시작합니다. 이 단계에서 AWS CodeBuild가 리포지토리 루트에 있는 buildspec.yml 파일을 사용하여 빌드 프로세스를 진행합니다.

YAML
version: 0.2
phases:
  pre_build:
    commands:
      - echo Restore started on `date`
      - dotnet restore AspNetCoreWebService/AspNetCoreWebService.csproj
  build:
    commands:
      - echo Build started on `date`
      - dotnet publish -c release -o ./build_output AspNetCoreWebService/AspNetCoreWebService.csproj
artifacts:
  files:
    - AspNetCoreWebService/build_output/**/*
    - scripts/**/*
    - appspec.yml

AWS CodeBuild용 .NET Core 이미지가 AWS CodeBuild 작업에 사용됩니다. buildspec.yml에서 호출할 .NET Core SDK 및 CLI가 이 이미지에 포함되어 있습니다.  이 프로젝트는 웹 서비스 1개로 구성되므로 buildspec.yml 파일 하나면 충분합니다. 프로젝트가 커지고 빌드 프로세스가 복잡해지면 셸 스크립트나 MSBuild .proj 파일을 통해 외부적으로 빌드 프로세스를 진행하고 buildspec.yml에서 간단하게 스크립트/빌드 파일을 호출할 수 있습니다.

dotnet publish 명령에 주목해 주십시오. 이 게시 단계에서는 호스트 머신에서 즉시 사용할 수 있도록 모든 종속성을 함께 패키지하므로 매우 중요합니다. 위에 나온 buildspec.yml 파일의 artifacts 섹션에서 정의한 대로 파일 목록이 Amazon S3 버킷에 저장되어 AWS CodeDeploy가 호스트에 애플리케이션을 배포하는 데 사용할 수 있습니다.  scripts/**/*에는 appsec.yml이 종속된 모든 스크립트가 포함됩니다. appsec.yml에 익숙하지 않거나 이 파일에 대해 자세히 알아보려면 다음 단원에서 다시 다루겠습니다.

이전 단원에서는 AWS CodeCommit 리포지토리에 테스트 프로젝트를 추가했습니다. 이제 buildspec.yml을 업데이트하여 새 테스트 프로젝트를 빌드하겠습니다. 빌드 단계의 일부로 dotnet vstest를 실행할 수 있습니다. 하지만 이 연습에서는 별도의 빌드 및 테스트 단계를 만들어 모범 사례를 따르겠습니다. buildspec.yml을 수정하여 테스트 바이너리를 빌드하고 비트를 AspNetCoreWebServiceTest/test_output 디렉터리에 게시합니다.

YAML
pre_build:
    commands:
        ...
        - dotnet restore AspNetCoreWebServiceTest/AspNetCoreWebServiceTest.csproj
post_build:
    commands:
        ...
        - dotnet publish -c release -o ./test_output AspNetCoreWebServiceTest/AspNetCoreWebServiceTest.csproj  
artifacts:
    files:
        ...
        - AspNetCoreWebServiceTest/test_output/**/*

AspNetCoreWebServiceTest/test_output/**/*을 아티팩트로 추가했습니다. 그래서 실제로 AWS CodeBuild 서비스가 게시된 테스트 바이너리를 Amazon S3에 업로드하므로 다음에 만들 테스트에서 이 테스트 바이너리를 참조할 수 있습니다.

AWS CodePipeline 업데이트

이전 단원에서는 새로운 테스트 프로젝트를 추가하고 buildspec.yml을 수정하여 테스트 실행에 필요한 바이너리를 빌드하고 저장했습니다. 이제 파이프라인에 테스트 단계를 추가하는 방법을 계속 설명하겠습니다. 먼저 콘솔에서 Test 단계와 UnitTest 작업을 파이프라인에 추가합니다.

나머지 UI를 따르고 다음 파라미터를 입력하십시오.

  • [Action category]: Test
  • [Action name]: UnitTest
  • [Test provider]: AWS CodeBuild
  • [Create a new build project] 선택
  • [Project name]: <your project name>-test
  • [Operating system]: Ubuntu
  • [Runtime]: .NET Core
  • [Version]: aws/codebuild/dot-net:core-1
  • [Build specification]에 대해nbsp;[Insert build Commands] 선택
  • [Build command]: dotnet vstest AspNetCoreWebServiceTest/test_output/AspNetCoreWebServiceTest.dll
  • [Role name]에 대해 목록에서 [CodeStarWorker-<your project name>-CodeBuild] 선택
  • [Input artifacts #1]에 대해 목록에서 [<your project name>-BuildArtifact] 선택

여기서 중요한 정보는 제공된 빌드 명령입니다. 이전 단계에서 빌드한 test .dll에 따라 테스트 작업이 dotnet vstest를 실행합니다. 이제 파이프라인이 다음과 같아야 합니다.

거의 끝났습니다. [Release change]를 눌러 이 파이프라인을 실행하면 [Error Code: AccessDeniedException] 메시지와 함께 Test 단계에서 파이프라인이 실패합니다. AWS CodeStar 서비스에는 새 Test 단계를 실행할 권한이 없기 때문입니다. AWS CodeStar 프로젝트에 적절한 액세스 권한을 부여하는 방법을 알아보겠습니다.

IAM 역할 및 정책 업데이트

AWS CodeStar 프로젝트는 여러 서비스와 작업자가 애플리케이션을 동기화, 빌드 및 배포할 수 있는 최소한의 권한에 대한 정책을 만들었습니다. 새로운 AWS CodeBuild 작업을 추가했기 때문에 [CodeStarWorkerCodePipelinePolicy]에서 새 리소스에 대한 액세스 권한을 부여해야 합니다. IAM 콘솔로 이동하여 변경해 보겠습니다. [Roles] 탭에서 “codebuild” 키워드를 사용하여 검색하십시오 역할은 CodeStarWorker-<project name>-CodePipeline 형식이어야 합니다. 그런 다음 역할에 연결된 정책을 편집하십시오. 편집 과정은 아래와 같습니다.

변경할 내용은 정책에서 AWS CodeBuild 작업과 연결된 새 codebuild 리소스 arn:aws:codebuild:us-east-1:532345249509:project/<your project name>-test를 추가하는 것입니다.

Js
{
    "Action": [
        "codebuild:StartBuild",
        "codebuild:BatchGetBuilds",
        "codebuild:StopBuild"
    ],
    "Resource": [
        "arn:aws:codebuild:us-east-1:532345249509:project/<your project name>"
        "arn:aws:codebuild:us-east-1:532345249509:project/<your project name>-test"
    ],
    "Effect": "Allow"
}

완료되었습니다. 이제 AWS CodeStar 프로젝트에 새 작업을 빌드하는 데 적절한 권한이 생겼습니다. [Release change]를 눌러 시도해 보십시오.

ASP.NET Core 애플리케이션 배포

이제까지 AWS CodeStar를 사용하여 프로젝트를 빌드하고 테스트하는 방법을 알아보았습니다. 이 단원에서는 배포 프로세스를 자세히 살펴보겠습니다. AWS CodeStar 프로젝트를 생성하는 동안 AWS CodeStar 서비스가 애플리케이션을 호스팅하기 위해 Amazon EC2 인스턴스를 만듭니다. appspec.yml의 지침에 따라 해당 인스턴스에서 배포 프로세스를 실행하는 code-deploy-agent도 설치합니다. appspec.yml을 살펴보겠습니다.

YAML
version: 0.0
os: linux
files:
  - source: AspNetCoreWebService/build_output
    destination: /home/ubuntu/aspnetcoreservice
  - source: scripts/virtualhost.conf
    destination: /home/ubuntu/aspnetcoreservice 
hooks:
  ApplicationStop:
    - location: scripts/stop_service
      timeout: 300
      runas: root

  BeforeInstall:
    - location: scripts/remove_application
      timeout: 300
      runas: root

  AfterInstall:
    - location: scripts/install_dotnetcore
      timeout: 500
      runas: root

    - location: scripts/install_httpd
      timeout: 300
      runas: root

  ApplicationStart:
    - location: scripts/start_service
      timeout: 300
      runas: root

배포 프로세스의 여러 단계에서 각 스트립트가 실행됩니다.

  • install_dotnetcore – 아직 설치되지 않은 경우 dotnet core를 설치하고 처음 실행할 때 패키지 캐시를 업데이트합니다. Microsoft에서는 이 방식으로 Ubuntu에서 .NET Core를 설치하도록 권장합니다.
  • install_httpd – HTTPD 대몬과 mod를 설치하고 HTTPD 구성 파일을 덮어써 reverse-proxy를 활성화합니다.
  • start_service – HTTPD 서비스를 다시 시작하고 기존의 ASP.NET 애플리케이션/서비스 프로세스를 다시 시작합니다.
  • scripts/stop_service – HTTPD 서비스를 중지하고, 아직 실행 중인 경우 ASP.NET 애플리케이션/서비스를 중지합니다.
  • remove_application – 배포된 애플리케이션을 인스턴스에서 제거합니다.

애플리케이션 배포 중에 인스턴스의 code-deploy-agent가 이 후크를 실행하여 서비스를 설치하고 시작합니다. AWS CodeDeploy 콘솔에서 이벤트 활동을 모니터링할 수 있으며 EC2 인스턴스에서 자세한 로그를 볼 수 있습니다. 인스턴스와의 SSH 연결을 열고 /var/log/aws/codedeploy-agent로 이동하여 배포 로그를 찾으십시오.

결론

이 블로그 게시물에서는 애플리케이션 파이프라인에 테스트 단계를 추가하는 예제를 통해 AWS CodeStar용 ASP.NET Core 프로젝트가 빌드 및 배포되는 방법을 알아보았습니다. 다양한 구성 요소와 AWS 서비스가 상호 작용하여 AWS CodeStar의 전체 CI/CD 시스템을 제공하는 방법을 이해하는 데 이 게시물이 도움이 되었기를 바랍니다.

이 글은 AWS 개발자 블로그의 Steven Kang이 작성한 ASP.NET Core and AWS CodeStar Deep Dive의 한국어 번역입니다.

AWS CodePipeline, 서울 리전 출시

오늘 AWS 코드 개발 서비스AWS CodePipeline이 서울 리전에 출시하였습니다. 하단 언어 메뉴를 한국어로 바꾸시면 한국어 콘솔 화면도 보실 수 있습니다.

사실 민첩하고 신속한 개발 및 운영(DevOps)과 클라우드 기반 인프라 자동화 관리는 개발자에게 매우 중요한 요소입니다. AWS의 개발 도구는 이러한 라이프사이클을 완벽하게 도와 주는 것으로 소스 코드 개발부터 테스트, 빌드 및 배포까지 자동화 합니다.

특히, AWS CodePipeline 은 출시 과정을 자동으로 운영하는 것으로, AWS CodeCommit이나 Github, AWS CodeBuild나 Jekins 그리고 AWS CodeDeployAWS Elastic Beanstalk 또는 AWS OpsWorks 를 통해 EC2 인스턴스 또는 자체 물리 서버에 배포 할 수 있습니다 .

지난 2015년 6월 AWS CodePipeline 정식 출시 이후에 추가된 기능 몇 가지를 추가로 소개해 드립니다.

  • AWS OpsWorks 통합
  • 람다 함수 트리거링
  • 수동 승인 조치
  • 커밋된 변경 사항에 대한 정보

AWS OpsWorks 통합 – AWS Codepipeline에서 모델링한 소프트웨어 출시 파이프 라인에서 AWS OpsWorks를 배포 공급자로 선택할 수 있습니다 .

또한,AWS OpsWorks for Chef에 포함 된 레시피를 사용하여 코드를 배포 할 수 있습니다.

AWS Lambda 함수 트리거 – 이제 소프트웨어 출시 파이프 라인 단계에서 람다 함수 트리거 할 수 있습니다. AWS Lambda는 거의 모든 작업을 수행하는 함수를 작성할 수 있으므로 파이프 라인이 작동하는 방식을 사용자 정의 할 수 있습니다.

수동 승인 조치 – 소프트웨어 출시 파이프 라인에 수동 승인 조치를 추가 할 수 있습니다 . 코드 변경이 필요한 IAM 권한을 가진 사람에 의해 승인되거나 거부 될 때까지 실행이 일시 중지됩니다.

커밋 코드 정보 보기 – 소프트웨어 출시 파이프라인에 소스 코드에 대한 최신 정보를 보실 수 있습니다.

CloudFormation 스택 워크플로 조합 기능 –  CodePipeline의 워크 플로는 여러 가지 방법으로 스택을 만들고 조작 할 수 있습니다.  이제 CloudFormation 스택에 대한 지속적인 배포 파이프 라인을 작성할 수 있습니다.

더 자세한 정보
AWS Codepipeline에 대한 상세한 정보는 아래 온라인 세미나 영상 및 자료를 참고하시기 바랍니다.

Channy(윤석찬);

AWS CodeStar 및 CodeBuild에 신규 닷넷(.Net) 코어 앱 개발 지원

몇 달 전에 AWS 기반 애플리케이션을 신속하게 개발, 구축 및 배포 할 수있게 해주는 AWS CodeStar 서비스를 소개했습니다. AWS CodeStar는 개발팀이 훌륭한 소프트웨어를 하기 위한 다양한 개발 및 배포 도구를 활용하면서 서비스 출시 속도를 높이고, 인프라 관리 비용은 줄이는 최적의 관리 도구 입니다.

CodeStar 서비스 출시 당시 자바 스크립트, 자바, 파이썬, 루비, PHP 등 5가지 프로그래밍 언어와 Amazon EC2, AWS Elastic Beanstalk 및 AWS Lambda에 대한 다양한 프로젝트 템플릿을 출시했습니다. 각 템플릿은 AWS 기반 인프라에 AWS 코드 서비스를 함께 구성하여 빠른 데브옵스(DevOps) 파이프라인을 만들 수 있습니다.

오늘 AWS CodeStar 및 AWS CodeBuild에 닷넷(.NET) 코어 애플리케이션 개발, 구축 및 배포 기능을 추가하였습니다. 이 글에서는 CodeStar를 사용하여 EC2에서 .NET 기반 ASP.Net 웹 애플리케이션 빌드 및 배포를 하고, .NET 기반 Lambda 함수를 만들어 ASP.Net 앱을 CodeBuild를 통해 진행해 보도록 하겠습니다.

먼저 CodeStar 콘솔에 로그인하여 새로운 CodeStar 프로젝트를 시작하겠습니다. 프로젝트 템플릿을 선택하는 옵션이 표시됩니다.

지금은 .NET 핵심 프로젝트를 만드는 데 중점을 두고자하므로 프로그래밍 언어 섹션에서 C#을 선택하여 프로젝트 템플릿을 필터링 합니다.이제 CodeStar는 ASP.NET Core로웹 애플리케이션과 서비스를 작성하는 데 사용할 수있는 새로운 .NET Core 프로젝트 템플릿 만 보여줍니다. 프로젝트 템플릿 정보에서 볼 수 있듯이 Amazon EC2에 배포됩니다. 이는 .NET Core 코드가 AWS CodeBuild를 사용하여 컴파일 및 패키지되고 AWS CodeDeploy 서비스를 사용하여 EC2에 배포된다는 것을 의미합니다.

이제 프로젝트 이름을 ASPNetCore4Tara로 지정하면, Project ID 는 자동으로 지정됩니다. 이 화면에서는 CodeStar에서 닷넷 애플리케이션을 소스 코드로 부터 배포까지 필요한 절차 및 사용할 AWS 서비스를 볼 수 있습니다. Next를 클릭합니다.

ASP.Net 프로그램이 Amazon EC2 인스턴스에 배포되기 때문에 SSH를 통한 콘솔 접속을 위해 EC2 키 페어를 선택(없으면 EC2 콘솔에서 새로 작성 필요) 합니다.  키페어를 선택했으면 Create Project 버튼을 클릭합니다.


AWS CodeStar가 프로젝트 생성을 완료하고, 관련 AWS 서비스를 모두 프로비저닝 한 후에는 CodeStar 대시 보드에 표시된 애플리케이션 엔드 포인트에서 샘플 애플리케이션을 볼 수 있습니다.  Application Endpoints 아래 링크를 클릭하여 샘플 ASP.NET Core 웹 응용 프로그램을 봅니다.

이제 생성 된 프로젝트의 소스 코드를 로컬로 복제(clone)하고 Visual Studio IDE를 프로젝트 리포지토리에 연결합니다. 소스 코드가 변경 되면, AWS CodeBuild를 통해 자동으로 Amazon EC2 및 AWS Lambda에 .NET Core 빌드 및 배포를 지원하며, 변경 사항에 맞게 람다 함수의 빌드 사양 파일을 적절하게 변경합니다.

먼저 Visual Studio IDE를 열고 ASPNetCore4Tara 프로젝트에 제공되는 AWS CodeCommit 리포지토리에 연결합니다. Visual Studio 2017 IDE는 AWS CodeStar의 .NET Core 프로젝트에 필요하며, AWS Toolkit for Visual Studio 2017은 프로젝트 레포지토리를 IDE에 연결하기 전에 설치 해야합니다.

Visual Studio에서 자신의 Repo에 연결하려면 Team Explorer를 열고, Hosted Service Providers  아래의 AWS CodeCommit 옵션에서 연결 링크를 선택합니다. 기본 AWS 프로파일 툴킷 자격 증명을 유지하려면 Ok을 클릭합니다.

공급자 영역의 Manage ConnectionsAWS CodeCommit 아래의 Clone을 선택합니다.

일단 AWS CodeCommit에서 aspnetcore4tara 저장소를 선택하여 Clone AWS CodeCommit Repository 를 선택하면, Git Credentials 대화 상자에 IAM 역할 내 HTTPS Git 자격 증명을 입력합니다. 이제 전체 프로세스가 완료되었고, Git Credential Manager 로그인 대화 상자가 표시되면 동일한 IAM 역할의 Git 자격 증명을 입력해도 됩니다.

개발 프로젝트가 이제 aspnetcore4tara CodeCommit 저장소에 연결되고 웹 애플리케이션 편집이 가능합니다. 아래의 스크린 샷에서 알 수 있듯이 샘플 프로젝트는 표준 ASP.NET Core MVC 웹 응용 프로그램으로 구성되어 있습니다.

프로젝트가 생성되면 변경과 업데이트를 할 수 있습니다. 이 프로젝트를 .NET Lambda 함수로 업데이트하고자 하므로 Visual Studio에서 CodeStar 프로젝트로 컴파일 할 매우 간단한 C# Lambda 함수를 작성하는 새로운 프로젝트를 빠르게 시작합니다. 이 AWS Lambda 함수는 CodeStar ASP.NET Core 웹 앱 프로젝트에 포함됩니다.

아래 람다 함수는 NASA의 유명한 천문학 사진 (Astronomy Picture of the Day) 웹 사이트의 REST API를 호출합니다. API는 최신 행성 이미지 및 관련 정보를 JSON 형식으로 다시 보냅니다. 아래에서 람다 함수 코드를 볼 수 있습니다.

C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

using System.Net.Http;
using Amazon.Lambda.Core;

// Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class.
[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))]

namespace NASAPicOfTheDay
{
    public class SpacePic
    {
        HttpClient httpClient = new HttpClient();
        string nasaRestApi = "https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY";

        /// <summary>
        /// A simple function that retreives NASA Planetary Info and 
        /// Picture of the Day
        /// </summary>
        /// <param name="context"></param>
        /// <returns>nasaResponse-JSON String</returns>
        public async Task<string> GetNASAPicInfo(ILambdaContext context)
        {
            string nasaResponse;
            
            //Call NASA Picture of the Day API
            nasaResponse = await httpClient.GetStringAsync(nasaRestApi);
            Console.WriteLine("NASA API Response");
            Console.WriteLine(nasaResponse);
            
            //Return NASA response - JSON format
            return nasaResponse; 
        }
    }
}

이제 C# Lambda 함수를 게시하고 NASAPicOfTheDay 프로젝트가있는 Visual Studio 용 AWS Toolkit에서 제공하는 AWS Lambda에 게시 옵션을 사용하여 테스트 할 것입니다. 함수를 게시 한 후 테스트하여 Visual Studio 및 / 또는 AWS Lambda 콘솔에서 올바르게 작동하는지 확인할 수 있습니다. C# 및 .NET을 사용하여 AWS Lambda 함수를 작성하는 방법에 대해 자세히 알아볼 수 있습니다. http://docs.aws.amazon.com/lambda/latest/dg/dotnet-programming-model.html

이제 람다 함수를 완성하고 테스트하였으므로, aspnetcore4tara라는 CodeStar 프로젝트에서 CodeBuild buildspec.yml 파일을 업데이트하여 람다 함수 배포를 포함합니다.

이 작업을 수행하기 위해 functions라는 새 폴더를 만들고 Lambda 함수 .NET 프로젝트가 포함 된 폴더를 aspnetcore4tara 웹 응용 프로그램 프로젝트 디렉토리에 복사합니다.

AWS Lambda 함수 빌드 및 배포를 위해,  aws-lambda-dotnet tools 에 사용된  buildspec.yml 파일에 명령을 사용합니다. 여기의 사용자 맞춤 프로파일 정보가 들어있는 NASAPicOfTheDay 폴더에 funcprof 파일을 추가합니다. 남아있는 작업은 NASAPictureOfDay를 배표하기 위해 AWS 람다 함수를 포함 ASPNetCore4Tara 프로젝트 빌드를 위해 CodeBuild가 사용하는 buildspec.yml 파일을 업데이트하는 것입니다. 업데이트 된 buildspec.yml은 다음과 같습니다 :

YAML
version: 0.2
phases:
  env:
  variables:
    basePath: 'hold'
  install:
    commands:
      - echo set basePath for project
      - basePath=$(pwd)
      - echo $basePath
      - echo Build restore and package Lambda function using AWS .NET Tools...
      - dotnet restore functions/*/NASAPicOfTheDay.csproj
      - cd functions/NASAPicOfTheDay
      - dotnet lambda package -c Release -f netcoreapp1.0 -o ../lambda_build/nasa-lambda-function.zip
  pre_build:
    commands:
      - echo Deploy Lambda function used in ASPNET application using AWS .NET Tools. Must be in path of Lambda function build 
      - cd $basePath
      - cd functions/NASAPicOfTheDay
      - dotnet lambda deploy-function NASAPicAPI -c Release -pac ../lambda_build/nasa-lambda-function.zip --profile-location funcprof -fd 'NASA API for Picture of the Day' -fn NASAPicAPI -fh NASAPicOfTheDay::NASAPicOfTheDay.SpacePic::GetNASAPicInfo -frun dotnetcore1.0 -frole arn:aws:iam::xxxxxxxxxxxx:role/lambda_exec_role -framework netcoreapp1.0 -fms 256 -ft 30  
      - echo Lambda function is now deployed - Now change directory back to Base path
      - cd $basePath
      - echo Restore started on `date`
      - dotnet restore AspNetCoreWebApplication/AspNetCoreWebApplication.csproj
  build:
    commands:
      - echo Build started on `date`
      - dotnet publish -c release -o ./build_output AspNetCoreWebApplication/AspNetCoreWebApplication.csproj
artifacts:
  files:
    - AspNetCoreWebApplication/build_output/**/*
    - scripts/**/*
    - appspec.yml
    

이제 끝났습니다. 이제 ASPNetCore4Tara 프로젝트를 위해 제공된 CodeCommit 저장소에 수정할 파일 추가 및 업데이트를 진행하면, 전체적으로 AWS CodePipeline을 자동 시작하여,  AWS CodeCommit에서 부터 CodeBuild까지 .NET Core에 대한 새로운 기능을 사용하여 ASP.NET Core 웹 애플리케이션과 .NET 기반 AWS Lambda 기능을 모두 처리할 수 있습니다.

요약하기
AWS CodeStar 및 AWS CodeBuild의 .NET Core에 대한 지원은 .NET 개발자가 AWS에서 .NET 기반 솔루션을 빌드 할 때 지속적인 통합(CI) 및 전달(CD)의 이점을 활용할 수 있습니다. AWS CodeStar 및 AWS CodeBuild의 .NET Core 지원에 대한 자세한 내용을 보거나 AWS CodeStar에 대한 소개는 지난 온라인 세미나 영상을 참고하시기 바랍니다.

.NET Core를 AWS CodeStar 및 AWS CodeBuild와 함께 사용함으로서 AWS 기반.NET 프로젝트를 보다 효율적으로 구축 할 수 있습니다.

Tara;

이 글은 Launch – .NET Core Support In AWS CodeStar and AWS Codebuild의 한국어 요약입니다.

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 X-Ray, AWS Lambda 지원 공식 출시

AWS X-Ray에 대한 AWS Lambda 지원 기능을 출시했습니다. 지난 샌프란시스코 서밋에서 정식 출시한 AWS X-Ray는 분산 응용 프로그램의 실행 및 성능 동작을 분석하는 AWS 서비스입니다. 전통적인 디버깅 방식은 여러 서비스가 실행되는 독립 구성 요소가 있는 마이크로 서비스 기반 응용 프로그램에서는 잘 작동하지 않습니다. X-Ray를 사용하면 응용 프로그램의 대기 시간을 줄임으로써 오류, 속도 저하 및 시간 초과를 신속하게 진단 할 수 있습니다. 간단한 람다 기반 응용 프로그램을 작성하고 분석함으로써 우리의 응용 프로그램에서 X-Ray를 잠깐 사용하는 방법을 보여 드리겠습니다.

바로 시작하기를 원할 경우, 람다 함수 페이지로 이동하여 추적 기능을 활성화하여 기존 람다 함수에 대해서도 X-Ray 추적 기능을 쉽게 켤 수 있습니다.

또는 AWS 명령 행 인터페이스 (CLI)에서 함수의 tracing-config 를 업데이트하여 시작 가능합니다. (--function-name도 전달해야 함)

$ aws lambda update-function-configuration --tracing-config '{"Mode": "Active"}'

추적 모드가 활성화되면 Lambda는 함수에 대해 즉시 추적을 시작합니다. 그렇지 않으면, 업스트림 서비스에서 명시 적으로 지시 한 경우에만 함수가 추적됩니다. 추적 기능을 사용하면  응용 프로그램 리소스와 그 사이의 연결 을 시각적으로 나타냅니다. 주목해야 할 것은 X-Ray 데몬이 람다 함수의 리소스 중 일부를 사용한다는 것입니다. 메모리 제한에 가까워지면, Lambda는 메모리 부족 오류가 발생하지 않도록 X-Ray 데몬을 중단 시킬 수 있습니다.

몇 가지 다른 서비스를 사용하는 빠른 애플리케이션을 구축하여 신규 연동 테스트를 해 보겠습니다.

스마트폰에서 찍은 셀카가 많아서 이를 분석해 보려고 합니다. Amazon Simple Storage Service (S3) 버킷에 업로드 된 새로운 이미지에 응답하는 Java 8 런타임을 사용하여 간단한 Lambda 함수를 작성합니다. 이 샘플 앱은 사진에 Amazon Rekognition 을 사용하여, 이미지 내 객체를 인식하고 검색된 레이블을 Amazon DynamoDB에 저장합니다.

service map

먼저 몇 가지 X-Ray 서비스에서 사용하는 용어를 살펴보겠습니다.

X-Ray가 서비스 그래프를 생성하여 추적 결과를 구성한다고 쉽게 이해할 수 있습니다. 서비스 그래프는 우리가 위에서 볼 수 있는 멋진 시각적 표현을 만듭니다 (여러 가지 색상이 다양한 요청 응답을 나타냅니다). 응용 프로그램을 실행하는 컴퓨팅 리소스는 segment의 형태로 수행 중인 작업에 대한 데이터를 보냅니다. 하위 데이터를 작성하여 해당 데이터에 대한 주석을 추가하고, 세분화 된 타이밍을 추가 할 수 있습니다. 응용 프로그램을 통한 요청 경로는 traces로 추적합니다. traces는 단일 요청으로 생성 된 모든 segment를 수집합니다. 즉, S3에서 들어오는 Lambda 이벤트를 DynamoDB로 쉽게 추적 할 수 있으며 오류 및 대기 시간이 어느 부분에 있는지 파악할 수 있습니다.

이제 selfies-bucket이라는 S3 버킷, selfies-table이라는 DynamoDB 테이블, 그리고 Lambda 함수를 생성합니다. ObjectCreated의 S3 버킷에 대한 Lambda 함수에 트리거를 추가합니다. 람다 함수 소스 코드는 매우 간단합니다. 코드를 변경하지 않으면 JAR에 aws-xray-sdk 및 aws-xray-sdk-recorder-aws-sdk-instrumentor 패키지를 포함시켜 Java 기능에서 X-Ray를 사용할 수 있습니다.

자 이제 사진 업로드를 해서 X-Ray 추적 상황을 살펴봅니다.

우리는 이러한 개별 추적 데이터 중 하나를 클릭하여 호출에 대한 자세한 정보를 얻을 수 있습니다.

AWS::Lambda 세그먼트에서 함수의 대기 시간, 실행 대기 시간, 실행 시도 횟수를 볼 수 있습니다.

AWS::Lambda::Function 세그먼트에는 몇 가지 가능한 하위 세그먼트가 있습니다.

  • The inititlization subsegment includes all of the time spent before your function handler starts executing
  • The outbound service calls
  • Any of your custom subsegments (these are really easy to add)

DynamoDB에 약간의 문제가 있는 것처럼 보입니다. 오류 아이콘을 클릭하면, 전체 예외 스택 트레이스를 얻을 수 있습니다. 테이블 용량이 부족하기 때문에 DynamoDB를 조정해야 합니다. 단 몇 번의 클릭 또는 빠른 API 호출로 더 많은 정보를 얻을 수 있습니다.

X-Ray SDK를 사용하면 X-Ray로 데이터를 쉽게 내보낼 수 있습니다. 파이썬의 경우, 이 라이브러리를 fleece라는 rackspace에서 가져올 수 있습니다. 더 자세한 사항은 기술 문서를 참고하시기 바랍니다.

– Randall;

AWS CodeStar 신규 서비스 – 빠른 애플리케이션 개발, 배포를 위한 통합 관리 서비스

오늘날 대부분 소프트웨어 개발팀이 직면하고 있는 문제가 있습니다. 바로 새로운 프로젝트를 시작할 때 환경 설정, 팀 구성원 권한 작업, 개발 코드 빌드, 구성 및 라이브러리 등을 추적하는 일상적인 작업을 해야 된다는 것입니다. 기업이 빠르게 혁신하고 시장에 빨리 진출해야 하는 상황에서 개발팀이 소프트웨어를 개발, 구축 및 배포하는 작업을 보다 쉽고 효율적으로 수행하는 것은 필수적인 상황입니다.

안타깝게도 많은 기업들은 보다 민첩하고 역동적인 소프트웨어 개발 프로세스를 추구하는 데있어 몇 가지 과제에 직면해 있습니다. 먼저 개발자가 코딩을 시작하기 전에 완료해야 하는 기나긴 설정 과정입니다. 여기에는 IDE 설정, 코드 저장소 접근 권한 및 빌드, 테스트 및 정식 서비스 배포에 필요한 인프라 관리를 포함합니다.공동 작업을 위해 프로젝트의 모든 구성원에게 안전한 환경을 제공하기 위해 팀의 역할과 필요에 따른 별도의 프로젝트와 도구를 자주 설정해야 합니다.

또한, 모든 이해 관계자에게 과제에 대한 진행 사항, 개발 진행 및 소프트웨어 문제 보고에 대한 정보를 제공하는 데에도 많은 시간이 걸립니다.마지막으로, 지속적인 통합(CI)과 지속적인 제공(CD)에 대한 모범 사례를 채택하여 소프트웨어 개발 속도를 높이고 출시 시간을 단축 하고자 합니다. 이러한 민첩한 개발 전략을 구현하려면 개발 방법론에 대해 교육하고, 새로운 프로세스를 위한 리소스를 설정하는 데 시간을 투자해야 합니다.

AWS CodeStar 정식 출시
여러분의 개발팀이 지금까지 언급한 소프트웨어 구축 초기와 진행 중 어려움을 완화하면서, 애플리케이션 출시 속도를 높일 수 있도록 AWS CodeStar를 정식 출시 합니다.

AWS CodeStar는 전체 개발 프로젝트 설정을 단순화하여 AWS에서 애플리케이션을 보다 쉽게 ​​개발, 구축 및 배포 할 수 있도록 설계된 클라우드 서비스입니다. AWS CodeStar에는 소프트웨어 프로젝트 코딩, 빌드, 테스트, 배포 및 실행을 위한 프로젝트 및 리소스를 프로비저닝 할 수 있는 주요 개발 플랫폼의 프로젝트 템플릿이 포함되어 있습니다.

AWS CodeStar 서비스의 주요 이점은 다음과 같습니다.

  • 5 가지 프로그래밍 언어를 사용하여 Amazon EC2, AWS Elastic Beanstalk, AWS Lambda 용 템플릿을 사용하여 새 프로젝트를 쉽게 만들 수 있습니다. 자바 스크립트, 자바, 파이썬, 루비, PHP. 템플릿을 선택하면 서비스가 프로젝트 및 애플리케이션에 필요한 기본 AWS 서비스를 프로비저닝합니다.
  • 개발팀 구성원의 접근 및 보안 정책 관리를 위한 통합적인 IAM 접근 정책을 자동으로 구성하어 안전한 응용 프로그램 개발 환경을 보장합니다.
  • 소스 코드 커밋, 빌드, 배포 활동 등과 같은 다양한 활동을 추적하기 위한 프로젝트 관리 대시 보드를 제공합니다.
  • Visual Studio, Eclipse 또는 Git을 지원하는 코드 에디터와 같은 자주 사용하는 IDE를 사용할 수 있도록 샘플 코드를 제공합니다.
  • AWS CodeCommit, AWS CodeBuild, AWS CodePipeline, AWS CodeDeploy.를 사용하여 각 프로젝트에 대한 지속적인 전달 파이프 라인을 자동으로 구성합니다.
  • AWS CodeStar 콘솔에서 직접 문제 관리 및 추적을 위해 Atlassian JIRA와 통합할 수 있습니다.

AWS CodeStar를 통해 개발팀은 소프트웨어 및 버그 수정을 배포 할 수 있는 속도를 높일 뿐만 아니라 개발자가 고객의 요청 및 요구에 맞는 소프트웨어를 구축 할 수 있는 민첩한 소프트웨어 개발 워크플로우를 구축 할 수 있습니다.

AWS CodeStar를 사용하는 개발 워크 플로의 예는 다음과 같습니다.

AWS CodeStar 시작 하기
이제 AWS CodeStar 서비스를 사용하여 간단한 웹 애플리케이션 프로젝트를 설정하는 방법을 살펴 보겠습니다. 먼저 AWS CodeStar 콘솔로 가서 Start a project 버튼을 클릭합니다.

적절한 IAM 권한을 설정하지 않은 경우 AWS CodeStar는 사용자 대신 AWS 리소스를 관리 할 수있는 권한을 요청하는 대화 상자를 표시합니다. Yes, grant permissions 버튼을 클릭하여 AWS CodeStar에게 다른 AWS 리소스에 대한 적절한 권한을 부여합니다.

그러나, IAM 사용자에게 올바른 정책을 적용하지 않았기 때문에 AWS CodeStar에 대한 관리 권한이 없다는 경고를 받았습니다. AWS CodeStar에서 프로젝트를 만들려면 IAM 사용자에게 AWSCodeStarFullAccess 관리 정책을 적용하거나 모든 AWS 서비스에 대한 전체 권한을 가진 IAM 관리자를 보유해야합니다.

IAM에서 앞서 언급한 권한을 추가 했으므로 이제 서비스를 사용하여 프로젝트를 만들 수 있습니다. 시작하려면 Create a new project 버튼을 클릭하기 만하면 됩니다.

현재 다양한 소프트웨어 개발 요구에 맞는 20 가지가 넘는 AWS CodeStar 프로젝트 템플릿을 이미 제공하고 있습니다. 각 프로젝트 템플릿은 프로젝트 배포에 사용되는 AWS 서비스, 프로그래밍 언어 및 개발 솔루션 유형을 포함합니다. AWS CodeStar는 현재 Amazon EC2, AWS Lambda 및 AWS Elastic Beanstalk과 같은 AWS 서비스를 지원합니다. 미리 구성된 AWS CloudFormation 템플릿을 사용하여, 프로젝트 템플릿을 통해 간단한 버튼 클릭만으로 마이크로 서비스, Alexa 기술, 웹 애플리케이션 등과 같은 소프트웨어 개발 프로젝트를 만들 수 있습니다.

샘플로서 AWS CodeStar 프로젝트에서 Node.js와 AWS Lambda를 사용하여 Node.js/AWS Lambda 프로젝트 템플릿을 사용하여 서버리스(Serverless) 웹 애플리케이션을 만들어 보겠습니다.

이 템플릿에서는 AWS CodePipeline을 비롯하여 AWS CodeBuild, AWS CloudFormation 및 Amazon CloudWatch 등 개발 프로젝트에 필요한 모든 도구와 서비스를 설정합니다. 신규 AWS CodeStar 프로젝트를 TaraWebProject라는 이름을 지정하고 Create Project를 클릭합니다.

처음 만들 때는 AWS CodeStar 사용자 설정을 묻는 대화 상자가 나타납니다. 표시 이름의 텍스트 상자에 Tara를 입력하고 이메일 텍스트 상자에 이메일 주소를 추가합니다. 이 정보는 프로젝트에서 다른 사람들에게 어떻게 보일지 설정하는 것입니다.

다음 단계는 프로젝트 코드 편집 방법을 선택하는 것입니다. Visual Studio IDE를 사용하여 TaraWebProject 프로젝트 코드를 편집하기로 합니다. Visual Studio에서는 프로젝트 코드를 편집하는 동안 AWS Toolkit for Visual Studio 2015를 사용하여 AWS 리소스에 접근하도록 구성해야합니다. 아래 화면에서 AWS CodeStar가 내 프로젝트를 위해 구성한 AWS CodeCommit Git 저장소에 대한 링크도 제공됩니다.

이제 소프트웨어 개발 프로젝트를 위한 프로비저닝 및 도구 설정이 완료되었습니다. TaraWebProject의 AWS CodeStar 대시 보드를 통해 프로젝트 리소스를 관리 할 수 ​​있습니다. 여기에는 코드 커밋, 팀 구성원 및 위키, 지속적인 배포 파이프 라인, Jira 문제 추적, 프로젝트 상태 및 기타 적용 가능한 프로젝트 리소스 관리를 포함합니다.

AWS CodeStar를 통해 서버리스 웹 애플리케이션 개발을 시작할 수 있는 샘플 프로젝트의 결과를 보려면 대시 보드의 Application endpoints으로 이동하여 제공된 링크를 클릭합니다.

웹 브라우저 창이 열리고 AWS CodeStar가 생성한 샘플 웹 서비스가 표시되며, 지금 부터 개발을 시작할 수 있습니다. 샘플 애플리케이션은 시간에 따라 샘플 앱의 배경색이 변경되는 기능을 가지고 있습니다.

이제 샘플 웹 사이트를 구축하는 데 사용 된 소스 코드를 살펴 보겠습니다. 소스 코드를 보려면 AWS CodeStar 콘솔의 TaraWebProject 대시 보드로 돌아가서 사이드 바 메뉴에서 코드 옵션을 선택합니다.

AWS CodeCommit 콘솔 tarawebproject Git 저장소로 이동합니다. 여기에서 웹 애플리케이션 코드, 레포지터리에서 작성한 커밋, 커밋 또는 브랜치 비교, 레포지터리 이벤트에 트리거를 수동으로 볼 수 있습니다.

AWS CodeStar를 통해 AWS 기반 웹 애플리케이션을 쉽게 시작할 수 있습니다. Visual Studio에 AWS CodeStar를 통합했기 때문에 IDE를 사용하여 제공된 코드 저장소에 커밋 할 때마다 자동으로 TaraWebProject에 포함될 코드를 변경하여 프로그램을 업데이트 할 수 있습니다.

AWS CodeStar의 TaraWebProject 대시 보드에는 소스 코드 작업을 위해 도구를 프로젝트 리포지토리에 연결하는 것에 대한 메시지가 있습니다. Visual Studio를 선택한 IDE로 이미 선택 했음에도 불구하고 Connect Tools 단추를 클릭하여이 IDE에 연결하는 단계를 검토할 수 있습니다.

다시 말하지만, 프로젝트 코드를 편집할 때 사용할 IDE(Visual Studio, Eclipse 또는 Command Line 도구)를 선택할 수 있는 화면이 표시됩니다. 나의 프로젝트에서 작업하는 동안 언제든지 IDE 옵션을 변경할 수 있는 옵션이 있음을 알아 두는 것이 중요합니다. 또한, HTTPS 및 SSH를 통해 AWS CodeCommit 저장소에 연결할 수 있습니다. 각 프로토콜에 대한 적절한 저장소 URL을 검색하려면 코드 저장소 URL 드롭 다운을 선택하고 HTTPS 또는 SSH를 선택하고 텍스트 입력란에서 결과 URL을 복사하면 됩니다.

Visual Studio를 선택하면 CodeStar가 Visual Studio와 통합하기 위해 필요한 단계로 이동합니다. 여기에는 Visual Studio용 AWS Toolkit 다운로드, AWS CodeCommit을 통한 AWS CodeStar에 팀별 탐색기 연결, 변경 사항을 레포지터리에 푸시하는 방법이 포함됩니다.

Visual Studio를 AWS CodeStar 프로젝트에 성공적으로 연결 한 후, TaraWebProject 대시 보드로 돌아갑니다. 먼저 프로젝트 팀 페이지로 이동할 수 있도록 팀 타일 설정을 선택합니다.

TaraWebProject 프로젝트 팀 페이지에서 Add team member 버튼을 선택하고 Select user 드롭 다운을 클릭하여 Jeff 팀 멤버를 추가합니다. 팀 구성원은 내 계정의 IAM 사용자여야하므로 Create new IAM user 링크를 클릭하여 Jeff의 IAM 계정을 만듭니다.

Create IAM user 대화 상자에서 팀 구성원 (이 경우 Jeff Barr)의 IAM 사용자 아이디, 표시 이름 및 전자 메일 주소를 입력합니다. Jeff가 부여 할 수 있는 프로젝트 역할에는 Owner, Contributor 또는 Viewer의 세 가지 유형이 있습니다. TaraWebProject 응용 프로그램의 경우 Contributor 프로젝트 역할을 부여하고 원격 접근 확인란을 선택하여 Remote access 권한을 부여합니다. 이제 Create 버튼을 클릭하여 Jeff의 IAM 사용자 계정을 만듭니다.

새로운 IAM 사용자 생성을 확인하기 위해 IAM 콘솔로 이동합니다. 부여 된 IAM 사용자 정보 및 사용 권한을 검토 한 후 Create user 버튼을 클릭하여 TaraWebProject에 대한 Jeff의 IAM 사용자 계정 생성을 완료합니다.

Jeff의 계정을 성공적으로 생성 한 후에는 로그인 자격 증명을 전자 메일로 보내거나 자격 증명 .csv 파일을 다운로드 해야 합니다.본 자격 증명을 다시 검색 할 수 없으므로 중요합니다. 현재 로그인 자격 증명을 얻지 않고, 페이지를 떠나는 경우 Jeff에 대한 새 자격 증명을 생성해야 합니다. 그리고, Close 버튼을 클릭하면 AWS CodeStar 콘솔로 돌아갑니다.

이제 JeffBarr-WebDev IAM 역할을 선택하고 Add 버튼을 클릭하여 Jeff를 TaraWebProject의 팀 구성원으로 추가하는 작업을 완료 할 수 있습니다.

Jeff를 팀 구성원으로 AWS CodeStar 프로젝트 TaraWebProject에 추가하여 웹 애플리케이션을 구축 할 때, 공동 작업을 가능합니다.

AWS CodeStar 서비스를 통해 TaraWebProject 대시 보드에서 모든 프로젝트 활동을 바로 모니터링 할 수 있다는 것입니다. 애플리케이션 활동, 최근 소스 코드 커밋, 빌드 결과, 코드 변경 및 배포와 같은 모든 프로젝트 작업 상태를 하나의 포괄적 인 대시 보드에서 추적 할 수 있습니다. AWS CodeStar는 Application activity 섹션과 함께 Amazon CloudWatch에 대시 보드를 연결하고 AWS CodePipeline과 함께 Continuous Deployment 섹션의 빌드 및 배포 상태에 대한 데이터를 제공하며 커밋 내역 섹션에 AWS CodeCommit을 사용한 최신 Git 코드 Commit history을 표시합니다.

맺음말

AWS CodeStar 서비스를 통해 AWS 서비스를 사용하여 TaraWebProject 소프트웨어 프로젝트의 코딩, 빌드, 테스트 및 배포를 할 수 있는 서버리스 웹 애플리케이션을 만들었습니다. AWS CodeStar를 사용하여 응용 프로그램을 출시하는 일상적인 개발 및 배포 관리의 이점을 확인할 수 있었습니다.

AWS CodeStar를 사용하면 AWS에서 애플리케이션을 신속하게 개발, 구축 및 배포 할 수 있습니다. AWS CodeStar는 통합 된 사용자 인터페이스를 제공하므로 소프트웨어 개발 활동을 한 곳에서 쉽게 관리 할 수 ​​있습니다. AWS CodeStar를 사용하면 다양한 템플릿에서 AWS Lambda, Amazon EC2 또는 AWS Elastic Beanstalk을 사용하여 프로젝트를 설정할 수 있습니다. AWS CodeCommit, AWS CodeBuild, AWS CodePipeline 및 AWS CodeDeploy를 사용하여 프로젝트 관리 대시 보드, 자동 연속 공급 파이프 라인 및 Git 코드 레포지토리가 사전 구성되어 있으므로 개발자는 최신 민첩한 소프트웨어 개발 모범 사례를 구현할 수 있습니다.

각 AWS CodeStar 프로젝트는 개발자에게 Git을 지원하는 널리 사용되는 IDE와 함께 사용할 수있는 작업 코드 샘플을 제공하여 개발 초기 단계에서부터 시작합니다. 또한 AWS CodeStar는 AWS CodeStar 콘솔에서 직접 소프트웨어 팀에 대한 프로젝트 관리 및 문제 추적 시스템을 제공하는 Atlassian JIRA Software 와의 통합 기능을 제공합니다.

AWS CodeStar service 서비스를 사용하여 AWS에서 새로운 소프트웨어 프로젝트를 개발할 수 있습니다. AWS CodeStar 제품 페이지 및 AWS CodeStar 사용자 가이드를 검토하여 자세한 내용을 확인하십시오.

Tara

이 글은 New- Introducing AWS CodeStar – Quickly Develop, Build, and Deploy Applications on AWS의 한국어 번역입니다.l

AWS X-Ray, 서울 리전 포함 정식 출시 (Lambda 연동 기능 미리보기)

작년 AWS re:Invent에서 발표한 AWS X-Ray 에 대해 이미 말씀 드린 적이 있습니다.(AWS X-Ray – 분산 애플리케이션 분석 참고).오늘 AWS X-Ray를 서울 리전을 포함해서 정식 출시하게 되었습니다.

X-Ray를 사용하면 Amazon EC2 인스턴스, Amazon ECS 컨테이너 등의 마이크로 서비스와 AWS 데이터베이스 서비스 및 AWS 메시징 서비스를 실행 할 때, 애플리케이션 요청을 추적 할 수 있습니다. 개발 및 정식 사용으로 만들어져  수천 개의 마이크로 서비스로 구성된 애플리케이션은 물론 간단한 3 계층 응용 프로그램도 처리 할 수 ​​있습니다. 작년에 여러분에게 보여 드렸던 것처럼 X-Ray는 각 요청 엔드포이트 간 추적을 수행하고, 대표 샘플을 기록하며 서비스 맵과 추적 데이터를 보고 성능 문제와 오류를 분석합니다. 이를 통해 애플리케이션과 기본 서비스가 어떻게 수행되고 있는지 파악하여, 버그 원인을 식별하고 해결할 수 있습니다.

You can take a look at the full X-Ray walk-through in my earlier post to learn more.

지난 re:Invent에서 미리보기 형식으로 X-Ray를 시작했으며, 오늘 부터 미국 동부 (버지니아 북부), 미국 서부 (캘리포니아 북부), 미국 동부 (오하이오), 미국 서부 (오레곤), EU (아일랜드), EU (프랑크푸르트), 남미 (São Paulo), 아시아 태평양 (Tokyo), 아시아 태평양 (Seoul), 아시아 태평양 (Sydney), 아시아 태평양 (Sydney) 및 아시아 태평양 (Mumbai) 리전에 정식 공개하였습니다.

Lambda 함수 연동 (미리보기)
베타 기간 동안 서비스를 일부 업데이트하고, AWS Lambda 통합 기능을 추가했습니다. 오늘 부터 미리보기 형식으로 시작합니다. 이제 Lambda 함수 개발자는 X-Ray를 사용하여 함수 실행 및 성능에 대한 가시성을 확보 할 수 있습니다. 이전에는 애플리케이션 대기 시간 분석, 속도 저하 진단 또는 시간 초과 문제 해결을 원하는 Lambda 고객은 CloudWatch나 사용자 정의 로깅 및 분석에 의존 해야했습니다.

Lambda 연동 기능을 사용하려면, Lambda 함수에 X-Ray에 쓰기 권한을 부여한 실행 역할이 있는지 확인한 다음, 함수별로 추적을 사용하도록 설정하면 됩니다 (새 콘솔을 사용하는 기능, 적절한 사용 권한이 자동으로 할당됩니다). 그런 다음 X-Ray 서비스 맵을 사용하여 람다 함수, EC2 인스턴스, ECS 컨테이너 등을 통해 요청이 어떻게 전달되는지 확인하시기 바랍니다. 원하는 서비스와 리소스를 확인하고, 필요 시 확대하여 자세한 정보를 검토 하고, 문제를 해결할 수 있습니다.

람다 함수를 호출 할 때마다 X-Ray 맵에 두 개 이상의 노드가 생성됩니다.

 

  • Lambda Service -이 노드는 Lambda 자체에서 보낸 시간을 나타냅니다.
  • 사용자 함수 -이 노드는 람다 기능의 실행 시간을 나타냅니다.
  • 다운 스트림 서비스 호출 -이 노드는 람다 기능이 다른 서비스에 대해 수행하는 모든 호출을 나타냅니다.

좀 더 자세한 것은 Using X-Ray with Lambda를 참고하시기 바랍니다.

정식 출시
오늘 정식 출시 하지만, X-Ray 서비스 비용 과금은 2017년 5월 1일 부터 시작됩니다.  가격은 추적 갯수와 분석 갯수를 기반으로합니다 (각 추적 기능은 애플리케이션의 요청임). 매월 무료로 10만개를 저장하고, 백만 개까지 검색할 수 있습니다. 이 이상의 경우, 백만 건 저장할 때 마다 5 달러를 지불하고, 검색을 위해서는 $ 0.50을 지불합니다. 좀 더 자세한 것은 AWS X-Ray 가격 페이지 를 참고하시기 바랍니다.

오늘 부터 여러분의 애플리케이션 성능 추적에 활용해 보시기 바랍니다.

Jeff;

이 글은 AWS X-Ray Update – General Availability, Including Lambda Integration의 한국어 번역입니다.

AWS CodeBuild – 완전 관리형 빌드 서비스 출시

모든 개발자는 소스 코드 변경이 일어날 때, 지속적인 통합 빌드(build) 생성 및 테스트를 실행하기 위해 공유 빌드 서버를 설정하고 운영 해야합니다. 유지 관리에 대한 부담으로 인해 다수 개발자들이 로컬 컴퓨터에서만 빌드를 만들어, 정식 서버에서 실행함으로서 한 명의 개발자에게는 동작하는데 다른 개발자에게는 동작하지 않는 상황을 초래합니다. 많은 개발 팀은 지속적 통합(Continuous Integration, CI) 및 배포 (Continuous Deployment, CD) 파이프 라인의 일부를 사용할 수 있습니다. 이러한 빌드팜의 설치 및 유지 보수 비용은 여전히 높으며 전혀 다른 운영 기술이 필요합니다. 사용률이 100%에 도달하고 빌드 요청 백 로그가 증가하는 경우를 제외하고는 가볍게 사용합니다.

AWS CodeBuild 서비스 소개
오늘 이러한 문제를 해결 해줄 AWS CodeBuild를 출시합니다. 빌드 서버를 설치, 설정 및 확장 및 패치 등에 신경쓰지 않고, CodeBuild를 활용하여 개발 과정에서 유연상을 보장하고 여러 형태의 빌드 상태나 호환성의 불일치 문제를 해결할 수 있습니다.

CodeBuild를 사용 하면, 사전에 빌드 서버를 프로비저닝 할 필요가 없으며, 대기중인 빌드를 쌓아 두는 대신에 빌드 볼륨을 활용할 수 있도록 자동으로 확장됩니다. 분당 $0.005부터 시작하는 가격으로 분당 기준으로 빌드 리소스에 비용을 지불하기 때문에 사용한 시간만 비용을 지불합니다.

CodeBuild는 완전 관리형 빌드 서비스로서, 탄력성과 확장 가능하며 사용하기 쉽습니다. 처음 빌드 서비스를 시작하려면 빌드를 수행하는 데 필요한 정보가 들어있는 빌드 프로젝트를 만들기만 하면 됩니다 빌드 프로젝트에 다음 요소가 포함됩니다.

  • 소스 레포지터리 – 소스 코드 위치 (AWS CodeCommit, GitHub 또는 S3 bucket).
  • 빌드 환경 – 언어 및 런타임 환경 (Android, Java, Python, Ruby, Go, Node.js, Docker).
  • IAM 역할 – 다른 AWS 자원으로 부터 CodeBuild  접근 허용.
  • 빌드 스펙 – YAML 양식 빌드 명령어.
  • 컴퓨팅 사양 – 사용할 컴퓨팅 및 메모리 사양  (최대 8vCPU 및 15 GB 메모리).

CodeBuild는 완전히 격리된 신규 콘테이너 기반 환경에서 각 빌드를 수행합니다. 빌드를 시작하면 아래와 같이 진행합니다.

  1. CodeBuild는 빌드 프로젝트에서 지정한 빌드 환경을 기반으로 콘테이너를 시작합니다. Android, Java, Python, Ruby, Go, Node.js 및 Docker (Docker 이미지 작성용)에 대한 맞춤형 발드 환경을 제공합니다. Docker 허브 또는 EC2 Container Registry를 참조할 수 있습니다. 선별된 빌드 환경에는 AWS SDK 및 AWS 명령 줄 인터페이스 (CLI)를 사용할 수 있습니다.
  2. CodeBuild는 빌드 도중 생긴 모든 커맨드 라인을 모아서 AWS 관리 콘솔에서 볼수 있습니다.
  3. CodeBuild는 빌드 프로젝트에 지정된 소스 저장소에서 코드를 가져옵니다.
  4. CodeBuild는 빌드 프로젝트에서 지정한 명령을 실행합니다. 각 명령은 프로젝트 빌드 스펙에서 식별된 설치, 사전 빌드, 빌드 및 빌드 후 단계를 포함 할 수 있습니다.
  5. CodeBuild 생성된 실행 파일 또는 결과물(artfacts)를 S3에 업로드합니다. AWS Key Management Service (KMS) 암호화는 선택 사항입니다.
  6. CodeBuild는 빌드에 사용 된 콘테이너를 삭제합니다.

AWS CodePipeline 빌드 서비스 공급자 중 하나로 CodeBuild를 사용할 수 있습니다. 기존 CI/CD 프로세스를 도입하고 있는 경우, 개발 프로세스를 완전히 자동화 할 수 있습니다. CodeBuild는 S3 및 AWS Identity and Access Management (IAM)와 같은 다른 AWS 서비스를 사용합니다.

선별된 빌드 환경에는 AWS CLI 및 AWS SDK가 포함됩니다. 이를 통해 CodePipelineAWS SAM를 사용하여 서버가 필요없는 응용 프로그램을 위한 완전 자동화된 CI/CD 워크 플로우를 만들 수 있습니다. npm 또는 pip 패키지를 만들고 AWS CLI를 사용하여 패키징 및 배포할 수 있습니다.

CodeBuild의 모든 기능은 AWS 관리 콘솔, API 또는 AWS 명령 줄 인터페이스(CLI)를 통해 실행할 수 있습니다.

AWS CodeBuild 사용해 보기
우선 전체 빌드 작업을 다 해 보기 보다는 우선 AWS CodeBuild  스크린샷을 통애 주요 기능에 대해 먼저 알려드리겠습니다.

아래는 빌드 목록 입니다.

하나의 빌드에 대한 상세 정보를 볼 수 있습니다.

빌드 기록도 볼 수 있습니다.

AWS CodeBuildAWS CodePipeline 빌드 서비스 제공자로 사용 가능합니다.

정식 출시
AWS CodeBuild는 정식 출시 되어 오늘부터 사용할 수 있습니다. 현재 리눅스 빌드 지원이 되며 향후 윈도 지원도 추가할 예정입니다.

Jeff;

이 글은 AWS re:Invent 2016 신규 출시 소식으로 AWS CodeBuild – Fully Managed Build Service의 한국어 번역입니다. re:Invent 출시 소식에 대한 자세한 정보는 12월 온라인 세미나를 참고하시기 바랍니다.