Amazon Web Services 한국 블로그

AWS Proton – 템플릿 관리용 Terraform 및 Git 리포지토리 지원

오늘 AWS Proton을 위한 두 가지 새로운 기능의 출시 소식을 발표합니다. 먼저, AWS Proton 개방형 로드맵에서 가장 많은 요청이 있었던 Terraform을 사용하여 인프라를 정의하고 프로비저닝할 수 있는 기능입니다. 둘째, Git 리포지토리에서 직접 AWS Proton 템플릿을 관리할 수 있는 기능입니다.

AWS Proton은 컨테이너 및 서버리스 애플리케이션을 위한 완전관리형 애플리케이션 전송 서비스로, re:Invent 2020 행사를 통해 발표되었습니다. AWS Proton은 인프라 팀이 개발자 생산성에 영향을 미치지 않으면서 인프라를 자동화하고 관리할 수 있도록 지원합니다. 이를 통해 개발자는 플랫폼 팀의 참여 없이도 애플리케이션을 배포하는 데 필요한 템플릿을 얻을 수 있습니다.

AWS Proton을 사용할 때 인프라 팀은 환경 템플릿과 서비스 템플릿을 정의해야 합니다. 템플릿에 대해 자세히 알아보세요.

템플릿 동기화
AWS Proton의 이 새로운 기능을 통해 플랫폼 팀은 Git 리포지토리에서 직접 템플릿을 푸시, 업데이트 및 게시할 수 있습니다. 이제 새 서비스 또는 환경 템플릿을 생성할 때 템플릿이 포함된 원격 Git 리포지토리를 지정할 수 있습니다. AWS Proton은 이러한 템플릿을 자동으로 동기화하여 사용할 수 있도록 합니다. Git 리포지토리에 변경 사항이 있으면 AWS Proton이 업데이트를 처리합니다.

환경 템플릿 생성

리포지토리를 사용하고 템플릿을 동기화하여 얻을 수 있는 한 가지 중요한 이점은 관리자가 템플릿을 업로드, 업데이트 및 등록하는 프로세스를 간소화한다는 것입니다. 이 프로세스를 수동으로 수행하면 오류가 발생하기 쉽고 불편할 수 있습니다. 이제 템플릿 작성 및 업데이트 프로세스를 자동화할 수 있습니다. 또한 풀 요청(Pull request)을 사용하여 더 많은 검증을 추가하고 템플릿의 변경 사항을 추적할 수 있습니다.

템플릿 동기화를 통해 플랫폼 팀과 개발자 간의 협업이 가능합니다. 모든 템플릿을 Git 리포지토리에 보관하면 GitHub와 같은 플랫폼에서 사용 가능한 모든 협업 도구를 모든 사용자가 사용할 수 있습니다. 이제 개발자가 모든 템플릿을 볼 수 있으며, 템플릿을 개선하고 싶을 때는 변경 사항을 적용하여 풀 요청을 생성하기만 하면 됩니다. 또한 버그 추적기 및 기능 요청 등의 도구를 사용하여 템플릿을 관리할 수 있습니다.

리포지토리 링크 구성
템플릿 동기화를 시작하려면 리포지토리에 액세스할 수 있는 권한을 AWS Proton에 부여해야 합니다. 이를 위해서는 AWS Proton과 리포지토리 간의 링크를 생성해야 합니다.

그러려면 먼저 GitHub 계정에 대한 새 소스 연결을 생성합니다. 그런 다음, AWS Proton에서 새 리포지토리 링크를 생성해야 합니다. 사이드바의 리포지토리 옵션으로 이동합니다. 새 리포지토리 연결 화면에서 방금 생성한 GitHub 연결을 사용하고 리포지토리 이름을 지정합니다.

새 링크 리포지토리 생성

AWS Proton에서 Terraform 지원
지금까지는 AWS CloudFormation이 AWS Proton에서 사용할 수 있는 유일한 코드형 인프라(IaC) 엔진이었습니다. 이제 Terraform을 사용하여 정의된 인프라를 기반으로 서비스 및 환경 템플릿을 정의할 수 있으며, 풀 요청 기반 메커니즘을 통해 Terraform을 사용하여 인프라를 프로비저닝하고 최신 상태로 유지할 수 있습니다.

플랫폼 팀은 Terraform 언어인 HCL로 IaC 템플릿을 작성한 다음 Terraform 오픈 소스를 사용하여 인프라를 프로비저닝합니다. AWS Proton은 즉시 프로비저닝할 수 있는 Terraform 모듈을 렌더링하고, 변경 사항을 계획하여 적용할 수 있는 인프라 리포지토리에 풀 요청을 전송합니다.

AWS Proton이 인프라 프로비저닝을 관리하는 서비스가 아니기 때문에 이 작업은 비동기적입니다. 따라서 인프라를 프로비저닝하는 과정에서 AWS Proton에 배포 상태를 알리는 단계를 포함하는 것이 중요합니다.

Terraform을 사용하여 환경을 설정하는 방법의 데모를 보여드리겠습니다. 이를 위해 GitHub Actions를 사용하여 AWS 계정에서 Terraform 인프라를 프로비저닝합니다.

Terraform 템플릿을 시작하려면 먼저 앞에서 설명한 대로 리포지토리 링크를 구성합니다. 그런 다음 새 역할을 생성하여 AWS 계정에서 일부 활동을 수행할 수 있는 권한을 GitHub Actions에 부여해야 합니다. 이 역할에 대한 AWS CloudFormation 템플릿은 여기에서 찾을 수 있습니다.

빈 GitHub 리포지토리를 생성하고 .github/workflows/ 폴더를 생성합니다. terraform.yml이라는 파일을 생성합니다. 이 파일에서 인프라 변경 사항을 계획하고 적용하기 위한 GitHub Actions를 정의해야 합니다. Terraform 예제 파일에서 템플릿을 복사합니다.

이 템플릿은 AWS 자격 증명을 구성하고, Terraform을 구성하고, 전체 인프라를 계획하고, Terraform을 사용하여 인프라에 변경 사항을 적용한 다음, 이 프로세스의 상태를 AWS Proton에 알립니다.

또한 해당 폴더 안에 있는 env_config.json 파일을 수정해야 합니다. 이 파일에 생성하려는 환경에 대한 구성을 추가해야 합니다. JSON 파일에 새 환경을 추가할 수 있습니다. 이 예제에서는 이 환경을 tf-test라고 하겠습니다. 역할은 이전에 생성한 역할이고, 리전은 이 인프라를 배포할 리전입니다. 예제 파일을 살펴보세요.

{
    “tf-test”: {
        “role”: “arn:aws:iam::123456789:role/TerraformGitHubActionsRole”,
        “region”: “us-west-2”
    }
}

이 예제에서는 Terraform 프로젝트를 Amazon S3에 업로드합니다. Terraform 프로젝트 예제를 참조하세요.

이제 AWS Proton에서 새 환경 템플릿을 생성할 차례입니다. 콘솔의 지침을 따를 수 있습니다.

환경 템플릿이 준비되면 방금 생성한 템플릿을 사용하여 새 환경을 생성합니다. 환경을 구성할 때 풀 요청을 통해 프로비저닝을 선택한 다음 올바른 파라미터로 리포지토리를 구성합니다.

새 환경 구성이제 환경 세부 정보에서 배포 상태가 진행 중인 것을 볼 수 있습니다. GitHub Actions가 완료될 때까지 이렇게 표시됩니다.

환경 세부 정보

리포지토리로 가면 새 풀 요청이 보일 것입니다. 풀 요청 이름 옆에 빨간색 십자형 기호, 노란색 점 또는 녹색 확인 표시가 표시됩니다. 이 아이콘은 GitHub Actions의 상태에 따라 다릅니다. 노란색 점이 있으면 빨간색 또는 녹색으로 바뀔 때까지 기다립니다. 오류가 발생하면 GitHub Actions의 로그 내에서 어떤 일이 벌어지고 있는지 확인해야 합니다.

풀 요청에 녹색 확인 표시가 보이면 GitHub 액션이 완료되었고 풀 요청을 병합할 수 있다는 뜻입니다. 풀 요청의 병합이 완료된 후 인프라가 프로비저닝됩니다. 환경 세부 정보 페이지로 돌아갑니다. 잠시 후 인프라가 프로비저닝되면(템플릿에 따라 몇 분 정도 걸릴 수 있음) 배포 상태가 성공인 것을 볼 수 있습니다.

Github 풀 요청

이 데모가 끝나가는 지금까지 AWS Proton을 사용하여 환경 템플릿 및 GitHub Actions를 처리하고, Terraform Open Source를 사용하여 AWS 계정에서 인프라를 프로비저닝하는 방법을 살펴보았습니다.

가용성
Terraform 지원은 공개 평가판 모드에서 사용할 수 있습니다.

이 새로운 기능은 AWS Proton을 사용할 수 있는 미국 동부(오하이오), 미국 동부(버지니아 북부), 미국 서부(오레곤), 아시아 태평양(도쿄) 및 유럽(아일랜드) 리전에서 사용할 수 있습니다.

이러한 기능에 대해 자세히 알아보려면 AWS Proton 서비스 페이지를 참조하세요.

Marcia