Amazon Web Services 한국 블로그

AWS CloudFormation 업데이트 – CLI 및 타사 리소스 레지스트리 지원

클라우드 자원을 코드로서 관리하게 해주는 AWS CloudFormation은 2011년에 출시되었고, 많은 AWS 고객에게 없어서는 안 될 중요한 도구입니다. AWS 고객들은 한 번 템플릿을 정의한 후 이를 사용하여 AWS 리소스를 안정적으로 프로비저닝할 수 있다는 점을 마음에 들어 합니다. 또한 변경 세트를 자주 사용하고, 이 기능을 바탕으로 변경 세트가 실행될 때 수행되는 작업(추가, 변경 및 삭제)에 인사이트를 제공하기도 합니다.

전에도 언급했듯이, CloudFormation은 일관되고 안정적이며 균일한 모델을 구현하는 데 특히 더 집중합니다. 이러한 점은 종종 간과되기도 하지만 CloudFormation의 매우 중요한 요소이며, 고객들도 높이 평가하는 특성입니다!

고객이 가장 많이 요구하는 몇 가지 요청을 살펴보겠습니다.

성능 – 지난 몇 년 동안 CloudFormation 스택에서 수행되는 많은 작업이 분기당 30%나 커졌습니다! 개발 팀은 끊임없이 노력하며 아키텍처의 개선과 낮은 수준에서의 최적화를 통해 사용량이 빠르게 늘어나는 상황에서도 CloudFormation을 더 빠르고 효율적으로 개선하고 있습니다. 지난 몇 개월 동안 이러한 노력을 통해 CloudFormation과 관련된 소프트 한도 및 하드 한도를 끌어올렸으며, 생성 및 업데이트 작업의 평균 및 최대 지연 시간도 상당히 단축시켰습니다.

적용 범위 – 때로는 CloudFormation 지원 없이도 새로운 서비스와 새로운 기능을 매우 빠른 시간 안에 출시합니다. 우리의 목표는 가능한 한 새로운 서비스와 새로운 기능을 빠르게 지원하는 것이며, 우리는 계속 발전하고 있습니다. 또한 새로운 CloudFormation 적용 범위 로드맵을 개발 프로세스의 기본 입력 소스로 사용하고 있으며, 이미 43개의 문제를 해결했습니다.

확장성 – CloudFormation을 포괄적으로 사용하는 고객은 AWS 이외의 리소스 생성도 자동화하고 싶다고 말합니다. 여기에는 AWS 개발 팀이 생성한 리소스뿐만 아니라, SaaS 애플리케이션, 모니터링 도구 등의 타사 공급업체가 생성한 리소스도 포함됩니다. 고객은 이미 맞춤형 리소스를 활용하고 있지만, 이러한 리소스를 관리하는 보다 강력하면서도 단순한 방법과 더 많은 제어 옵션을 원하고 있습니다.

CloudFormation CLI 및 레지스트리 관리 지원

AWS는 오픈 소스 프로젝트로 CloudFormation CLI를 출시하면서 향상된 확장성과 적용 범위를 원하는 고객의 요청을 해결했습니다. 이 도구를 사용하면 안전하고 체계적인 방식으로 리소스 생성을 자동화하는 리소스 공급자를 정의하고 생성할 수 있습니다. 스키마를 생성하고, 다섯 개의 핵심 작업에 대한 핸들러를 정의하며, 로컬로 테스트한 후 AWS 계정에 연결된 새로운 공급자 레지스트리에 해당 공급자를 게시합니다.

AWS는 선별된 타사 공급업체와도 협력하면서 SaaS 애플리케이션, 모니터링 도구 등에 대한 리소스 공급자를 생성하고 있습니다. 이제 원하는 공급업체로부터 공급자를 확보하고 이를 공급자 레지스트리에 추가할 수 있습니다.

마지막으로 오픈 소스 양식에서 사용할 수 있는 AWS 리소스 공급자 세트를 구성하고 있습니다. 이들을 통해 강력한 공급자를 작성하는 방법을 학습하고, 원하는 경우 네임스페이스에서 이들을 확장할 수도 있습니다.

이제 좀 더 구체적으로 살펴보겠습니다!

CloudFormation CLI
이 도구 세트는 자세한 설명서와 샘플 코드를 포함하여 자체 리소스 공급자를 구축하는 데 필요한 모든 것을 제공합니다. cfn(CloudFormation 명령줄 인터페이스) 명령을 사용하면 프로젝트를 시작하고, 스켈레톤 코드를 생성하며, 공급자를 테스트하고, CloudFormation에 등록할 수 있습니다.

다음은 기본 단계입니다.

모델링 – 리소스의 표준 설명 역할을 하는 스키마를 생성하고 검증합니다.

개발 – 리소스에서 5개의 핵심 작업(생성, 읽기, 업데이트, 삭제 및 나열)을 정의하는 핸들러(현재 Java 및 Go, 이후 다른 언어 포함)를 작성하고 로컬로 테스트합니다.

등록 – CloudFormation 템플릿에서 사용할 수 있도록 CloudFormation에 공급자를 등록합니다.

리소스 모델링
리소스의 스키마는 리소스 공급자 정의 스키마를 준수해야 합니다. 리소스와 해당 속성 및 특성을 정의합니다. 속성은 읽기 전용, 쓰기 전용 및 생성 전용으로 정의할 수 있습니다. 이를 통해 스택에서 작업을 실행할 때 기존 리소스를 수정하기 위해 필요한 정보를 CloudFormation에 제공합니다. 다음은 간단한 정의입니다.

{
  "additionalProperties": false,
  "createOnlyProperties": [
    "/properties/Name"
  ],
  "primaryIdentifier": [
    "/properties/Name"
  ],
  "properties": {
    "Name": {
      "description": "The name of the configuration set.",
      "maxLength": 64,
      "pattern": "^[a-zA-Z0-9_-]{0,64}$",
      "type": "string"
    }
  },
  "typeName": "AWS::SES::ConfigurationSet",
  "description": "A sample resource"
}

개발
핸들러는 오류 처리, 다운스트림 API에 대한 호출 조절, 자격 증명 관리 등을 수행하는 프레임워크를 활용합니다. CloudFormation CLI는 전체 샘플 코드를 포함합니다. 자세한 내용은 Amazon SES Resource Provider 또는 다른 설명서를 참조할 수 있습니다.

자세한 내용은 CloudFormation CLI 설명서의 실습: 리소스 공급자 개발을 참조하십시오.

등록
리소스 공급자를 개발하고 로컬로 테스트한 후에는 이를 CloudFormation에 알려야 합니다. CloudFormation CLI를 사용하여 원하는 AWS 리전에 패키지(스키마 및 컴파일된 핸들러)를 제출합니다. 승인 프로세스를 비동기화합니다. 이 작업을 완료하면 CloudFormation 템플릿에서 새 리소스 유형을 사용할 수 있습니다.

Cloudformation 레지스트리
CloudFormation 레지스트리는 리소스 공급자에 대한 계정 및 리전당 스토리지를 제공합니다. CloudFormation 콘솔에서 액세스할 수 있습니다.

기본 AWS 리소스를 보려면 [Public]을 선택하고(AWS::*::*), 직접 생성한 리소스와 타사로부터 확보한 리소스를 보려면 [Private]을 선택합니다.

또한 RegisterType, DeregisterType, ListTypes, ListTypeRegistrations, ListTypeVersionsDescribeType 함수를 사용하여 프로그래밍 방식으로 레지스트리에 액세스할 수도 있습니다.

타사 지원
앞서 언급한 대로, 출시 전부터 선별된 타사 공급업체와 협력하여 리소스 공급자를 생성해왔습니다. 다음은 초기 목록입니다.

  • Atlassian
  • Datadog
  • Densify
  • Dynatrace
  • Fortinet
  • New Relic
  • Spotinst

공급업체의 공급자를 등록한 후에 CloudFormation 템플릿에서 해당하는 리소스 유형을 참조할 수 있습니다. 예를 들어, Datadog::Monitors::Monitor를 사용하여 Datadog 모니터를 생성할 수 있습니다.

타사 공급업체인 경우 자사 제품에 대한 리소스 공급자를 생성하는 데 관심이 있다면, cfn-registry-onboarding@amazon.com으로 이메일을 보내 주십시오.

정식 출시
CloudFormation CLI를 사용하여 모든 퍼블릭 AWS 리전에서 사용하도록 리소스 공급자를 구축할 수 있습니다.

Jeff