본문으로 건너뛰기
로그인 둘러보기
개발·코딩·데이터베이스 · 윈도우즈 유틸

cfn-teleport

0

cfn-teleport는 AWS CloudFormation 리소스를 스택 간 또는 동일 스택 내에서 이동 및 이름 변경하는 명령줄 도구입니다.

리소스 이동명령줄 도구스택 관리

소개

cfn-teleport는 AWS CloudFormation 리소스를 스택 간 또는 동일 스택 내에서 이동 및 이름 변경하는 명령줄 도구입니다. udondan이 개발했으며, 리소스의 물리적 이동 없이 논리적 ID와 참조를 자동으로 업데이트합니다. 이 도구는 안전하고 원자적인 작업이 가능한 Refactor 모드와 더 많은 리소스 유형을 지원하는 Import 모드를 제공합니다. Windows 사용자는 Chocolatey를 통해 설치할 수 있습니다.

상세정보

프로그램 소개/무엇인지

cfn-teleport는 AWS CloudFormation 리소스를 스택 간 또는 동일 스택 내에서 이동 및 이름 변경하는 명령줄 도구입니다. udondan이 개발했으며, 리소스의 물리적 이동 없이 논리적 ID와 참조를 자동으로 업데이트합니다. 이 도구는 안전하고 원자적인 작업이 가능한 Refactor 모드와 더 많은 리소스 유형을 지원하는 Import 모드를 제공합니다. Windows 사용자는 Chocolatey를 통해 설치할 수 있습니다.

주요 기능

스택 간 리소스 이동

cfn-teleport는 한 CloudFormation 스택에서 다른 스택으로 리소스를 이동할 수 있습니다. 이 과정에서 모든 CloudFormation 참조(Ref, Fn::GetAtt, Fn::Sub, DependsOn 등)가 자동으로 업데이트됩니다.

동일 스택 내 리소스 이름 변경

소스와 대상 스택을 동일하게 지정하면 리소스의 논리적 ID만 변경하면서 모든 참조를 자동으로 업데이트할 수 있습니다. 이 작업은 항상 안전하고 원자적인 Refactor 모드로 실행됩니다.

두 가지 작업 모드

도구는 Refactor 모드(기본값)와 Import 모드를 지원합니다. Refactor 모드는 AWS CloudFormation Stack Refactoring API를 사용해 원자적이고 안전하게 작동하며, Import 모드는 더 많은 리소스 유형을 지원하지만 실패 시 리소스 고아가 발생할 수 있는 레거시 방식입니다.

템플릿 내보내기 (드라이런 모드)

–export 옵션을 사용하면 실제 마이그레이션을 실행하지 않고 템플릿을 디스크에 내보낼 수 있습니다. 이를 통해 변경 사항을 미리 검토하고, 오프라인에서 템플릿을 수정하거나 버전 관리할 수 있습니다.

마이그레이션 스펙 파일 지원

JSON 형식의 마이그레이션 스펙 파일을 만들어 리소스 매핑을 정의하면, 반복적인 마이그레이션 작업을 간편하게 수행할 수 있습니다. 이는 버전 관리와 재사용성을 높여줍니다.

다운로드·설치 방법

Windows 사용자는 Chocolatey 패키지 관리자를 통해 cfn-teleport를 설치할 수 있습니다. 관리자 권한으로 PowerShell을 열고 다음 명령을 실행합니다:

choco install cfn-teleport

이 명령은 최신 버전의 cfn-teleport를 다운로드하고 설치합니다. 설치 후에는 cfn-teleport –help 명령을 통해 사용법을 확인할 수 있습니다.

기본 사용법/명령어

cfn-teleport는 다음과 같은 기본 옵션을 지원합니다:

  • –source, -s: 소스 스택 이름
  • –target, -t: 대상 스택 이름
  • –resource, -r: 이동할 리소스의 논리적 ID (형식: ID 또는 ID:NEW_ID로 이름 변경 가능)
  • –yes, -y: 모든 프롬프트를 자동으로 확인
  • –mode, -m: 작업 모드 (refactor 또는 import, 기본값: refactor)
  • –export: 템플릿을 내보내기만 하고 실행하지 않는 드라이런 모드
  • –out-dir: 내보낸 템플릿을 저장할 디렉토리 경로
  • –migration-spec: JSON 형식의 마이그레이션 스펙 파일 경로
  • –source-template, –target-template: 로컬 템플릿 파일 경로 (AWS에서 가져오지 않고 사용)
  • -h, –help: 도움말 출력
  • -V, –version: 버전 정보 출력

예를 들어, Stack1에서 Stack2로 Bucket21D68F7E8과 Bucket182C536A1 리소스를 이동하려면 다음 명령을 사용합니다:

cfn-teleport –source Stack1 –target Stack2 –resource Bucket21D68F7E8 –resource Bucket182C536A1 –yes

동일 스택에서 리소스 이름을 변경하려면 소스와 대상 스택을 동일하게 지정하고, 리소스 ID에 새 이름을 콜론으로 구분해 지정합니다:

cfn-teleport –source MyStack –target MyStack –resource OldBucketName:NewBucketName –yes

이런 경우에 유용합니다

CloudFormation 스택을 재구성하거나 리소스를 다른 환경으로 이동해야 하는 DevOps 엔지니어에게 유용합니다. 예를 들어, 개발 스택에서 프로덕션 스택으로 테스트용 리소스를 이동하거나, 스택 분할/통합 시 리소스를 안전하게 재배치할 때 이 도구를 사용하면 수작업으로 템플릿을 수정하는 오류를 방지할 수 있습니다. 특히 Refactor 모드는 원자적 작업으로 실패 시 변경 사항이 롤백되어 시스템 일관성을 유지하는 데 도움이 됩니다.

지원 환경·시스템 요구사항

cfn-teleport는 Windows, macOS, Linux에서 실행됩니다. Windows에서는 Chocolatey를 통해 설치할 수 있으며, macOS에서는 Homebrew, Linux에서는 AUR 또는 Cargo를 통해 설치할 수 있습니다. 이 도구는 Rust로 작성되었으며, 실행에는 AWS CLI가 구성되어 있고 적절한 권한이 있어야 합니다. CloudFormation 스택에 접근할 수 있는 AWS 자격 증명이 필요합니다.

최신 버전·업데이트

현재 버전은 0.4.0이며, GitHub 저장소에서 최신 릴리스 정보를 확인할 수 있습니다. 업데이트 내역은 저장소의 릴리스 페이지에서 확인 가능합니다.

제한 사항·확인 사항

Refactor 모드는 AWS::EC2::KeyPair와 같이 태그 업데이트가 리소스 교체를 요구하는 일부 리소스 유형을 지원하지 않습니다. 이 경우 Import 모드를 사용해야 하지만, Import 모드는 실패 시 리소스가 스택 외부에 남아 고아가 될 수 있고, 태그가 업데이트되지 않아 구 스택 이름을 그대로 유지할 수 있습니다. 또한, 파라미터에 의존하는 리소스는 대상 스택에 동일한 파라미터가 있어야만 Refactor 모드로 이동할 수 있습니다.

시스템 요구사항

별도의 시스템 요구사항이 등록되지 않았습니다.