

# AWS CloudFormation 언어 서버
<a name="ide-extension"></a>

AWS CloudFormation 언어 서버는 코드형 인프라(IaC) 작성을 가속화하고 AWS 리소스를 안전하고 자신 있게 배포하는 기능을 제공합니다. [언어 서버 프로토콜](https://microsoft.github.io/language-server-protocol/)(LSP)에 따라 가리키기, 자동 완성, 정적 검증을 통한 진단에 대한 설명서를 제공하고 정의 및 코드 작업으로 이동합니다. 이러한 기존 언어 서버 기능 외에도 서버는 CloudFormation을 통해 AWS 리소스를 탐색 및 배포하는 온라인 기능을 추가합니다. 여기에는 변경 세트를 사용하여 템플릿을 검증 및 배포하고, 스택 차이, 이벤트, 리소스 및 출력을 보며, 스택을 나열하고 유형별로 리소스를 찾아보고, 라이브 리소스 상태를 CloudFormation 템플릿에 직접 삽입하는 기능이 포함됩니다.

**Topics**
+ [AWS CloudFormation 언어 서버와 통합되는 IDE](#ide-extension-supported-ides)
+ [시작하기](#ide-extension-getting-started)
+ [IDE에서 CloudFormation 프로젝트 초기화(VS Code만 해당)](#ide-extension-initialize-project)
+ [오픈 소스](#ide-extension-open-source)
+ [도움이 필요하세요?](#ide-extension-need-help)

## AWS CloudFormation 언어 서버와 통합되는 IDE
<a name="ide-extension-supported-ides"></a>

AWS는 다음 IDE용 AWS Toolkit를 통해 CloudFormation Language Server와의 off-the-shelf 통합을 제공합니다.
+ [Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=AmazonWebServices.aws-toolkit-vscode)
+ IntelliJ IDEA, WebStorm 및 PyCharm을 포함한 [JetBrains IDE](https://plugins.jetbrains.com/plugin/11349-aws-toolkit)(버전 2025.3 이상)

다음 IDE도 CloudFormation 언어 서버를 지원합니다.
+ [Kiro](https://kiro.dev/downloads/)
+ [Cursor](https://cursor.com/)
+ 대부분의 VS Code 포크 및 배포

CloudFormation Language Server는 [Language Server Protocol](https://microsoft.github.io/language-server-protocol/)(LSP)을 준수하므로 다른 통합을 구성할 수 있습니다. 언어 서버를 다른 편집기와 통합하는 방법에 대한 지침은 [설치 가이드](https://github.com/aws-cloudformation/cloudformation-languageserver/blob/main/INSTALLATION.md)를 참조하세요.

## 시작하기
<a name="ide-extension-getting-started"></a>

**Topics**
+ [사전 조건](#ide-extension-prerequisites)
+ [1단계: AWS Toolkit 설치 또는 업그레이드](#ide-extension-install-toolkit)
+ [2단계: AWS Toolkit에서 CloudFormation에 액세스](#ide-extension-access-toolkit-panel)
+ [3단계: 템플릿 검증, 테스트 및 세부 조정](#ide-extension-validate-test-refine)
+ [4단계: 템플릿 탐색](#ide-extension-navigate-template)
+ [5단계: 검증 및 배포](#ide-extension-validate-deploy)

### 사전 조건
<a name="ide-extension-prerequisites"></a>

시작하기 전에 다음을 확인하세요.
+ 지원되는 운영 체제(macOS, Windows 또는 Linux)에서 지원되는 IDE를 사용하고 있습니다.
+ IDE에 대한 AWS Toolkit의 최신 버전을 설치했거나 해당 버전으로 업그레이드했습니다.

AWS CloudFormation 언어 서버의 일부 기능에는 활성 AWS 계정 및 구성된 자격 증명이 필요합니다. 유효한 자격 증명을 사용하여 AWS Toolkit를 통해 AWS 계정에 로그인해야 합니다.

### 1단계: AWS Toolkit 설치 또는 업그레이드
<a name="ide-extension-install-toolkit"></a>

IDE의 확장 또는 플러그인 관리자에서 최신 버전의 AWS Toolkit를 설치하거나 업데이트한 다음 IDE를 다시 시작합니다.

설치 후 AWS Toolkit는 CloudFormation IDE 지원을 자동으로 활성화합니다. AWS CloudFormation 언어 서버를 사용하여 AWS Toolkit를 처음 설치하거나 업그레이드할 때 익명 사용 데이터를 수집할 수 있는 AWS에 대한 권한을 부여하라는 메시지가 표시됩니다. 이 데이터는 AWS에서 CloudFormation 언어 서버 및 작성 환경을 개선하는 데 도움이 됩니다. 민감한 정보는 수집되지 않으며 AWS에서는 템플릿 콘텐츠, 리소스 구성 또는 식별 가능한 고객 데이터를 기록하거나 저장하지 않습니다. IDE 설정에서 언제라도 원격 측정 기본 설정을 변경할 수 있습니다. IDE를 다시 시작하여 변경 사항을 적용합니다. 수집된 사용 데이터는 기능 상호 작용 및 성능 지표에만 중점을 둡니다. 이러한 인사이트를 통해 AWS에서 더 빠른 검증, 개선된 자동 완성, 더 나은 오류 진단과 같은 개선 사항을 식별하고 우선순위를 지정할 수 있습니다.

### 2단계: AWS Toolkit에서 CloudFormation에 액세스
<a name="ide-extension-access-toolkit-panel"></a>

AWS Toolkit를 설치한 후 IDE에서 CloudFormation 패널을 엽니다. VS Code의 활동 표시줄에서 AWS Toolkit 패널을 열고 **CLOUDFORMATION**을 선택합니다. JetBrains IDE의 사이드 바에서 **AWS Toolkit** 도구 창을 열고 **CloudFormation** 탭을 선택합니다.

CloudFormation 패널에는 다음 섹션이 포함되어 있습니다.
+ **리전**: 현재 AWS 리전을 표시합니다. VS Code에서는 리전 이름을 선택하거나 명령 팔레트에서 **AWS CloudFormation: 리전 선택** 명령을 사용하여 변경할 수 있습니다. JetBrains IDE에서 리전은 AWS Toolkit 연결 설정을 통해 구성됩니다.
+ **스택**: 계정에서 CloudFormation 스택의 페이지가 매겨진 목록을 표시합니다. 스택을 확장하여 해당 스택과 연결된 변경 세트를 나열하는 **변경 세트** 노드를 봅니다. 스택 세부 정보 보기 작업을 사용하여 스택 개요, 이벤트, 출력 및 리소스를 표시하는 스택 세부 정보 보기를 엽니다.
+ **리소스**: 리소스 유형을 추가한 후 패널에는 계정에서 해당 유형의 AWS 리소스가 표시됩니다. 보거나 새로 고치거나 복사하거나 템플릿으로 가져올 수 있습니다.

JetBrains IDE에서 트리 위의 도구 모음을 활용하면 **검증 및 배포**, **검증 및 배포 재실행**, **리소스 유형 추가**, **새로 고침** 등의 일반적인 작업에 빠르게 액세스할 수 있습니다. 트리 노드의 오른쪽 클릭 컨텍스트 메뉴를 통해 작업을 사용할 수도 있습니다.

### 3단계: 템플릿 검증, 테스트 및 세부 조정
<a name="ide-extension-validate-test-refine"></a>

CloudFormation 템플릿을 작성할 때 IDE는 정확하고 규정을 준수하는 인프라를 더 빠르게 생성하는 데 도움이 되는 지능형 작성 지원 기능을 제공합니다. CloudFormation 언어 서버는 백그라운드에서 실행되며 다음과 같은 작성 기능을 제공합니다.
+ 코드 완성: CloudFormation 스키마를 기반으로 리소스 유형, 파라미터, 속성을 제안합니다.
+ 기존 AWS 리소스 추가: AWS 계정에서 템플릿으로 기존 리소스를 가져올 수 있습니다. IDE는 [AWS Cloud Control API(CCAPI)](https://docs.aws.amazon.com/cloudcontrolapi/latest/userguide/what-is-cloudcontrolapi.html)를 사용하여 리소스의 라이브 구성 및 속성을 검색하며, 이를 통해 템플릿 내 기존 인프라를 복제하거나 재사용할 수 있습니다.
+ 파라미터로 추출: 커서가 템플릿의 리터럴 값(예: `t2.micro`와 같은 문자열)에 있으면 IDE는 리팩터링 작업을 제공하여 값을 `Parameters` 섹션으로 추출하고 리터럴을 새 파라미터의 `!Ref`로 바꿉니다. 동일한 리터럴 값이 여러 위치에 나타나는 경우 모든 발생을 한 번에 추출하도록 선택할 수 있습니다.

#### 템플릿에 리소스를 추가하는 방법
<a name="ide-extension-add-resources-to-template"></a>
+ **리소스 유형 추가**: AWS Toolkit CloudFormation 패널의 **리소스**에서 찾아볼 리소스 유형을 추가합니다. VS Code에서 **추가 \+** 아이콘을 클릭하거나 명령 팔레트에서 **AWS CloudFormation: 리소스 유형 추가** 명령을 사용합니다. JetBrains의 도구 모음에서 **리소스 유형 추가** 버튼을 클릭하거나 **리소스** 노드를 마우스 오른쪽 버튼으로 클릭합니다.
+ **리소스 유형 검색**: 검색 대화 상자에서 추가할 AWS 리소스 유형을 입력합니다. 예제:
  + `AWS::S3::Bucket`
  + `AWS::Lambda::Function`
+ **리소스 탐색**: **리소스** 섹션 아래에 계정에서 감지된 AWS 리소스의 페이지가 매겨진 목록이 표시됩니다. 리소스가 많은 경우 첫 번째 페이지만 표시됩니다. 탐색 제어를 사용하여 추가 페이지를 이동하면서 확인하고 사용 가능한 모든 리소스를 봅니다.
+ 템플릿에 포함하려는 리소스를 선택합니다.
+ 다음과 같이 목표에 따라 두 가지 방법으로 템플릿에 리소스를 삽입할 수 있습니다.
  + **기존 리소스 복제**: 기존 AWS 리소스의 라이브 구성 및 속성을 사용하여 템플릿에서 새 리소스를 생성합니다.
  + **기존 리소스 가져오기**: 라이브 상태를 사용하여 템플릿에 추가해 스택에 실제 리소스를 삽입합니다.

**팁**
+ 언제든지 **리소스** 섹션을 새로 고쳐 계정 또는 리전에서 사용 가능한 최신 리소스 목록을 볼 수 있습니다.
+ 리소스를 가져오는 경우 동일한 계정의 기존 CloudFormation 스택에 이미 속한 리소스를 추가하지 마세요.
+ 리소스가 CloudFormation에서 이미 관리되고 있는지 확인하려면 리소스 옆에 있는 정보 작업을 사용합니다. VS Code에서 **i** 아이콘을 클릭합니다. JetBrains IDE에서 리소스를 마우스 오른쪽 버튼으로 클릭하고 **스택 관리 정보 가져오기**를 선택합니다.

##### 관련 리소스 추가
<a name="ide-extension-add-related-resources"></a>

VS Code에서 명령 **AWS CloudFormation: 유형별 관련 리소스 추가**를 사용하여 선택한 리소스에 관련 리소스를 추가할 수 있습니다. 템플릿에 이미 정의된 리소스 유형에서 리소스 유형을 선택하면 IDE는 일반적으로 해당 유형에 연결되거나 종속된 리소스 목록을 표시합니다. 예를 들어 `AWS::EC2::Instance`를 선택하면 IDE에서 `AWS::EC2::SecurityGroup` 또는 `AWS::EC2::Subnet`과 같은 관련 리소스 추가를 제안할 수 있습니다. 이 기능을 사용하면 호환되는 리소스 유형을 수동으로 검색하지 않고도 연결된 인프라 구성 요소를 빠르게 빌드할 수 있습니다. 이 기능은 현재 JetBrains IDE에서는 지원되지 않습니다.

#### 정적 검증
<a name="ide-extension-static-validation"></a>

CloudFormation 언어 서버는 [AWS CloudFormation Linter(cfn-lint)](https://github.com/aws-cloudformation/cfn-lint) 및 [AWS CloudFormation Guard](https://docs.aws.amazon.com/cfn-guard/latest/ug/what-is-guard.html)로 구동되는 기본 제공 정적 검증을 제공합니다. 이러한 검증은 템플릿을 작성할 때 백그라운드에서 실행되므로 배포 전에 구문 오류, 규정 준수 격차, 모범 사례 문제를 식별하는 데 도움이 됩니다.

**정적 검증 개요**

IDE에는 다음과 같은 두 가지 유형의 실시간 정적 검증이 표시됩니다.
+ CloudFormation Linter(`cfn-lint`): CloudFormation 리소스 사양 및 스키마 규칙을 기준으로 템플릿을 검증합니다.
+ Guard(`cfn-guard`): 규정 준수 규칙 및 조직 정책 팩을 기준으로 템플릿을 검증합니다.

##### CloudFormation Linter(cfn-lint)
<a name="ide-extension-cfn-linter-details"></a>

CloudFormation Linter는 IDE에 통합되어 입력 시 템플릿 구문 및 구조를 자동으로 확인합니다.
+ **스키마 검증**: 구문 및 스키마 오류를 감지하여 템플릿이 CloudFormation 리소스 스키마를 준수하는지 확인합니다.
+ **오류 강조 표시**: 문제 아래에 인라인 마커를 표시하여 배포 블로커 또는 경고를 나타냅니다.
+ **가리킬 때 도움말 표시**: 오류 위로 마우스를 가져가면 IDE에서 해당 문제와 관련된 진단 메시지를 표시합니다. 빠른 수정을 사용할 수 있는 경우 빠른 수정도 제공됩니다.

##### Guard 통합
<a name="ide-extension-cfn-guard-integration"></a>

Guard는 규정 준수 및 보안 정책을 정의하는 규칙 세트를 기준으로 템플릿을 검증합니다. IDE는 CloudFormation 언어 서버를 통해 실시간으로 Guard 검증을 실행하여 템플릿을 작성하는 동안 즉각적인 피드백을 제공합니다.
+ **기본 규칙 팩**: IDE에는 리소스 보안 및 구성 위생을 위한 기본 모범 사례에 초점을 맞춘 사전 등록된 Guard 규칙 세트가 있습니다. 더 자세히 알아보려면 [Guard 규칙 레지스트리](https://github.com/aws-cloudformation/aws-guard-rules-registry)를 참조하십시오.
+ **규칙 팩 추가**: 규칙 세트를 추가하거나 수정하려면 IDE 설정을 열고, Guard 구성 섹션으로 이동해 추가 Guard 규칙 팩을 선택하거나 업로드합니다.

**팁**: 진단 지표 이해
+ 파란색 표시기: 모범 사례 힌트 또는 최적화 권장 사항.
+ 노란색 표시기: 차단 외 문제(예: 태그 또는 파라미터 누락)에 대한 경고.
+ 빨간색 표시기: 유효하지 않은 속성 이름, 필수 필드 누락 또는 스키마 불일치와 같은 배포 블로커.

### 4단계: 템플릿 탐색
<a name="ide-extension-navigate-template"></a>

IDE는 각 리소스 유형과 논리적 ID를 보여주는 `Parameters`, `Resources`, `Outputs`, `Mappings` 등의 섹션으로 구성된 CloudFormation 템플릿의 구조화된 계층적 보기를 제공합니다. 그러면 대규모 템플릿 내에서 특정 리소스 또는 파라미터를 빠르게 찾고 탐색할 수 있습니다. VS Code에서는 **Explorer** 사이드바의 **개요** 패널에 이 구조가 표시됩니다. JetBrains IDE에서 **구조** 도구 창을 열어 현재 열려 있는 파일의 템플릿 구조를 확인합니다.

`GetAtt` 및 `Ref`와 같은 내장 함수에 대한 **정의로 이동**을 사용하면 템플릿에서 참조된 리소스 또는 파라미터로 직접 이동할 수 있습니다. 이를 통해 종속성을 추적하고, 리소스 관계를 이해하며, 보다 효율적으로 편집할 수 있습니다.

### 5단계: 검증 및 배포
<a name="ide-extension-validate-deploy"></a>

CloudFormation 템플릿을 배포할 준비가 되면 검증 및 배포 기능을 사용하여 변경 세트를 생성합니다. IDE는 템플릿을 검증하며, 차단 오류가 발견되지 않으면 계속해서 [드리프트 인식 변경 세트](drift-aware-change-sets.md)를 생성합니다. 그러면 IDE에 변경 세트를 실행하기 전에 제안된 모든 변경 사항을 검토할 수 있는 diff 보기가 표시됩니다.

VS Code에서 명령 팔레트를 열고 **AWS CloudFormation: 검증 및 배포**를 실행합니다. 명령 팔레트는 템플릿, 스택 이름, 파라미터, 기능 및 기타 배포 옵션을 단계별로 선택하는 방법을 안내합니다. JetBrains IDE에서 **검증 및 배포** 도구 모음 버튼을 사용하거나, 편집기에서 템플릿 파일을 마우스 오른쪽 버튼으로 클릭하거나, 트리에서 스택을 마우스 오른쪽 버튼으로 클릭합니다. JetBrains는 템플릿 선택, 스택 이름, 파라미터, 기능, 태그 및 고급 옵션을 포함한 모든 배포 옵션을 구성하는 마법사 대화 상자를 제공합니다.

#### 검증 작동 방식
<a name="ide-extension-how-validation-works"></a>

IDE는 [배포 전에 검증 검사](validate-stack-deployments.md)를 자동으로 수행하고 다음과 같은 일반적인 장애 원인에 대해 템플릿을 검증합니다.
+ 유효하지 않은 속성 구문 또는 스키마 불일치: 이러한 문제는 일반적으로 작성 중에 `cfn-lint`에서 발견하지만 사용자가 문제를 해결하지 않고 배포를 진행하는 경우 CloudFormation의 배포 시 검증은 스택이 생성되거나 업데이트되기 전에 동일한 오류를 표시합니다.
+ 리소스 이름이 계정의 기존 리소스와 충돌합니다.
+ S3 버킷 이름 충돌 또는 암호화 누락과 같은 서비스별 제약 조건.

검증에서 오류가 감지되면 IDE는 템플릿에서 직접 문제를 강조 표시하고 진단 패널에 오류를 나열합니다. 각 문제에는 실패의 원인이 되는 특정 속성 또는 리소스와 제안된 수정 사항이 포함되어 있습니다. 차단 오류가 없는 경우 배포 단계로 진행할 수 있습니다.

경고(차단 외 문제)가 발견되면 배포를 진행하거나 취소하고 수정할 수 있는 대화 상자가 나타납니다.

IDE는 현재 템플릿과 배포된 스택 구성 간의 차이를 표시하는 [드리프트 인식 변경 세트](drift-aware-change-sets.md)를 엽니다. 이를 통해 실행 전에 변경 세트를 검토, 확인 또는 취소할 수 있습니다. 배포를 취소하면 변경 세트가 삭제됩니다.

드리프트 인식 변경 세트는 스택 드리프트를 안전하게 처리할 수 있도록 함으로써 CloudFormation 배포 프로세스를 개선합니다. 스택 드리프트는 리소스의 실제 상태가 CloudFormation 템플릿에 정의된 상태와 다를 때 발생합니다. 종종 AWS Management Console, CLI 또는 SDK를 통해 수행된 수동 변경으로 인해 발생합니다. CloudFormation의 [드리프트 인식 변경 세트](drift-aware-change-sets.md)가 처리된 스택 구성을 라이브 리소스 상태와 비교하고, IDE에서 이러한 차이를 표시하므로 배포 전에 리소스를 다시 규정 준수 상태로 되돌릴 수 있습니다.

#### 스택 이벤트 보기
<a name="ide-extension-view-stack-events"></a>

배포가 시작되면 CloudFormation 패널에서 진행 상황을 실시간으로 모니터링할 수 있습니다. **스택 이벤트** 아래에서 배포 중에 수행된 작업 목록이 표시됩니다. 각 이벤트에는 다음과 같은 세부 정보가 포함됩니다.
+ **타임스탬프**: 이벤트가 발생한 시간
+ **리소스**: 생성, 업데이트 또는 삭제되는 특정 AWS 리소스
+ **상태**: 작업의 현재 상태(예: `CREATE_IN_PROGRESS`, `UPDATE_COMPLETE` 또는 `ROLLBACK_IN_PROGRESS`)
+ **이유**: 해당하는 경우 추가 컨텍스트 또는 오류 메시지

이 패널에서 스택의 **리소스** 및 **출력**을 볼 수도 있습니다. **스택 이벤트** 보기를 통해 배포 진행 상황을 추적하고, 잠재적 문제를 식별하며, 스택이 성공적으로 완료된 시점을 확인할 수 있습니다.

## IDE에서 CloudFormation 프로젝트 초기화(VS Code만 해당)
<a name="ide-extension-initialize-project"></a>

IDE에서 CloudFormation 프로젝트를 초기화하면 올바른 폴더, 환경 구성 및 AWS 자격 증명으로 구조화된 작업 영역을 설정하여 신뢰할 수 있는 방식으로 템플릿을 검증하고 배포할 수 있습니다. IDE에서 직접 새 CloudFormation 프로젝트를 초기화하여 이 권장 설정을 생성할 수 있습니다. 이 기능은 현재 VS Code에서 사용할 수 있으며, JetBrains IDE에서는 지원되지 않습니다.

**CloudFormation 프로젝트를 초기화하는 방법:**
+ **명령 팔레트 열기**
  + VS Code에서 명령 팔레트(`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에서 직접 검증을 실행하거나 배포를 미리 보거나 여러 환경 사이를 전환할 수 있습니다.

## 오픈 소스
<a name="ide-extension-open-source"></a>

AWS CloudFormation 언어 서버는 Apache-2.0 라이선스에 따라 오픈 소스로 제공되므로 고객에게 템플릿 진단, 스키마 검증 및 정적 분석을 수행하는 방법에 대한 완전한 투명성을 제공합니다. 이를 통해 도구를 채택하기 전에 소스 수준의 가시성이 필요한 고객 측에서 보안 및 규정 준수 마찰이 줄어듭니다.

코드 베이스는 GitHub([https://github.com/aws-cloudformation/cloudformation-languageserver/](https://github.com/aws-cloudformation/cloudformation-languageserver/))에서 공개적으로 사용할 수 있습니다.

## 도움이 필요하세요?
<a name="ide-extension-need-help"></a>

AWS re:Post에서 [CloudFormation 커뮤니티](https://repost.aws/tags/TAm3R3LNU3RfSX9L23YIpo3w)를 이용해 보세요.