Amazon Web Services 한국 블로그

Terraform 오픈 소스 엔진을 기반한 AWS Service Catalog 제품 생성 기능 출시

AWS Service Catalog를 사용하면 AWS에서 사용하도록 승인된 코드 기반 인프라(Infra as Code, IaC) 템플릿 카탈로그를 생성, 제어 및 관리할 수 있습니다. 이러한 IaC 템플릿에는 가상 머신 이미지, 서버, 소프트웨어 및 데이터베이스부터 완전한 멀티티어 애플리케이션 아키텍처까지 모든 것이 포함될 수 있습니다. 개인, 그룹, 부서 또는 비용 센터에 따라 사용 가능한 IaC 템플릿과 버전, 각 버전별로 구성된 항목, 각 템플릿에 액세스할 수 있는 사용자를 제어할 수 있습니다. 그러면 엔지니어, 데이터베이스 관리자 및 데이터 사이언티스트와 같은 최종 사용자는 일상 업무를 수행하는 데 필요한 승인된 AWS 리소스를 신속하게 검색하고 셀프 서비스 프로비저닝할 수 있습니다.

Service Catalog를 사용할 때 첫 번째 단계는 IaC 템플릿을 기반으로 제품을 만드는 것입니다. 그런 다음 구성 정보와 함께 제품을 포트폴리오에 수집할 수 있습니다.

오늘부터 AWS CloudFormation 또는 Hashicorp Terraform을 사용하여 Service Catalog 제품 및 해당 리소스를 정의하고 프로세스와 전문 지식에 더 잘 적합한 도구를 선택할 수 있습니다. 이제 기존 Terraform 구성을 Service Catalog에 통합하여 중앙에서 승인한 제품 포트폴리오에 포함시키고 최종 사용자가 사용하는 AWS 계정과 공유할 수 있습니다. 이러한 방식으로 불일치를 방지하고 규정 미준수의 위험을 완화할 수 있습니다.

Service Catalog를 통해 리소스를 배포하면 프로비저닝 중에 최소 권한 액세스를 유지하고 배포된 리소스의 태그 지정을 관리할 수 있습니다. Service Catalog의 최종 사용자는 액세스할 수 있는 제품 및 버전 목록에서 필요한 항목을 선택합니다. 그러면 배포에 사용된 기술(CloudFormation 또는 Terraform)에 관계없이 한 번의 작업으로 제품을 프로비저닝할 수 있습니다.

조직에서 대규모로 관리할 수 있는 Service Catalog 허브-스포크 모델을 이제 Terraform 구성을 포함하도록 확장할 수 있습니다. Service Catalog 허브-스포크 모델을 사용하면 관리 및 사용자 계정 관계를 사용하여 배포를 중앙에서 관리할 수 있습니다.

  • 하나의 관리 계정 – Service Catalog 제품을 생성하고 포트폴리오로 구성하고 사용자 계정과 포트폴리오를 공유하는 데 사용됩니다
  • 여러 개의 사용자 계정(최대 수천 개) – 사용자 계정은 Service Catalog의 최종 사용자가 리소스를 프로비저닝하는 모든 AWS 계정입니다.

이제 실제로 어떻게 작동하는지 알아보겠습니다.

Terraform을 사용하여 AWS Service Catalog 제품 생성
시작하려면 Terraform 오픈 소스 엔진이 AWS Service Catalog와 함께 작동하는 데 필요한 코드와 인프라를 구성하는 Terraform 참조 엔진(AWS on GitHub에서 제공)을 설치합니다. Service Catalog의 관리 계정에서 이 작업을 한 번만 수행하면 되는 데 몇 분 만에 설정할 수 있습니다. 자동 설치 스크립트를 사용합니다.

./deploy-tre.sh -r us-east-1

이 게시물을 간단하게 작성하기 위해 AWS Graviton 프로세서와 Amazon Linux 2023 운영 체제를 사용하여 단일 EC2 인스턴스를 배포하는 제품을 만듭니다. main.tf 파일의 내용은 다음과 같습니다.

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 4.16"
    }
  }

  required_version = ">= 1.2.0"
}

provider "aws" {
  region  = "us-east-1"
}

resource "aws_instance" "app_server" {
  ami           = "ami-00c39f71452c08778"
  instance_type = "t4g.large"

  tags = {
    Name = "GravitonServerWithAmazonLinux2023"
  }
}

Service Catalog의 관리 계정에서 AWS Management Console에 로그인합니다. Service Catalog 콘솔에서 탐색 창의 관리 섹션에 있는 제품 목록을 선택합니다. 여기에서 제품 만들기를 선택합니다.

제품 세부 정보에서 Terraform 오픈 소스제품 유형으로 선택합니다. 제품 이름, 설명 및 소유자 이름을 입력합니다.

콘솔 스크린샷.

버전 세부 정보에서 템플릿 파일 업로드(tar.gz 아카이브 사용)를 선택합니다. 선택적으로 AWS CodeStar 공급자를 통해 S3 URL 또는 외부 코드 리포지토리(GitHub, GitHub 엔터프라이즈 서버 또는 Bitbucket)를 사용하여 템플릿을 지정할 수 있습니다.

콘솔 스크린샷.

지원 세부 정보 및 사용자 지정 태그를 입력합니다. 참고로 태그는 리소스를 분류하고 리소스 생성 권한을 확인하는 데 사용할 수 있습니다. 이것으로 제품 생성을 완료했습니다.

Terraform을 사용하여 포트폴리오에 AWS Service Catalog 제품 추가
이제 Terraform 제품이 준비되었으므로 포트폴리오에 추가합니다. 포트폴리오에는 Terraform과 CloudFormation 제품이 모두 포함될 수 있습니다. 탐색 창의 관리자 섹션에서 포트폴리오를 선택합니다. 거기서 내 포트폴리오를 이름으로 검색해서 엽니다. 포트폴리오에 제품 추가를 선택합니다. Terraform 제품을 이름으로 검색하고 선택합니다.

콘솔 스크린샷.

Terraform 제품에는 시작 제약 조건이 필요합니다. 시작 제약 조건은 제품을 배포하는 데 사용되는 AWS Identity and Access Management(IAM) 역할의 이름을 지정합니다. 제품을 공유하는 모든 계정에서 이 역할이 생성되도록 별도로 확인해야 합니다.

최종 사용자가 제품을 시작, 업데이트 또는 종료할 때 관리 계정의 Terraform 오픈 소스 엔진이 시작 역할을 맡습니다. 시작 역할에는 프로비저닝된 제품의 리소스 그룹을 설명, 생성 및 업데이트하고 제품 리소스에 태그를 지정할 수 있는 권한도 포함됩니다. 이러한 방식으로 Service Catalog는 리소스 그룹을 최신 상태로 유지하고 제품과 관련된 리소스에 태그를 지정합니다.

시작 역할은 최종 사용자의 최소 권한 액세스를 가능하게 합니다. 이 기능을 사용하면 Terraform 오픈 소스 엔진이 시작 역할을 맡아 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스의 승인된 구성과 같은 리소스를 프로비저닝하기 때문에 최종 사용자는 제품의 기본 리소스를 직접 프로비저닝할 권한이 필요하지 않습니다.

이 제품에 대해 이전에 생성한 역할을 사용하려면 시작 제약 조건 섹션에서 역할 이름 입력을 선택합니다.

  • 역할의 신뢰 관계는 역할을 맡을 수 있는 엔터티를 정의합니다. 이 역할의 신뢰 관계에는 Service Catalog와 Terraform 참조 엔진이 포함된 관리 계정이 포함됩니다.
  • 권한의 경우 역할을 통해 제품에 필요한 리소스를 프로비저닝, 업데이트 및 종료하고 해당 리소스의 리소스 그룹 및 태그를 관리할 수 있습니다.

콘솔 스크린샷.

내 포트폴리오에 제품 추가를 완료했습니다. 이제 이 포트폴리오에 액세스할 수 있는 최종 사용자가 제품을 사용할 수 있습니다.

Terraform을 사용한 AWS Service Catalog 제품 출시
최종 사용자는 액세스할 수 있는 제품 및 버전 목록을 확인하고 한 번의 작업으로 배포할 수 있습니다. 이미 Service Catalog를 사용하고 있다면 CloudFormation 제품과 동일한 경험을 할 수 있습니다.

Service Catalog의 사용자 계정으로 AWS Console에 로그인합니다. 이전에 사용한 포트폴리오는 관리 계정에서 이 사용자 계정과 공유되었습니다. Service Catalog 콘솔 탐색 창의 프로비저닝 그룹에서 제품을 선택합니다. 이름을 기준으로 제품을 검색하고 제품 출시를 선택합니다.

콘솔 스크린샷.

Service Catalog가 프로비저닝된 제품의 고유한 이름을 생성하고 배포할 제품 버전을 선택하도록 했습니다. 그런 다음 제품을 실행합니다.

콘솔 스크린샷.

몇 분 후 제품이 배포되어 사용할 수 있습니다. 배포는 Terraform 참조 엔진에 의해 관리되었습니다.

콘솔 스크린샷.

관련 태그 탭에서 Service Catalog가 포트폴리오 및 제품에 대한 정보를 자동으로 추가한 것을 볼 수 있습니다.

콘솔 스크린샷.

리소스 탭에는 프로비저닝된 제품에서 만든 리소스가 표시됩니다. 예상대로 EC2 인스턴스이며 링크를 따라 Amazon EC2 콘솔을 열고 자세한 정보를 얻을 수 있습니다.

콘솔 스크린샷.

엔지니어, 데이터베이스 관리자 및 데이터 사이언티스트와 같은 최종 사용자는 Terraform 또는 CloudFormation을 사용하여 프로비저닝되었는지 고려할 필요 없이 Service Catalog를 계속 사용하고 필요한 제품을 출시할 수 있습니다.

가용성 및 요금
Terraform 오픈 소스 구성에 대한 AWS Service Catalog 지원은 현재 제공되는 모든 AWS 리전에서 사용할 수 있습니다. Terraform을 사용할 때 요금은 변동되지 않습니다. Service Catalog를 사용하면 서비스에 대한 API 호출 요금을 지불하고 프리 티어로 무료로 시작할 수 있습니다. 또한 Terraform 참조 엔진에서 사용하고 만든 리소스에 대한 비용도 지불합니다. 자세한 내용은 Service Catalog 요금을 참조하세요.

Terraform 오픈 소스 구성을 위한 대규모 셀프 서비스 프로비저닝을 활성화합니다.

Danilo