AWS CloudFormation 언어 서버
AWS CloudFormation 언어 서버는 코드형 인프라(IaC) 작성을 가속화하고 AWS 리소스를 안전하고 자신 있게 배포하는 기능을 제공합니다. 언어 서버 프로토콜
AWS CloudFormation 언어 서버와 통합되는 IDE
AWS Toolkit 확장 프로그램은 CloudFormation 언어 서버를 통합하여 작성 환경을 개선합니다. 이 통합은 현재 다음을 포함하여 VS Code 기반 IDE에서 지원됩니다.
시작하기
주제
사전 조건
시작하기 전에 다음을 확인하세요.
-
지원되는 운영 체제(macOS, Windows 또는 Linux)에서 VS Code 기반 IDE를 사용하고 있습니다.
-
IDE에 대한 AWS Toolkit
의 최신 버전을 설치했거나 해당 버전으로 업그레이드했습니다.
AWS CloudFormation 언어 서버의 일부 기능에는 활성 AWS 계정 및 구성된 자격 증명이 필요합니다. 유효한 자격 증명을 사용하여 AWS Toolkit를 통해 AWS 계정에 로그인해야 합니다.
1단계: AWS Toolkit 설치 또는 업그레이드
-
IDE의 확장 프로그램 또는 플러그인 관리자를 엽니다.
-
AWS Toolkit을 검색합니다.
-
IDE에 대한 AWS Toolkit 버전 3.85.0 이상을 설치하거나 업데이트합니다.
-
설치 후 IDE를 다시 시작합니다.
참고: 설치 후 AWS Toolkit는 CloudFormation IDE 지원을 자동으로 활성화합니다. AWS CloudFormation 언어 서버 확장 프로그램을 사용하여 AWS Toolkit를 처음 설치하거나 업그레이드할 때 익명 사용 데이터를 수집할 수 있는 AWS에 대한 권한을 부여하라는 메시지가 표시됩니다. 이 데이터는 AWS에서 CloudFormation 언어 서버 및 작성 환경을 개선하는 데 도움이 됩니다. 민감한 정보는 수집되지 않으며 AWS에서는 템플릿 콘텐츠, 리소스 구성 또는 식별 가능한 고객 데이터를 기록하거나 저장하지 않습니다. IDE 설정에서 언제라도 원격 측정 기본 설정을 변경할 수 있습니다. 수집된 사용 데이터는 기능 상호 작용 및 성능 지표에만 중점을 둡니다. 이러한 인사이트를 통해 AWS에서 더 빠른 검증, 개선된 자동 완성, 더 나은 오류 진단과 같은 개선 사항을 식별하고 우선순위를 지정할 수 있습니다.
2단계: AWS Toolkit 패널에서 CloudFormation에 액세스
IDE의 활동 표시줄에서 AWS Toolkit 패널을 엽니다. AWS Toolkit에서 CLOUDFORMATION을 선택합니다.
패널 섹션:
-
리전: 현재 AWS 리전을 표시합니다. 리전 이름을 선택하거나 명령 팔레트에서 AWS CloudFormation: 리전 선택 명령을 사용하여 변경할 수 있습니다.
-
환경: CFN init 도중 선택한 환경(예: 개발, 테스트 또는 프로덕션)을 나타냅니다. 이 값은 환경 선택 단계를 완료한 후에만 나타납니다.
-
스택: 계정에서 CloudFormation 스택의 페이지가 매겨진 목록을 표시합니다.
-
새로 고침 아이콘을 클릭하여 스택 목록을 업데이트합니다.
-
+ 아이콘을 사용하여 새 템플릿을 스택으로 배포합니다.
-
각 스택 항목에는 다음이 포함됩니다.
-
개요: 스택 요약 및 상태 표시
-
스택 ID
-
설명
-
생성 시간 및 업데이트 시간
-
상태 및 상태 이유
-
이벤트, 출력, 리소스
-
-
변경 세트
-
-
리소스: 리소스 유형을 선택한 후 패널에는 계정에서 해당 유형의 AWS 리소스가 표시됩니다. 보거나 새로 고치거나 복사하거나 템플릿으로 가져올 수 있습니다.
3단계: 템플릿 검증, 테스트 및 세부 조정
CloudFormation 템플릿을 작성할 때 IDE는 정확하고 규정을 준수하는 인프라를 더 빠르게 생성하는 데 도움이 되는 지능형 작성 지원 기능을 제공합니다. CloudFormation 언어 서버는 백그라운드에서 실행되며 다음과 같은 작성 기능을 제공합니다.
-
코드 완성: CloudFormation 스키마를 기반으로 리소스 유형, 파라미터, 속성을 제안합니다.
-
기존 AWS 리소스 추가: AWS 계정에서 템플릿으로 기존 리소스를 가져올 수 있습니다. IDE는 AWS Cloud Control API(CCAPI)를 사용하여 리소스의 라이브 구성 및 속성을 검색하며, 이를 통해 템플릿 내 기존 인프라를 복제하거나 재사용할 수 있습니다.
템플릿에 리소스를 추가하는 방법
-
CloudFormation 리소스 패널 확장: AWS Toolkit 사이드 패널에서 CloudFormation을 확장한 다음 리소스에서 추가 + 아이콘을 클릭합니다.
-
리소스 유형 검색: 특정 AWS 리소스 유형을 찾으려면 검색 표시줄에 추가하려는 특정 AWS 리소스 유형을 입력합니다. 예시
-
AWS::S3::Bucket -
AWS::Lambda::Function
명령 팔레트에서 AWS CloudFormation: 리소스 유형 추가를 사용하여 리소스 유형을 선택할 수 있습니다.
-
-
템플릿에 리소스 추가: 리소스 패널 아래에 계정에서 감지된 AWS 리소스의 페이지가 매겨진 목록이 표시됩니다. 리소스가 많은 경우 첫 번째 페이지만 표시됩니다. 패널 하단의 탐색 제어를 사용하여 추가 페이지를 이동하고 사용 가능한 모든 리소스를 봅니다.
-
템플릿에 포함하려는 리소스를 선택합니다.
-
다음과 같이 목표에 따라 두 가지 방법으로 템플릿에 리소스를 삽입할 수 있습니다.
-
기존 리소스 복제: 기존 AWS 리소스의 라이브 구성 및 속성을 사용하여 템플릿에서 새 리소스를 생성합니다.
-
기존 리소스 가져오기: 라이브 상태를 사용하여 템플릿에 추가해 스택에 실제 리소스를 삽입합니다.
-
팁
-
언제든지 리소스 패널을 새로 고쳐 계정 또는 리전에서 사용 가능한 최신 리소스 목록을 볼 수 있습니다.
-
리소스를 가져오는 경우 동일한 계정의 기존 CloudFormation 스택에 이미 속한 리소스를 추가하지 마세요.
-
리소스가 CloudFormation에서 이미 관리되고 있는지 확인하려면 리소스 이름 옆에 있는 i(정보) 아이콘을 클릭합니다.
-
또는 명령 AWS CloudFormation: 스택 관리 정보 가져오기를 사용하여 리소스가 스택에 속하는지 확인할 수 있습니다.
관련 리소스 추가
명령 AWS CloudFormation: 유형별 관련 리소스 추가를 사용하여 선택한 리소스에 관련 리소스를 추가할 수 있습니다. 템플릿에 이미 정의된 리소스 유형에서 리소스 유형을 선택하면 IDE는 일반적으로 해당 유형에 연결되거나 종속된 리소스 목록을 표시합니다. 예를 들어 AWS::EC2::Instance를 선택하면 IDE에서 AWS::EC2::SecurityGroup 또는 AWS::EC2::Subnet과 같은 관련 리소스 추가를 제안할 수 있습니다. 이 기능을 사용하면 호환되는 리소스 유형을 수동으로 검색하지 않고도 연결된 인프라 구성 요소를 빠르게 빌드할 수 있습니다.
정적 검증
CloudFormation IDE는 AWS CloudFormation Linter(cfn-lint)
정적 검증 개요
IDE에는 다음과 같은 두 가지 유형의 실시간 정적 검증이 표시됩니다.
-
CloudFormation Linter(
cfn-lint): CloudFormation 리소스 사양 및 스키마 규칙을 기준으로 템플릿을 검증합니다. -
Guard(
cfn-guard): 규정 준수 규칙 및 조직 정책 팩을 기준으로 템플릿을 검증합니다.
CloudFormation Linter(cfn-lint)
CloudFormation Linter는 IDE에 통합되어 입력 시 템플릿 구문 및 구조를 자동으로 확인합니다.
-
스키마 검증: 구문 및 스키마 오류를 감지하여 템플릿이 CloudFormation 리소스 스키마를 준수하는지 확인합니다.
-
오류 강조 표시: 문제 아래에 빨간색 또는 노란색의 구불구불한 선을 표시하여 배포 블로커 또는 경고를 나타냅니다.
-
가리킬 때 도움말 표시: 오류 위로 마우스를 가져가면 IDE에서 해당 문제와 관련된 진단 메시지를 표시합니다. 빠른 수정이 가능한 경우 마우스 포인터 패널에서도 제공됩니다.
Guard 통합
Guard는 규정 준수 및 보안 정책을 정의하는 규칙 세트를 기준으로 템플릿을 검증합니다. IDE는 CloudFormation 언어 서버를 통해 실시간으로 Guard 검증을 실행하여 템플릿을 작성하는 동안 즉각적인 피드백을 제공합니다.
-
기본 규칙 팩: IDE에는 리소스 보안 및 구성 위생을 위한 기본 모범 사례에 초점을 맞춘 사전 등록된 Guard 규칙 세트가 있습니다. Guard 규칙 레지스트리
에 대한 추가 링크를 알아보는 방법. -
규칙 팩 추가: 규칙 세트를 추가하거나 수정하려면 설정, Guard를 차례로 열고 추가 Guard 규칙 팩을 선택하거나 업로드합니다.
팁: 구불구불한 선 표시 이해
-
파란색의 구불구불한 선: 모범 사례 힌트 또는 최적화 권장 사항.
-
노란색의 구불구불한 선: 차단 외 문제(예: 태그 또는 파라미터 누락)에 대한 경고.
-
빨간색의 구불구불한 선: 유효하지 않은 속성 이름, 필수 필드 누락 또는 스키마 불일치와 같은 배포 블로커.
4단계: 템플릿 탐색
탐색기에서 템플릿 파일을 클릭하면 개요 패널에 CloudFormation 템플릿의 구조화된 계층 보기가 자동으로 표시됩니다. 템플릿을 Parameters, Resources, Outputs, Mappings와 같은 섹션으로 구성하고 각 리소스 유형과 논리적 ID를 표시합니다. 그러면 대규모 템플릿 내에서 특정 리소스 또는 파라미터를 빠르게 찾고 탐색할 수 있습니다.
GetAtt 및 Ref와 같은 내장 함수에 대한 정의로 이동을 사용하면 템플릿에서 참조된 리소스 또는 파라미터로 직접 이동할 수 있습니다. 이를 통해 종속성을 추적하고, 리소스 관계를 이해하며, 보다 효율적으로 편집할 수 있습니다.
5단계: 검증 및 배포
CloudFormation 템플릿을 배포할 준비가 되면 명령 팔레트를 열고 AWS CloudFormation: 검증 및 배포를 실행합니다. 명령은 템플릿을 검증하고 차단 오류가 발견되지 않으면 배포 단계로 진행합니다. 확인 전에 IDE는 드리프트 인식 변경 세트 요약과 차이 보기를 표시하므로 제안된 모든 변경 사항을 검토할 수 있습니다.
검증 작동 방식
IDE는 배포 전에 검증 검사를 자동으로 수행하고 다음과 같은 일반적인 장애 원인에 대해 템플릿을 검증합니다.
-
유효하지 않은 속성 구문 또는 스키마 불일치: 이러한 문제는 일반적으로 작성 중에
cfn-lint에서 발견하지만 사용자가 문제를 해결하지 않고 배포를 진행하는 경우 CloudFormation의 배포 시 검증은 스택이 생성되거나 업데이트되기 전에 동일한 오류를 표시합니다. -
리소스 이름이 계정의 기존 리소스와 충돌합니다.
-
S3 버킷 이름 충돌 또는 암호화 누락과 같은 서비스별 제약 조건.
검증에서 오류가 감지되면 IDE는 빨간색 또는 노란색의 구불구불한 선을 사용하여 템플릿에서 직접 문제를 강조 표시하고 문제 패널에 오류를 나열합니다. 각 문제에는 실패의 원인이 되는 특정 속성 또는 리소스와 제안된 수정 사항이 포함되어 있습니다. 차단 오류가 없는 경우 배포 단계로 진행할 수 있습니다.
경고(차단 외 문제)가 발견되면 배포를 진행하거나 취소하고 수정할 수 있는 대화 상자가 나타납니다.
IDE는 현재 템플릿과 배포된 스택 구성 간의 차이를 표시하는 드리프트 인식 변경 세트를 엽니다. 이를 통해 실행 전에 변경 세트를 검토, 확인 또는 취소할 수 있습니다.
참고: 드리프트 인식 변경 세트는 스택 드리프트를 안전하게 처리할 수 있도록 함으로써 CloudFormation 배포 프로세스를 개선합니다. 스택 드리프트는 리소스의 실제 상태가 CloudFormation 템플릿에 정의된 상태와 다를 때 발생합니다. 종종 AWS Management 콘솔, CLI 또는 SDK를 통해 수행된 수동 변경으로 인해 발생합니다. CloudFormation의 드리프트 인식 변경 세트가 처리된 스택 구성을 라이브 리소스 상태와 비교하고, IDE에서 이러한 차이를 표시하므로 배포 전에 리소스를 다시 규정 준수 상태로 되돌릴 수 있습니다.
스택 이벤트 보기
배포가 시작되면 패널의 CloudFormation 탭으로 이동하여 진행 상황을 실시간으로 모니터링할 수 있습니다. 스택 이벤트 아래에서 배포 중에 수행된 작업 목록이 표시됩니다. 각 이벤트에는 다음과 같은 세부 정보가 포함됩니다.
-
타임스탬프: 이벤트가 발생한 시간
-
리소스: 생성, 업데이트 또는 삭제되는 특정 AWS 리소스
-
상태: 작업의 현재 상태(예:
CREATE_IN_PROGRESS,UPDATE_COMPLETE또는ROLLBACK_IN_PROGRESS) -
이유: 해당하는 경우 추가 컨텍스트 또는 오류 메시지
이 패널에서 스택의 리소스 및 출력을 볼 수도 있습니다. AWS Management 콘솔에서 스택을 열려면 스택 이름 옆에 있는 외부 링크 아이콘을 사용합니다. 스택 이벤트 보기를 통해 배포 진행 상황을 추적하고, 잠재적 문제를 식별하며, 스택이 성공적으로 완료된 시점을 확인할 수 있습니다.
IDE에서 CloudFormation 프로젝트 초기화
IDE에서 CloudFormation 프로젝트를 초기화하면 올바른 폴더, 환경 구성 및 AWS 자격 증명으로 구조화된 작업 영역을 설정하여 신뢰할 수 있는 방식으로 템플릿을 검증하고 배포할 수 있습니다. IDE에서 직접 새 CloudFormation 프로젝트를 초기화하여 이 권장 설정을 생성할 수 있습니다.
CloudFormation 프로젝트를 초기화하는 방법:
-
명령 팔레트 열기
-
IDE에서 명령 팔레트(
Ctrl+Shift+P또는 macOS의Cmd+Shift+P)를 엽니다. -
AWS CloudFormation: CFN Init: 프로젝트 초기화를 선택합니다.
-
-
프로젝트 디렉터리 선택
-
기본적으로 IDE는 현재 작업 디렉터리를 사용합니다.
-
이 경로를 CloudFormation 템플릿을 저장하려는 폴더로 변경할 수 있습니다.
-
-
AWS 자격 증명 프로파일 선택
-
AWS 자격 증명 프로파일을 선택하라는 메시지가 표시됩니다. 선택한 프로파일은 환경 감지, 검증 및 배포에 사용됩니다.
-
-
환경을 설정합니다.
-
환경을 생성하거나 선택하라는 메시지가 표시됩니다.
-
환경에서는 템플릿을 배포하거나 검증할 위치와 방법을 정의합니다(예: 개발, 베타 또는 프로덕션). AWS CloudFormation: CFN Init: 환경 추가를 사용하여 환경을 선택하거나 변경할 수 있습니다.
-
AWS CloudFormation: CFN Init: 환경 제거를 사용하여 선택한 환경을 제거할 수 있습니다.
-
-
(선택 사항) 파라미터 파일 가져오기
-
기존 파라미터 파일이 이미 있는 경우 IDE를 사용하여 초기화 중에 해당 파일을 가져올 수 있습니다.
-
IDE는 호환되는 파일을 자동으로 감지하고 템플릿 검증 및 배포에 사용할 수 있도록 프로젝트에 연결합니다.
-
-
프로젝트 이름 지정 및 마무리
-
beta-environment와 같은 프로젝트 이름을 제공하고 설정을 완료합니다.
-
IDE는 사용자를 대신해 초기 프로젝트 구조 및 구성 파일을 생성합니다.
-
IDE에서 직접 검증을 실행하거나 배포를 미리 보거나 여러 환경 사이를 전환할 수 있습니다.
오픈 소스
AWS CloudFormation 언어 서버는 Apache-2.0 라이선스에 따라 오픈 소스로 제공되므로 고객에게 템플릿 진단, 스키마 검증 및 정적 분석을 수행하는 방법에 대한 완전한 투명성을 제공합니다. 이를 통해 도구를 채택하기 전에 소스 수준의 가시성이 필요한 고객 측에서 보안 및 규정 준수 마찰이 줄어듭니다.
코드 베이스는 GitHub(https://github.com/aws-cloudformation/cloudformation-languageserver/
도움이 필요하세요?
AWS re:Post에서 CloudFormation 커뮤니티