

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon Q Developer와 코드에 대해 채팅
<a name="q-in-IDE-chat"></a>

통합 개발 환경(IDE)의 Amazon Q Developer와 채팅하여에서 빌드하는 방법에 대해 질문 AWS 하고 소프트웨어 개발에 대한 지원을 받으세요. Amazon Q는 코딩 개념 및 코드 조각을 설명하고, 코드 및 유닛 테스트를 생성하고, 디버깅 또는 리팩터링을 포함하여 코드를 개선할 수 있습니다.

**Topics**
+ [IDE에서 Amazon Q 작업](#working-with-q-in-IDE)
+ [예시 작업](#example-tasks)
+ [예시 질문](#example-topics-questions)
+ [Amazon Q의 대답 관련 문제 보고](#report-issues)
+ [Amazon Q Developer로 코드 검토](code-reviews.md)
+ [Amazon Q Developer를 사용하여 IDE에서 코드 트랜스포메이션](transform-in-IDE.md)
+ [Amazon Q Developer로 코드 설명 및 업데이트](explain-update-code.md)
+ [Amazon Q Developer와 인라인 채팅](q-in-IDE-inline-chat.md)
+ [IDE에서 Amazon Q Developer 채팅에 컨텍스트 추가](ide-chat-context.md)
+ [Amazon Q Developer의 채팅 기록 압축](ide-chat-history-compaction.md)
+ [Amazon Q Developer 대화 기록 보기, 삭제 및 내보내기](ide-chat-conversation.md)
+ [Amazon Q Developer와 채팅에서 바로 가기 키 사용](q-in-ides-chat-shortcuts.md)
+ [IDE에서 Amazon Q 채팅용 모델 선택](q-in-ides-chat-models.md)

## IDE에서 Amazon Q 작업
<a name="working-with-q-in-IDE"></a>

### 채팅 사용
<a name="w2aac11c16b7b3"></a>

 Amazon Q와의 채팅을 시작하려면 IDE의 탐색 모음에서 Amazon Q 아이콘을 선택하고 텍스트 표시줄에 질문을 입력합니다. Visual Studio에서 Amazon Q와의 채팅을 시작하려면 기본 메뉴에서 **보기**를 선택한 다음 **Amazon Q 채팅**을 선택합니다.

Amazon Q에 질문하면 Amazon Q는 프로그래밍 언어와 파일 경로를 포함하여 IDE에 열려 있는 현재 파일을 컨텍스트로 사용합니다. 프롬프트에 컨텍스트를 추가하거나 채팅 세션 전체에서 파일, 폴더 또는 전체 워크스페이스를 컨텍스트로 지정할 수 있습니다. 자세한 내용은 [채팅에 컨텍스트 추가](ide-chat-context.md) 단원을 참조하십시오.

Amazon Q의 대답에 코드가 포함된 경우 코드를 복사하거나 **커서에 삽입**을 선택하여 파일에 직접 코드를 삽입할 수 있습니다. Amazon Q는 대답에 해당 소스에 대한 인라인 참조를 포함할 수 있습니다.

Amazon Q는 지정된 세션 내에서 대화의 컨텍스트를 유지하여 향후 대답을 알려줍니다. 세션 기간 동안 후속 질문을 하거나 이전 질문 및 대답을 참조할 수 있습니다. Amazon Q와 새로운 대화를 시작하려면 패널에서 새 탭을 엽니다. 한 번에 최대 10개의 탭을 열 수 있습니다. Amazon Q는 다양한 대화 전반에 걸쳐 컨텍스트를 유지하지 않습니다.

#### 채팅 명령
<a name="chat-commands"></a>

다음 명령은 Amazon Q와의 채팅을 관리하는 데 도움이 됩니다.
+ **/clear** -이 명령을 사용하여 현재 대화를 지웁니다. 채팅 패널에서 이전 대화를 모두 제거하고 Amazon Q가 이전 대화에 대해 가지고 있는 컨텍스트를 지웁니다.
+  **/compact** - 컨텍스트 창이 용량 제한에 가까워지면이 명령을 사용하여 채팅 기록을 압축합니다. 이렇게 하면 필수 정보를 유지하면서 대화에 대한 간결한 요약이 생성됩니다.
+ **/help** -이 명령을 사용하여 Amazon Q가 수행할 수 있는 작업과 수행할 수 없는 작업의 개요, 예제 질문 및 사용 가능한 기능을 확인합니다.

### 에이전트 코딩
<a name="agentic-coding"></a>

에이전트 코딩을 사용하면 Amazon Q가 코딩 파트너 역할을 하여 개발 과정에서 사용자와 채팅합니다. 에이전트 코딩은 IDE에서 기본적으로 켜져 있습니다. 채팅 패널 하단의 `</>` 아이콘을 사용하여 에이전트 코딩을 켜거나 끌 수 있습니다.

Amazon Q에 코드 개선을 요청하면 파일이 직접 업데이트됩니다. diff에서 변경 사항을 보고 이를 실행 취소할 수 있습니다.

Amazon Q가 작업을 생각하거나 작업하는 동안 채팅 패널에 지침을 계속 추가할 수 있으며,이 지침은 작업에 통합됩니다.

Amazon Q와 프로젝트에 대해 논의할 때 쉘 명령에 대한 제안을 제공합니다. 경우에 따라 이러한 명령이 위험이 낮은 것으로 간주되면 자체적으로 실행됩니다.

### 자연어로 채팅
<a name="IDE-natural-language-support"></a>

Amazon Q Developer는 IDE에서 채팅할 때 다국어 지원을 제공합니다. 지원되는 자연어에는 한국어, 표준 중국어, 프랑스어, 독일어, 이탈리아어, 일본어, 스페인어, 힌디어 및 포르투갈어가 포함되며 더 많은 언어를 사용할 수 있습니다. 이 기능을 활용하기 위해 선호하는 자연어를 사용하여 IDE에서 Amazon Q와의 대화를 시작할 수 있습니다. Amazon Q는 언어를 자동으로 감지하고 적절한 언어로 응답을 제공합니다.

## 예시 작업
<a name="example-tasks"></a>

### 코드 기능 개발
<a name="develop-code"></a>

**참고**  
이 기능은이 설명서와 IDE에서 /dev라고 불렸습니다.

Amazon Q는 코드 기능을 개발하고, 프로젝트에 코드를 변경하고, 통합 개발 환경(IDE)의 소프트웨어 개발 작업에 대한 질문에 답변하는 데 도움이 될 수 있습니다. 수행하려는 작업을 설명하면 Amazon Q는 현재 프로젝트 또는 워크스페이스의 컨텍스트를 사용하여 코드베이스에 적용할 수 있는 코드를 생성합니다. Amazon Q는 AWS 프로젝트 또는 자체 애플리케이션을 구축하는 데 도움이 될 수 있습니다.

### 유닛 테스트 생성
<a name="unit-tests"></a>

**참고**  
이 기능은이 설명서와 IDE에서 /test라고 불렸습니다.

Amazon Q는 단위 테스트를 생성할 수 있으므로 소프트웨어 개발 수명 주기 전반에 걸쳐 테스트를 자동화할 수 있습니다. 이 기능은 개발자가 코드 품질을 보장하면서 기능 개발 가속화에 집중할 수 있도록 도와줍니다.

### 설명서 생성
<a name="doc-generation"></a>

**참고**  
이 기능은이 설명서 및 IDE에서 /doc로 지칭되었습니다.

Amazon Q는 코드에 대한 READMEs 및 기타 설명서를 생성하여 코드를 이해하고 설명서를 최신 상태로 유지하는 데 도움이 됩니다. 새 설명서를 생성하고 코드베이스에서 기존 설명서를 업데이트할 수 있습니다.

### 코드 검토
<a name="review-code"></a>

**참고**  
이 기능은이 설명서와 IDE에서 /review라고 불렸습니다.

Amazon Q는 코드베이스에서 보안 취약성 및 코드 품질 문제를 검토하여 개발 주기 전반에 걸쳐 애플리케이션의 태세를 개선할 수 있습니다. 이 기능을 사용하는 방법에 대한 자세한 내용은 섹션을 참조하세요[Amazon Q Developer로 코드 검토](code-reviews.md).

### 코드 트랜스포메이션
<a name="transform-code"></a>

Amazon Q는 자동화된 언어 및 운영 체제(OS) 수준 업그레이드 및 변환을 수행하여 통합 개발 환경(IDEs)에서 코드를 변환할 수 있습니다. 트랜스포메이션할 코드를 제공하면 Amazon Q가 파일을 검토하고 적용할 수 있는 변경 사항을 생성합니다. 자세한 내용은 [코드 트랜스포메이션](transform-in-IDE.md) 단원을 참조하십시오.

## 예시 질문
<a name="example-topics-questions"></a>

IDEs 내에서 Amazon Q는 코드 생성 외에도 AWS 서비스 및 소프트웨어 개발에 대한 질문에 답변할 수 있습니다. Amazon Q는 다음 주제 영역과 관련된 질문에 답변하는 데 특히 유용합니다.
+  AWS 서비스 선택 AWS, 제한 및 모범 사례를 포함한 기반 구축
+ 프로그래밍 언어 구문 및 애플리케이션 개발을 포함한 일반 소프트웨어 개발 개념
+ 코드 설명, 코드 디버깅, 유닛 테스트 작성을 포함한 코드 작성

다음은 IDE에서 Amazon Q를 최대한 활용하기 위해 물어볼 수 있는 몇 가지 예시 질문입니다.
+ AWS에 배포하기 전에 Lambda 함수 관련 문제를 로컬에서 디버깅하려면 어떻게 해야 합니까?
+ 확장 가능한 웹 애플리케이션 백엔드를 위해 AWS Lambda 와 Amazon EC2 중에서 선택하려면 어떻게 해야 합니까?
+ TypeScript에서 변수를 선언하는 구문은 무엇입니까?
+ React에서 앱을 작성하려면 어떻게 해야 합니까?
+ [*선택한 코드 또는 애플리케이션*]의 기능과 작동 방식에 대한 설명을 제공해 주세요.
+ [*선택한 코드 또는 함수*]에 대한 테스트 사례를 생성하세요.

## Amazon Q의 대답 관련 문제 보고
<a name="report-issues"></a>

필요에 따라 좋아요 및 싫어요 아이콘을 사용하여 Amazon Q가 생성하는 모든 대답에 대한 피드백을 남길 수 있습니다. 대답과 관련된 문제를 신고하려면 싫어요 아이콘을 선택하고 나타나는 피드백 창에 정보를 입력합니다.

# Amazon Q Developer로 코드 검토
<a name="code-reviews"></a>

Amazon Q Developer는 코드베이스에서 보안 취약성 및 코드 품질 문제를 검토하여 개발 주기 전체에서 애플리케이션의 태세를 개선할 수 있습니다. 전체 코드베이스를 검토하거나, 로컬 프로젝트 또는 워크스페이스의 모든 파일을 분석하거나, 단일 파일을 검토할 수 있습니다. 코드를 작성할 때 코드를 평가하는 자동 검토를 활성화할 수도 있습니다.

검토는 생성형 AI와 규칙 기반 자동 추론을 기반으로 합니다. 수년 AWS 및 Amazon.com 보안 모범 사례를 기반으로 하는 [Amazon Q 탐지기는](https://docs.aws.amazon.com/codeguru/detector-library) 규칙 기반 보안 및 품질 검토를 강화합니다. 보안 정책이 업데이트되고 탐지기가 추가되면 검토는 코드가 최신 정책을 준수할 수 있도록 새 탐지기를 자동으로 통합합니다.

이 기능에 지원되는 IDE에 대한 자세한 내용은 [지원되는 IDE](q-in-IDE.md#supported-ides-features) 섹션을 참조하세요. 지원되는 언어에 대한 자세한 내용은 [코드 검토에 대한 언어 지원](q-language-ide-support.md#code-reviews-language-support) 섹션을 참조하세요.

**Topics**
+ [작동 방법](#how-code-reviews-work)
+ [코드 문제 유형](#issue-types)
+ [할당량](#quotas)
+ [Amazon Q Developer로 코드 검토 시작](start-review.md)
+ [Amazon Q Developer에서 코드 문제 해결](address-code-issues.md)
+ [코드 문제 필터링](filter-code-issues.md)
+ [Amazon Q Developer 코드 검토의 코드 문제 심각도](code-issue-severity.md)

## 작동 방법
<a name="how-code-reviews-work"></a>

코드 검토 중에 Amazon Q는 코드의 사용자 지정 코드와 타사 라이브러리를 모두 평가합니다. 코드 검토를 시작하기 전에 Amazon Q는 필터링을 적용하여 관련 코드만 검토되도록 합니다. 필터링 프로세스의 일환으로 Amazon Q는 지원되지 않는 언어, 테스트 코드 및 오픈 소스 코드를 제외합니다.

Amazon Q는 최근 코드 변경 사항 또는 전체 파일 또는 프로젝트를 검토할 수 있습니다. 검토를 시작하려면 IDE에서 코드 폴더를 연 다음 Amazon Q에 채팅 패널에서 코드를 검토하도록 요청합니다.

기본적으로 Amazon Q에 코드를 검토하도록 요청하면 IDE의 활성 파일에 있는 코드 변경 사항만 검토됩니다. 코드 변경은 파일의 `git diff` 명령 출력에 따라 결정됩니다. diff 파일이 없는 경우 Amazon Q는 전체 코드 파일을 검토합니다. 열려 있는 파일이 없으면 프로젝트에서 검토할 코드 변경 사항을 검색합니다.

마찬가지로 Amazon Q에 전체 프로젝트 또는 작업 영역을 검토하도록 요청하면 먼저 코드 변경 사항을 검토하려고 시도합니다. diff 파일이 없으면 전체 코드베이스를 검토합니다.

## 코드 문제 유형
<a name="issue-types"></a>

Amazon Q는 다음 유형의 코드 문제에서 코드를 검토합니다.
+ **SAST 스캔 - 소스 코드의 보안 취약성을 감지합니다.** Amazon Q는 리소스 누출, SQL 명령어 삽입 및 사이트 간 스크립팅과 같은 다양한 보안 문제를 식별합니다.
+  **보안 암호 탐지 - 코드에서 민감한 또는 기밀 정보가 노출되지 않도록 방지합니다.** Amazon Q는 코드 및 텍스트 파일에서 하드코딩된 암호, 데이터베이스 연결 문자열 및 사용자 이름과 같은 보안 암호를 검토합니다. 보안 암호 조사 결과에는 보호되지 않은 보안 암호와 보안 암호를 보호하는 방법에 대한 정보가 포함됩니다.
+ **IaC 문제 - 인프라 파일의 보안 태세를 평가합니다.** Amazon Q는 코드형 인프라(IaC) 코드 파일을 검토하여 잘못된 구성, 규정 준수 및 보안 문제를 탐지할 수 있습니다.
+  **코드 품질 문제 - 코드가 품질, 유지 관리 가능성 및 효율성 표준을 충족하는지 확인합니다.** Amazon Q는 성능, 기계 학습 규칙 및 AWS 모범 사례를 포함하되 이에 국한되지 않는 다양한 품질 문제와 관련된 코드 문제를 생성합니다.
+  **코드 배포 위험 - 코드 배포와 관련된 위험을 평가합니다.** Amazon Q는 애플리케이션 성능 및 운영 중단을 포함하여 코드 배포 또는 릴리스에 대한 위험이 있는지 확인합니다.
+  **소프트웨어 구성 분석(SCA) - 타사 코드를 평가합니다.** Amazon Q는 코드에 통합된 타사 구성 요소, 라이브러리, 프레임워크 및 종속성을 검사하여 타사 코드가 안전하고 최신 상태인지 확인합니다.

Amazon Q가 코드를 검토하는 데 사용하는 탐지기의 전체 목록은 [Amazon Q 탐지기 라이브러리](https://docs.aws.amazon.com/codeguru/detector-library/)를 참조하세요.

## 할당량
<a name="quotas"></a>

Amazon Q 보안 스캔은 다음 할당량을 유지합니다.
+ **입력 아티팩트 크기** - 타사 라이브러리, 빌드 JAR 파일 및 임시 파일을 포함한 IDE 프로젝트 작업 영역 내 모든 파일의 최대 크기입니다.
+ **소스 코드 크기** - Amazon Q가 모든 타사 라이브러리 및 지원되지 않는 파일을 필터링한 후 스캔하는 소스 코드의 최대 크기입니다.

다음 표에서는 자동 스캔 및 전체 프로젝트 스캔에 유지 관리되는 할당량을 설명합니다.


| Resource | 자동 검토 | 파일 또는 프로젝트 검토 | 
| --- | --- | --- | 
| 입력 아티팩트 크기 | 200KB | 500MB | 
| 소스 코드 크기 | 200KB | 50MB | 

# Amazon Q Developer로 코드 검토 시작
<a name="start-review"></a>

Amazon Q는 전체 파일 또는 코드베이스를 검토하거나 코드를 작성할 때 코드를 자동으로 검토할 수 있습니다.

시작하기 전에 코드 검토를 지원하는 IDE에 Amazon Q를 설치했는지 확인합니다. 자세한 내용은 [IDE에서 Amazon Q Developer 확장 또는 플러그인 설치](q-in-IDE-setup.md) 단원을 참조하십시오.

**Topics**
+ [파일, 프로젝트 또는 워크스페이스 검토](#project-review)
+ [예제 작업 및 프롬프트](#code-review-prompts)
+ [코딩 시 검토](#auto-scan)

## 파일, 프로젝트 또는 워크스페이스 검토
<a name="project-review"></a>

채팅 패널에서 검토를 시작하여 Amazon Q가 특정 파일 또는 프로젝트를 검토하도록 할 수 있습니다. 파일 및 프로젝트 검토에는 규칙 기반 검토와 생성형 AI 기반 검토가 모두 포함됩니다.

Amazon Q가 검토를 완료한 후 문제를 조사하고 코드 수정을 통해 문제를 해결할 수 있습니다. 자세한 내용은 [코드 문제 해결을 참조하세요](address-code-issues.md).

파일 또는 프로젝트 검토를 시작하려면 IDE에 대해 다음 단계를 완료합니다.

------
#### [ JetBrains ]

1. IDE에서 검토하려는 파일 또는 프로젝트를 엽니다.

1. Amazon Q 아이콘을 선택하여 채팅 패널을 엽니다.

1. 자연어를 사용하여 실행하려는 코드 검토 유형을 설명합니다. 최근 코드 변경 사항 또는 전체 파일만 검토할 수 있습니다. 코드 변경은 파일에 있는 git diff 명령의 출력에 따라 결정됩니다. 해당하는 경우 Amazon Q는 달리 지정하지 않는 한 기본적으로 코드 변경 사항만 검토합니다.

1. IDE에서 코드 프로젝트 또는 파일을 연 상태에서 다음과 같은 항목을 입력할 수 있습니다.

   1. **Review my code changes** - Amazon Q는 코드베이스의 모든 코드 변경 사항을 검토합니다.

   1. **Run a code review on this entire file** - Amazon Q는 변경 사항뿐만 아니라 파일의 모든 코드를 검토합니다.

   1. **Review this repository** - Amazon Q는 변경 사항뿐만 아니라 전체 코드베이스를 검토합니다.

   자세한 코드 검토 시나리오 및 관련 프롬프트는 [프롬프트 예제를 참조하세요](#code-review-prompts).

1. Amazon Q가 파일 또는 프로젝트 검토를 시작합니다. 완료되면 우선순위가 가장 높은 문제와 관찰 결과를 요약합니다.

1. 문제가 감지되면 Amazon Q가 찾은 문제 목록과 함께 **코드** 문제 탭이 열립니다.

1. 코드 문제에 대해 자세히 알아보려면 **코드 문제** 패널로 이동합니다. 여기에서 다음 작업을 수행할 수 있습니다.

   1. 취약성 또는 저품질 코드가 탐지된 파일의 특정 영역으로 리디렉션할 문제를 선택합니다.

   1. 코드 문제에 대한 설명을 보려면 코드 문제의 이름 옆에 있는 돋보기 아이콘을 선택합니다. Amazon Q는 문제에 대한 세부 정보를 제공하고 코드에 삽입할 수 있는 문제 해결 방법을 제안합니다.

   1. 코드 문제를 수정하려면 코드 문제의 이름 옆에 있는 렌치 아이콘을 선택합니다. Amazon Q는 수정 사항에 대한 간략한 설명을 제공한 다음 코드 파일에서 현재 위치 수정 사항을 적용합니다. 파일에 코드 변경 사항이 표시되고 채팅 패널에서 변경 사항을 실행 취소할 수 있습니다.

   1. 자연어를 사용하여 문제에 대해 자세히 질문하거나, 제안된 수정 사항에 대한 설명을 얻거나, 대체 솔루션을 요청할 수도 있습니다.

1. 코드 문제 해결에 대한 자세한 내용은 [Amazon Q Developer에서 코드 문제 해결](address-code-issues.md) 섹션을 참조하세요.

------
#### [ Visual Studio Code ]

1. IDE에서 검토하려는 파일 또는 프로젝트를 엽니다.

1. Amazon Q 아이콘을 선택하여 채팅 패널을 엽니다.

1. 자연어를 사용하여 실행하려는 코드 검토 유형을 설명합니다. 최근 코드 변경 사항 또는 전체 파일만 검토할 수 있습니다. 코드 변경은 파일에 있는 git diff 명령의 출력에 따라 결정됩니다. 해당하는 경우 Amazon Q는 달리 지정하지 않는 한 기본적으로 코드 변경 사항만 검토합니다.

1. IDE에서 코드 프로젝트 또는 파일을 연 상태에서 다음과 같은 항목을 입력할 수 있습니다.

   1. **Review my code changes** - Amazon Q는 코드베이스의 모든 코드 변경 사항을 검토합니다.

   1. **Run a code review on this entire file** - Amazon Q는 변경 사항뿐만 아니라 파일의 모든 코드를 검토합니다.

   1. **Review this repository** - Amazon Q는 변경 사항뿐만 아니라 전체 코드베이스를 검토합니다.

   자세한 코드 검토 시나리오 및 관련 프롬프트는 [프롬프트 예제를 참조하세요](#code-review-prompts).

1. Amazon Q가 파일 또는 프로젝트 검토를 시작합니다. 완료되면 우선순위가 가장 높은 문제와 관찰 결과를 요약합니다.

1. 문제가 감지되면 Amazon Q에서 찾은 문제 목록과 함께 **코드** 문제 탭이 열립니다.

1. 코드 문제에 대해 자세히 알아보려면 **코드 문제** 패널로 이동합니다. 여기에서 다음 작업을 수행할 수 있습니다.

   1. 취약성 또는 저품질 코드가 탐지된 파일의 특정 영역으로 리디렉션할 문제를 선택합니다.

   1. 코드 문제에 대한 설명을 보려면 코드 문제의 이름 옆에 있는 돋보기 아이콘을 선택합니다. Amazon Q는 문제에 대한 세부 정보를 제공하고 코드에 삽입할 수 있는 문제 해결 방법을 제안합니다.

   1. 코드 문제를 수정하려면 코드 문제의 이름 옆에 있는 렌치 아이콘을 선택합니다. Amazon Q는 수정 사항에 대한 간략한 설명을 제공한 다음 코드 파일에서 현재 위치 수정 사항을 적용합니다. 파일에 코드 변경 사항이 표시되고 채팅 패널에서 변경 사항을 실행 취소할 수 있습니다.

   1. 자연어를 사용하여 문제에 대해 자세히 질문하거나, 제안된 수정 사항에 대한 설명을 얻거나, 대체 솔루션을 요청할 수도 있습니다.

1. 코드 문제 해결에 대한 자세한 내용은 [Amazon Q Developer에서 코드 문제 해결](address-code-issues.md) 섹션을 참조하세요.

------
#### [ Visual Studio ]

1. Visual Studio에서 스캔하려는 프로젝트에서 파일을 엽니다.

1. 파일 하단의 Amazon Q 아이콘을 선택하여 Amazon Q 작업 표시줄을 엽니다.

1. 작업 표시줄에서 **보안 스캔 실행**을 선택합니다. Amazon Q가 프로젝트 스캔을 시작합니다.

   다음 이미지의 Visual Studio에서 사용자는 **Amazon Q** 아이콘을 선택하여 사용자가 **보안 스캔 실행**을 선택할 수 있는 작업 표시줄을 표시합니다.  
![\[Amazon Q 작업 표시줄에 '보안 스캔 실행'이 선택 사항으로 표시된 Visual Studio\]](http://docs.aws.amazon.com/ko_kr/amazonq/latest/qdeveloper-ug/images/VS-scans.png)

1. 스캔 상태가 Visual Studio 출력 창에서 업데이트됩니다. 스캔이 완료되면 알림을 받습니다.

   조사 결과를 보고 해결하는 방법에 대한 자세한 내용은 [Amazon Q Developer에서 코드 문제 해결](address-code-issues.md) 섹션을 참조하세요.

------

## 예제 작업 및 프롬프트
<a name="code-review-prompts"></a>

코드 검토를 시작할 때 발생할 수 있는 몇 가지 시나리오가 있습니다. 다음은 코드 검토를 시작하는 몇 가지 방법과 Amazon Q에 원하는 검토를 실행하도록 요청하는 방법에 대한 개요입니다.
+ 단일 파일에 대한 코드 변경 사항만 검토하려면: 
  + IDE에서 파일을 열고 **Review my code**
  + **Review the code in <filename>**을(를) 입력합니다.
+ 전체 코드 파일을 검토하려면:
  + 변경 없이 파일 열기 및 입력 **Review my code**
  + 변경 사항이 있는 파일을 열고를 입력합니다. **Review my entire code file** 
  + **Review all the code in <filename>**을(를) 입력합니다.
+ 리포지토리의 모든 코드 변경 사항을 검토하려면:
  + IDE에서 리포지토리를 열고 **Review my code**
+ 변경 사항뿐만 아니라 전체 리포지토리를 검토하려면:
  + IDE에서 리포지토리를 열고를 입력합니다. **Review my repository** 

## 코딩 시 검토
<a name="auto-scan"></a>

**참고**  
Amazon Q 자동 검토는 [Amazon Q Developer Pro 구독](getting-started-q-dev.md)을 통해서만 사용할 수 있습니다.

자동 검토는 [Amazon Q 탐지기](https://docs.aws.amazon.com/codeguru/detector-library/)로 구동되는 규칙 기반 검토입니다. Amazon Q는 현재 코딩 중인 파일을 자동으로 검토하여 코드에서 문제가 탐지되는 즉시 코드 문제를 생성합니다. Amazon Q는 자동 검토를 수행할 때 현재 위치 코드 수정 사항을 생성하지 않습니다.

Amazon Q를 사용할 때 자동 검토가 기본적으로 활성화됩니다. 다음 절차에 따라 자동 검토를 일시 중지하거나 재개합니다.

**자동 검토 일시 중지 및 재개**

자동 검토를 일시 중지하려면 다음 단계를 완료합니다.

1. IDE 창 하단에서 **Amazon Q**를 선택합니다.

   Amazon Q 작업 표시줄이 열립니다.

1. **자동 검토 일시 중지**를 선택합니다. 자동 검토를 재개하려면 **자동 검토 재개**를 선택합니다.

# Amazon Q Developer에서 코드 문제 해결
<a name="address-code-issues"></a>

이 섹션의 주제에서는 코드 문제를 처리 및 해결하는 방법과 해당하는 경우 문제를 무시하는 방법을 설명합니다.

**Topics**
+ [JetBrains 및 Visual Studio Code의 코드 문제 해결](address-issues-jetbrains-visualstudiocode.md)
+ [Visual Studio에서 코드 문제 해결](address-issues-visualstudio.md)

# JetBrains 및 Visual Studio Code의 코드 문제 해결
<a name="address-issues-jetbrains-visualstudiocode"></a>

JetBrains 및 Visual Studio Code에서 코드 문제를 해결하기 위해 현재 위치 수정 사항을 생성하거나 코드를 수동으로 업데이트하는 데 사용할 수 있는 설명을 생성할 수 있습니다.

다음과 같은 작업을 수행할 수 있습니다.
+ 현재 위치 코드 수정 사항 생성 
+ 문제 설명 및 새 코드 가져오기
+ 문제 무시 또는 모든 유사한 문제 무시

## 파일에 대한 현재 위치 수정 사항 생성
<a name="generate-fixes"></a>

Amazon Q는 현재 위치의 파일을 업데이트하여 탐지된 코드 문제를 자동으로 수정할 수 있습니다.

파일에서 코드 문제를 자동으로 해결하려면:

------
#### [ JetBrains ]

1. **문제** 도구 창의 **Amazon Q 코드 문제** 탭에서 해결하려는 코드 문제를 선택합니다.

1. 코드 문제에 대한 자세한 정보가 포함된 패널이 열립니다. 해당하는 경우 코드 문제를 식별하는 데 사용된 Amazon Q 감지기에 대한 세부 정보를 볼 수 있습니다.

1. 패널 하단에서 **수정**을 선택합니다.

1. 채팅 패널에서 Amazon Q는 수정 사항에 대한 간략한 설명을 제공한 다음 코드 파일에 현재 위치 수정 사항을 적용합니다.

1. 파일에 코드 변경 사항이 표시되고 채팅 패널에서 변경 사항을 실행 취소할 수 있습니다.

------
#### [ Visual Studio Code ]

1. **코드 문제** 탭에서 해결하려는 코드 문제를 선택합니다.

1. 렌치 아이콘을 선택합니다.

   다음 이미지는 Visual Studio Code의 코드 문제에 대한 렌치 아이콘을 보여줍니다.  
![\[코드 수정을 생성하는 데 Visual Studio Code사용되는의 코드 문제에 대한 렌치 아이콘입니다.\]](http://docs.aws.amazon.com/ko_kr/amazonq/latest/qdeveloper-ug/images/code-review-fix-vsc.png)

1. 채팅 패널에서 Amazon Q는 수정 사항에 대한 간략한 설명을 제공한 다음 코드 파일에 현재 위치 수정 사항을 적용합니다.

1. 파일에 코드 변경 사항이 표시되고 채팅 패널에서 변경 사항을 실행 취소할 수 있습니다.

------

## 코드 문제 설명 및 새 코드 가져오기
<a name="explain-issue"></a>

Amazon Q는 코드 문제에 대한 심층적인 설명을 제공하고, 파일에 추가할 수 있는 코드와 함께 문제 해결 옵션을 제공할 수 있습니다.

코드 문제에 대한 설명을 보려면:

------
#### [ JetBrains IDEs ]

1. **문제** 도구 창의 **Amazon Q 코드 문제** 탭에서 해결하려는 코드 문제를 선택합니다.

1. 코드 문제에 대한 자세한 정보가 포함된 패널이 열립니다. 해당하는 경우 코드 문제를 식별하는 데 사용된 Amazon Q 감지기에 대한 세부 정보를 볼 수 있습니다.

1. 패널 하단에서 **설명을** 선택합니다.

1. 채팅 패널에서 Amazon Q는 문제에 대한 세부 정보를 제공하고 파일에 삽입할 수 있는 코드와 함께 문제를 해결하는 방법을 제안합니다.

1. 파일을 업데이트하려면 코드를 추가하거나 교체할 위치에 대한 Amazon Q의 지침을 따르고 제공된 코드를 파일의 올바른 위치에 복사합니다. 업데이트된 코드를 추가할 때 취약한 코드를 제거해야 합니다.

------
#### [ Visual Studio Code ]

1. **코드 문제** 탭에서 해결하려는 코드 문제를 선택합니다.

1. 돋보기 아이콘을 선택합니다.

   다음 이미지는 Visual Studio Code의 코드 문제에 대한 돋보기 아이콘을 보여줍니다.  
![\[코드 문제를 설명하는 데 Visual Studio Code사용되는의 코드 문제에 대한 돋보기 아이콘입니다.\]](http://docs.aws.amazon.com/ko_kr/amazonq/latest/qdeveloper-ug/images/code-review-view-details-vsc.png)

1. 채팅 패널에서 Amazon Q는 문제에 대한 세부 정보를 제공하고 파일에 삽입할 수 있는 코드와 함께 문제를 해결하는 방법을 제안합니다.

1. 파일을 업데이트하려면 코드를 추가하거나 교체할 위치에 대한 Amazon Q의 지침을 따르고 제공된 코드를 파일의 올바른 위치에 복사합니다. 업데이트된 코드를 추가할 때 취약한 코드를 제거해야 합니다.

------

## 코드 문제 무시
<a name="ignore-issues"></a>

탐지된 코드 문제를 적용할 수 없는 경우 무시하거나 해당 문제와 모든 유사한 문제(CWE가 동일한 문제)를 무시하도록 선택할 수 있습니다. 이 문제는 코드 문제 탭에서 제거됩니다.

코드 문제 무시 방법:

------
#### [ JetBrains ]

1. **문제** 도구 창의 **Amazon Q 코드 문제** 탭에서 무시할 코드 문제를 선택합니다.

1. 코드 문제에 대한 자세한 정보가 포함된 패널이 열립니다. 패널 하단에서 **무시**를 선택합니다. 코드 문제가 코드 문제 패널에서 제거됩니다.

1. **모두 무시**를 선택하여 동일한 CWE에서이 문제와 다른 코드 문제를 무시할 수도 있습니다.

------
#### [ Visual Studio Code ]

1. **코드 문제** 탭에서 무시할 코드 문제를 선택합니다.

1. 무시 아이콘을 선택합니다.

   다음 이미지는 Visual Studio Code의 코드 문제에 대한 무시 아이콘을 보여줍니다.  
![\[코드 문제를 무시하고 닫는 데 Visual Studio Code사용되는의 코드 문제에 대한 무시 아이콘입니다.\]](http://docs.aws.amazon.com/ko_kr/amazonq/latest/qdeveloper-ug/images/code-review-ignore-issue-vsc.png)

1. 코드 문제가 코드 문제 패널에서 제거됩니다.

1. 유사한 문제를 무시하려면 줄임표 아이콘을 선택한 다음 나타나는 **유사한 문제 무시** 버튼을 선택합니다.

------

# Visual Studio에서 코드 문제 해결
<a name="address-issues-visualstudio"></a>

Visual Studio에서 Amazon Q가 탐지한 코드 문제를 보려면 Visual Studio 기본 메뉴에서 **보기** 제목을 확장하고 **오류 목록**을 선택하여 Visual Studio **오류 목록**을 엽니다.

코드 문제의 정보를 사용하여 코드를 업데이트할 수 있습니다. 코드를 업데이트한 후 코드를 다시 검토하여 문제가 해결되었는지 확인합니다.

기본적으로 Visual Studio **오류 목록**에는 코드 기반에 대한 모든 경고 및 오류가 표시됩니다. Visual Studio **오류 목록**에서 Amazon Q 코드 문제를 필터링하려면 다음 절차를 완료하여 필터를 생성합니다.

**참고**  
코드 문제는 Amazon Q가 문제를 탐지한 코드 검토를 실행한 후에만 표시됩니다.  
코드 문제는 Visual Studio에서 경고로 표시됩니다. **오류 목록**에서 Amazon Q가 탐지한 문제를 보려면** 오류 목록** 제목의 **경고** 옵션을 선택해야 합니다.

**오류 목록에서 코드 문제 필터링**

1. Visual Studio 기본 메뉴에서 보기를 선택한 다음 **오류 목록**을 선택하여 **오류 목록** 창을 엽니다.

1. **오류 목록** 창에서 헤더 행을 마우스 오른쪽 버튼으로 클릭하여 컨텍스트 메뉴를 엽니다.

1. 컨텍스트 메뉴에서 **열 표시**를 확장한 다음 확장된 메뉴에서 **도구**를 선택합니다.

1. **도구** 열이 **오류 목록**에 추가됩니다.

1. **도구** 열 헤더에서 **필터** 아이콘을 선택하고 **Amazon Q**를 선택하여 Amazon Q 코드 문제를 필터링합니다.

# 코드 문제 필터링
<a name="filter-code-issues"></a>

**참고**  
JetBrains IDE 및 Visual Studio Code에서만 코드 문제를 필터링할 수 있습니다.

코드 문제를 필터링하면 선택한 기준을 충족하는 문제만 코드 문제 패널에 표시됩니다. 심각도를 기준으로 문제를 필터링할 수 있으므로 패널에서 선택한 심각도의 문제만 볼 수 있습니다.

코드 문제 패널에서 코드 문제가 구성되는 방법을 제어할 수도 있습니다. 심각도 또는 파일 위치에 따라 문제를 그룹화할 수 있습니다.

코드 문제 필터링 방법:

------
#### [ JetBrains IDEs ]

1. **Amazon Q 코드 문제** 탭에서 필터 아이콘을 선택합니다.

1. 심각도 수준이 있는 팝업 메뉴가 열립니다.

   다음 이미지는의 코드 문제 탭에 있는 심각도 메뉴를 보여줍니다IntelliJ IDEA.  
![\[의 심각도 필터 메뉴입니다IntelliJ IDEA.\]](http://docs.aws.amazon.com/ko_kr/amazonq/latest/qdeveloper-ug/images/jb-filter-issues.png)

1. 필터링하려는 심각도 수준을 선택하거나 선택 취소한 다음 **확인을** 선택합니다. 선택한 심각도의 문제만 **Amazon Q 코드 문제** 패널에 표시됩니다.

------
#### [ Visual Studio Code ]

1. **코드 문제** 패널에서 필터 아이콘을 선택합니다.

   다음 이미지는 Visual Studio Code의 코드 문제 탭에 있는 필터 아이콘을 보여줍니다.  
![\[Visual Studio Code의 코드 문제 탭에 있는 필터 아이콘입니다.\]](http://docs.aws.amazon.com/ko_kr/amazonq/latest/qdeveloper-ug/images/filter-issues-vsc.png)

1. **문제 필터링** 메뉴가 열립니다.

   필터링하려는 심각도 수준 옆의 상자를 선택하거나 선택 취소한 다음 **확인을** 선택합니다. 선택한 심각도의 문제만 **코드 문제** 패널에 표시됩니다.

------

코드 문제를 그룹화하는 방법:

------
#### [ JetBrains IDEs ]

1. **Amazon Q 코드 문제** 패널에서 그룹화 아이콘을 선택합니다.

1. **그룹화 기준** 팝업 메뉴가 열립니다.

1. **심각도**를 선택하여 심각도에 따라 코드 문제 패널에서 문제를 그룹화합니다. **위치를** 선택하여 문제가 있는 코드 파일을 기준으로 문제를 그룹화합니다.

------
#### [ Visual Studio Code ]

1. **코드 문제** 패널에서 그룹화 아이콘을 선택합니다.

   다음 이미지는 Visual Studio Code의 코드 문제 탭에 있는 그룹화 아이콘을 보여줍니다.  
![\[Visual Studio Code의 코드 문제 탭에 있는 그룹화 아이콘입니다.\]](http://docs.aws.amazon.com/ko_kr/amazonq/latest/qdeveloper-ug/images/group-issues-vsc.png)

1. **문제 그룹화** 메뉴가 열립니다.

1. **심각도**를 선택하여 심각도에 따라 코드 문제 패널에서 문제를 그룹화합니다. **위치를** 선택하여 문제가 있는 코드 파일을 기준으로 문제를 그룹화합니다.

------

# Amazon Q Developer 코드 검토의 코드 문제 심각도
<a name="code-issue-severity"></a>

Amazon Q는 코드에서 탐지된 코드 문제의 심각도를 정의하므로 애플리케이션의 보안 태세를 해결하고 추적할 문제의 우선순위를 지정할 수 있습니다. 다음 섹션에서는 코드 문제의 심각도를 결정하는 데 사용되는 방법과 각 심각도 수준이 의미하는 바를 설명합니다.

## 심각도 계산 방법
<a name="severity-calculation"></a>

코드 문제의 심각도는 문제를 생성한 탐지기에 의해 결정됩니다. [Amazon Q 탐지기 라이브러리](https://docs.aws.amazon.com/codeguru/detector-library)의 탐지기에는 각각 [CVSS](https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator)(Common Vulnerability Scoring System)를 사용하여 심각도가 할당됩니다. CVSS는 해당 컨텍스트에서 조사 결과를 악용하는 방법(예: 인터넷을 통해 수행할 수 있거나 물리적 액세스가 필요한 경우)과 얻을 수 있는 액세스 수준을 고려합니다.

다음 표에는 악의적인 행위자가 시스템을 성공적으로 공격하는 데 필요한 액세스 수준과 노력 수준에 따라 심각도를 결정하는 방법이 요약되어 있습니다.


**심각도 결정 매트릭스**  

| 액세스 수준 | 노력 수준 | 심각도 | 
| --- | --- | --- | 
| 시스템 또는 출력의 전체 제어 | 시스템에 액세스해야 함 | 높음 | 
| 시스템 또는 출력의 전체 제어 | 높은 수준의 노력이 필요한 인터넷 | 심각 | 
| 시스템 또는 출력의 전체 제어 | 인터넷을 통해 | 심각 | 
| 민감한 정보에 대한 액세스 | 시스템에 액세스해야 함 | 중간 | 
| 민감한 정보에 대한 액세스 | 높은 수준의 노력이 필요한 인터넷 | 높음 | 
| 민감한 정보에 대한 액세스 | 인터넷을 통해 | 높음 | 
| 시스템 충돌 또는 속도 저하 가능 | 시스템에 액세스해야 함 | 낮음 | 
| 시스템 충돌 또는 속도 저하 가능 | 높은 수준의 노력이 필요한 인터넷 | 중간 | 
| 시스템 충돌 또는 속도 저하 가능 | 인터넷을 통해 | 중간 | 
| 추가 보안 제공 | 악용할 수 없음 | 정보 | 
| 추가 보안 제공 | 시스템에 액세스해야 함 | 정보 | 
| 추가 보안 제공 | 높은 수준의 노력이 필요한 인터넷 | 낮음 | 
| 추가 보안 제공 | 인터넷을 통해 | 낮음 | 
| 모범 사례 | 악용할 수 없음 | 정보 | 

## 심각도 정의
<a name="severity-definitions"></a>

심각도 수준은 다음과 같이 정의됩니다.

 **심각 - 문제 확대를 방지하기 위해 코드 문제를 즉시 해결해야 합니다.**

심각한 코드 문제는 공격자가 적당한 노력으로 시스템을 제어하거나 동작을 수정할 수 있음을 시사합니다. 심각한 조사 결과를 최대한 긴급하게 처리하는 것이 좋습니다. 리소스의 중요도도 고려해야 합니다.

 **높음 - 코드 문제를 단기 우선순위로 해결해야 합니다.**

심각도가 높은 코드 문제는 공격자가 많은 노력으로 시스템을 제어하거나 동작을 수정할 수 있음을 시사합니다. 심각도가 높은 조사 결과를 단기 우선순위로 취급하고 즉각적인 문제 해결 단계를 수행하는 것이 좋습니다. 리소스의 중요도도 고려해야 합니다.

 **중간 - 코드 문제를 중기 우선순위로 해결해야 합니다.**

심각도가 중간인 조사 결과는 시스템의 충돌, 응답 없음 또는 사용 불가로 이어질 수 있습니다. 가급적 빨리 관련 코드를 조사하는 것이 좋습니다. 리소스의 중요도도 고려해야 합니다.

 **낮음 - 코드 문제가 자체 조치를 필요로 하지 않습니다.**

심각도가 낮은 조사 결과는 프로그래밍 오류 또는 안티 패턴을 시사합니다. 심각도가 낮은 조사 결과에 대해 즉각적인 조치를 취할 필요는 없지만, 다른 문제와 연관시킬 때 컨텍스트를 제공할 수 있습니다.

**정보 제공 - 권장 조치가 없습니다.**

정보 제공 조사 결과에는 품질이나 가독성 개선 또는 대체 API 작업에 대한 제안이 포함됩니다. 즉각적인 조치는 필요하지 않습니다.

# Amazon Q Developer를 사용하여 IDE에서 코드 트랜스포메이션
<a name="transform-in-IDE"></a>

Amazon Q Developer는 자동화된 언어 및 운영 체제(OS) 수준 업그레이드 및 변환을 수행하여 통합 개발 환경(IDE)에서 코드를 트랜스포메이션할 수 있습니다. 트랜스포메이션할 코드를 제공하면 Amazon Q가 파일을 검토하고 적용할 수 있는 변경 사항을 생성합니다.

시작하려면 트랜스포메이션을 지원하는 IDE에 Amazon Q를 설치합니다. 그런 다음 Amazon Q에서 수행하려는 트랜스포메이션 유형에 대한 주제를 참조하세요.

트랜스포메이션을 지원하는 IDE와 Amazon Q를 설치하는 방법에 대한 자세한 내용은 [Using Amazon Q Developer in the IDE](q-in-IDE.md) 섹션을 참조하세요.

**Topics**
+ [Amazon Q Developer를 사용하여 Java 애플리케이션 트랜스포메이션](transform-java.md)
+ [Amazon Q Developer를 사용하여 .NET 애플리케이션 트랜스포메이션](transform-dotnet-IDE.md)

# Amazon Q Developer를 사용하여 Java 애플리케이션 트랜스포메이션
<a name="transform-java"></a>

**참고**  
이제 Java 업그레이드에 AWS Transform 사용자 지정을 사용할 수 있습니다. 버전 업그레이드, SDK 마이그레이션 등을 처리하고 실행마다 개선되는 에이전트 AI입니다. [시작](https://docs.aws.amazon.com/transform/latest/userguide/custom-get-started.html)

Amazon Q는 Java 애플리케이션에 대해 다음과 같은 유형의 트랜스포메이션을 지원합니다.
+ Java 언어 및 종속성 버전 업그레이드
+ Oracle에서 PostgreSQL로의 데이터베이스 마이그레이션을 위한 임베디드 SQL 변환

시작하려면 수행하려는 트랜스포메이션 유형에 대한 주제를 참조하세요.

**Topics**
+ [할당량](#quotas-java-transformation-ide)
+ [Amazon Q Developer를 사용하여 Java 버전 업그레이드](code-transformation.md)
+ [Amazon Q Developer를 사용하여 Java 애플리케이션에 임베딩된 SQL 변환](transform-sql.md)
+ [Amazon Q Developer를 사용하여 명령줄에서 코드 트랜스포메이션](transform-CLI.md)
+ [트랜스포메이션 작업 기록 보기](transformation-job-history.md)
+ [Java 트랜스포메이션 문제 해결](troubleshooting-code-transformation.md)

## 할당량
<a name="quotas-java-transformation-ide"></a>

IDE 및 명령줄에서 Amazon Q를 사용한 Java 애플리케이션 트랜스포메이션은 다음 할당량을 유지합니다.
+ **작업당 코드 줄** - Amazon Q가 지정된 트랜스포메이션 작업에서 트랜스포메이션할 수 있는 최대 코드 줄 수입니다.
+ **월별 코드 줄** - Amazon Q가 1개월 동안 트랜스포메이션할 수 있는 최대 코드 줄 수입니다.
+ **동시 작업** - 동시에 실행할 수 있는 최대 트랜스포메이션 작업 수입니다. 이 할당량은 [Visual Studio의 .NET 트랜스포메이션](transform-dotnet-IDE.md)을 포함하여 IDE의 모든 트랜스포메이션에 적용됩니다.
+ **월별 작업** - 한 달에 실행할 수 있는 최대 트랜스포메이션 작업 수입니다.


| Resource | 할당량 | 
| --- | --- | 
| 작업당 코드 줄 | Free 티어: 코드 1,000줄 | 
| 월별 코드 줄 | Free 티어: 코드 2,000줄 | 
| 동시 작업 |  사용자당 작업 1개  AWS 계정당 작업 25개  | 
| 월별 작업 수 |  프로 티어: 작업 1,000개 Free 티어: 작업 100개  | 

# Amazon Q Developer를 사용하여 Java 버전 업그레이드
<a name="code-transformation"></a>

Amazon Q Developer는 통합 개발 환경(IDE)에서 Java 애플리케이션을 최신 언어 버전으로 업그레이드할 수 있습니다. Amazon Q가 코드를 업그레이드하기 위해 수행할 수 있는 변경 사항에는 더 이상 사용되지 않는 코드 구성 요소 및 API 업데이트와 코드의 라이브러리, 프레임워크 및 기타 종속성 업그레이드가 포함됩니다.

코드를 트랜스포메이션하려면, Amazon Q는 먼저 소스 언어 버전에서 코드를 빌드하고 코드를 트랜스포메이션하는 데 필요한 정보가 있는지 확인합니다. Amazon Q가 코드를 성공적으로 트랜스포메이션한 후 IDE의 변경 사항을 확인하고 수락합니다. Amazon Q Developer는 업그레이드된 코드를 대상 JDK와 호환되는 데 필요한 최소한의 변경을 수행하므로 프로젝트의 라이브러리 및 종속성을 업그레이드하려면 추가 트랜스포메이션이 필요합니다. Amazon Q가 코드를 트랜스포메이션하는 방법에 대한 자세한 내용은 [Amazon Q Developer가 Java 언어 업그레이드를 위한 코드를 트랜스포메이션하는 방법](how-CT-works.md) 섹션을 참조하세요.

**Topics**
+ [지원되는 Java 업그레이드 및 IDE](#supported-languages-IDEs)
+ [1단계: 사전 조건](#java-upgrade-prerequisites)
+ [2단계: 프로젝트 구성](#configure-project)
+ [3단계: 종속성 업그레이드 파일 생성(선택 사항)](#create-dependency-upgrade-file)
+ [4단계: 코드 트랜스포메이션](#transform-code-java)
+ [Amazon Q Developer가 Java 언어 업그레이드를 위한 코드를 트랜스포메이션하는 방법](how-CT-works.md)

## 지원되는 Java 업그레이드 및 IDE
<a name="supported-languages-IDEs"></a>

Amazon Q는 현재 트랜스포메이션을 위해 다음과 같은 Java 소스 코드 버전 및 대상 버전을 지원합니다. 코드를 동일한 Java 버전으로 트랜스포메이션하면 소스 코드 버전의 라이브러리 및 기타 종속성 업그레이드가 포함됩니다.


**지원되는 Java 업그레이드**  

| 소스 코드 버전 | 지원되는 대상 버전 | 
| --- | --- | 
| Java 8  | Java 17 및 Java 21 | 
| Java 11 | Java 17 및 Java 21 | 
| Java 17 | Java 17 및 Java 21  | 
| Java 21 |  Java 21   | 

Amazon Q는 다음 IDE에서 Java 업그레이드를 지원합니다.
+ JetBrains IDE의 모듈
+ Visual Studio Code의 프로젝트 및 워크스페이스

## 1단계: 사전 조건
<a name="java-upgrade-prerequisites"></a>

계속하기 전에 [IDE의 Amazon Q 설정](q-in-IDE-setup.md) 단계를 완료했는지 확인하세요.

코드 트랜스포메이션 작업을 시작하기 전에 다음 사전 조건이 충족되는지 확인합니다.
+ 프로젝트는 [지원되는 Java 버전](#supported-languages-IDEs)으로 작성되며 Maven에 구축됩니다.
+ 프로젝트는 IDE에서 Maven을 사용하여 성공적으로 빌드됩니다. 현재 Maven 3.8 이상이 지원됩니다.
+ 프로젝트 소스 JDK는 로컬에서 사용할 수 있으며 소스 코드의 버전입니다. 예를 들어 Java 8 코드를 트랜스포메이션하는 경우 로컬 JDK 설치는 JDK 8이어야 합니다.
+ 프로젝트가 55분 이내에 빌드됩니다.
+ 프로젝트가 올바르게 구성되고 올바른 JDK 버전이 지정됩니다. 자세한 내용은 [2단계: 프로젝트 구성](#configure-project) 단원을 참조하십시오.
+ 프로젝트는 가상 프라이빗 클라우드(VPC) 또는 온프레미스 네트워크를 포함한 프라이빗 네트워크의 리소스에 액세스할 필요가 없습니다. 예를 들어 프로젝트에 네트워크의 데이터베이스에 연결하는 유닛 테스트가 포함된 경우 트랜스포메이션이 실패합니다.
+ 프로젝트는 Java 프로젝트에서 Java 이외의 언어를 패키징하는 플러그인을 사용하지 않습니다. 예를 들어 프로젝트에서 [frontend-maven-plugin](https://github.com/eirslett/frontend-maven-plugin)을 사용하여 Java 소스 코드 외에도 프론트엔드 JavaScript 코드를 실행하는 경우 트랜스포메이션이 실패합니다.
+ 로컬 네트워크는 Amazon Q가 코드를 트랜스포메이션하는 데 사용하는 Amazon S3 버킷에 대한 업로드를 허용합니다. 자세한 내용은 [데이터 경계의 Amazon S3 버킷에 대한 액세스 허용](firewall.md#data-perimeters)을 참조하세요.
+ 애플리케이션은 UTF-8 문자만 사용합니다. 애플리케이션이 non-UTF-8 문자를 사용하는 경우에도 Amazon Q는 코드를 트랜스포메이션하려고 시도합니다.

## 2단계: 프로젝트 구성
<a name="configure-project"></a>

프로젝트를 구성하려면 사용 중인 IDE에 다음 정보를 사용합니다.

### JetBrains에서 프로젝트 구성
<a name="configure-jetbrains"></a>

JetBrains에서 프로젝트를 구성하려면 다음 프로젝트 및 모듈 설정을 지정해야 할 수 있습니다.

모듈이 프로젝트와 동일한 JDK 및 언어 수준을 사용하는 경우 모듈 설정을 업데이트할 필요가 없습니다.
+ 프로젝트 SDK - 프로젝트를 컴파일하는 데 사용되는 JDK입니다.
+ 프로젝트 언어 수준 - 프로젝트에 사용되는 Java 버전입니다.
+ 모듈 SDK - 모듈을 컴파일하는 데 사용되는 JDK입니다.
+ 모듈 언어 수준 - 모듈에 사용되는 Java 버전입니다.
+ Maven Runner JRE - 모듈을 빌드하는 JDK입니다.

**프로젝트 및 모듈 설정 업데이트**

프로젝트 또는 모듈의 SDK 및 언어 수준 설정을 업데이트하려면 다음 단계를 완료하세요.

1. JetBrains IDE에서 **파일**을 선택한 다음 **프로젝트 구조**를 선택합니다.

1. 프로젝트 구조 창이 열립니다. **프로젝트 설정**에서 **프로젝트**를 선택합니다.

   1. 프로젝트 JDK를 업데이트하려면 **SDK** 옆의 드롭다운 목록에서 선택합니다.

   1. 프로젝트 언어를 업데이트하려면 **언어 수준** 옆의 드롭다운에서 선택합니다.

1. **Project Settings**에서 **Modules**를 선택합니다.

   1. 모듈 JDK를 업데이트하려면 **SDK** 옆의 드롭다운 목록에서 선택합니다.

   1. 모듈 언어를 업데이트하려면 **언어 수준** 옆의 드롭다운에서 선택합니다.

자세한 내용은 JetBrains 설명서의 [프로젝트 구조 설정](https://www.jetbrains.com/help/idea/project-settings-and-structure.html) 및 [모듈 구조 설정](https://www.jetbrains.com/help/idea/configure-modules.html)을 참조하세요.

**Maven 설정 업데이트**

Maven Runner JRE를 업데이트하려면 다음 단계를 완료하세요.

1. JetBrains IDE에서 기어 아이콘을 선택한 다음 나타나는 메뉴에서 **설정**을 선택합니다.

1. **설정** 창에서 **빌드, 실행, 배포**를 선택한 다음 **빌드 도구**, **Maven**, **Runner**를 차례로 선택합니다.

1. JRE 필드에서 트랜스포메이션하려는 모듈을 빌드하는 데 사용되는 JDK를 선택합니다.

### VS Code에서 프로젝트 구성
<a name="configure-vsc"></a>

VS Code에서 프로젝트를 구성하려면 프로젝트에 다음이 포함되어야 합니다.
+ 프로젝트 루트 폴더의 `pom.xml` 파일
+ 프로젝트 디렉터리의 `.java` 파일

프로젝트에 Maven 래퍼 실행 파일(macOS용 `mvnw` 또는Windows용 `mvnw.cmd`)이 포함된 경우 프로젝트의 루트에 있는지 확인합니다. Amazon Q는 래퍼를 사용하므로 다른 Maven 구성은 필요하지 않습니다.

Maven 래퍼를 사용하지 않는 경우 Maven을 설치합니다. 자세한 내용은 Apache Maven 설명서에서 [Apache Maven 설치](https://maven.apache.org/install.html)를 참조하세요.

Maven을 설치한 후 `PATH` 변수에 추가합니다. 자세한 내용은 [내 `PATH`에 Maven을 추가하려면 어떻게 해야 합니까?](troubleshooting-code-transformation.md#add-maven-to-path)를 참조하세요. Java `runtime` 변수도 JRE가 아닌 JDK를 가리켜야 합니다. 구성이 올바른지 확인하려면 `mvn -v`를 실행합니다. 출력에는 JDK 경로를 가리키는 Maven 버전과 `runtime` 변수가 표시되어야 합니다.

## 3단계: 종속성 업그레이드 파일 생성(선택 사항)
<a name="create-dependency-upgrade-file"></a>

Amazon Q에 *종속성 업그레이드 파일*을 제공할 수 있습니다. 이 파일은 프로젝트의 종속성과 트랜스포메이션 중 업그레이드할 버전을 나열하는 YAML 파일입니다. 종속성 업그레이드 파일을 제공하여 Amazon Q가 업그레이드할 때 모르는 서드 파티 및 퍼스트 파티 종속성을 지정할 수 있습니다.

퍼스트 파티 종속성은 조직이 유지 관리하고 로컬 또는 조직의 프라이빗 네트워크에서만 사용할 수 있는 라이브러리, 플러그인 및 프레임워크를 나타냅니다. Amazon Q는 로컬 환경에서 빌드를 수행할 때 퍼스트 파티 종속성에 액세스할 수 있습니다. 자세한 내용은 [로컬 환경에서 코드 빌드](how-CT-works.md#java-local-builds) 단원을 참조하십시오. 서드 파티 종속성은 조직에 고유하지 않은 공개적으로 사용 가능한 또는 오픈 소스 종속성입니다.

YAML 파일에서 업그레이드하려는 퍼스트 파티 종속성을 지정할 수 있으며, Amazon Q는 JDK 업그레이드 중에 종속성을 업그레이드합니다(예: Java 8에서 17로). 초기 JDK 업그레이드 후 별도의 트랜스포메이션(17에서 17로 또는 21에서 21로)을 시작하여 서드 파티 종속성을 업그레이드할 수 있습니다.

Amazon Q가 최소 JDK 업그레이드를 수행하면 별도의 트랜스포메이션을 시작하여 모든 서드 파티 종속성을 업그레이드할 수 있습니다. 또는 서드 파티 종속성과 해당 버전을 YAML 파일에 지정하여 라이브러리 업그레이드 트랜스포메이션 중에만 해당 종속성을 업그레이드할 수 있습니다.

Amazon Q는 트랜스포메이션 중에 종속성 업그레이드 파일을 제공하라는 메시지를 표시합니다. 제공하려면 먼저 파일을 올바르게 구성했는지 확인합니다. YAML 파일에는 다음 필드가 필요합니다.
+ name - 종속성 업그레이드 파일의 이름입니다.
+ description(선택 사항) - 종속성 업그레이드 파일 및 트랜스포메이션에 대한 설명입니다.
+ dependencyManagement - 업그레이드할 종속성 및 플러그인 목록을 포함합니다.
+ dependencies - 업그레이드할 라이브러리의 이름과 버전을 포함합니다.
+ plugins - 업그레이드할 플러그인의 이름과 버전을 포함합니다.
+ identifier - 라이브러리, 플러그인 또는 기타 종속성의 이름입니다.
+ targetVersion - 업그레이드할 종속성의 버전입니다.
+ versionProperty(선택 사항) - 정의 중인 종속성의 버전으로, 애플리케이션의 `pom.xml` 파일에 `properties` 태그로 설정됩니다.
+ originType - 종속성이 퍼스트 파티인지 서드 파티인지를 나타내며, FIRST\$1PARTY 또는 THIRD\$1PARTY에 의해 지정됩니다.

다음은 종속성 업그레이드 YAML 파일의 예와 Amazon Q가 구문 분석하는 데 필요한 구성입니다.

```
name: dependency-upgrade
  
description: "Custom dependency version management for Java migration from JDK 8/11/17 to JDK 17/21"
  
  
dependencyManagement:
  
  dependencies:
  
    - identifier: "com.example:library1"
  
      targetVersion: "2.1.0"
  
      versionProperty: "library1.version"  # Optional
  
      originType: "FIRST_PARTY"   
  
    - identifier: "com.example:library2"
  
      targetVersion: "3.0.0"
  
      originType: "THIRD_PARTY"
  
  plugins:
  
    - identifier: "com.example.plugin"
  
      targetVersion: "1.2.0"
  
      versionProperty: "plugin.version"  # Optional
            
      originType: "THIRD_PARTY"
```

## 4단계: 코드 트랜스포메이션
<a name="transform-code-java"></a>

IDE 설정을 테스트하려면 샘플 프로젝트를 다운로드하여 압축을 풀고 IDE에 대해 다음 단계를 완료합니다. 제안된 변경 사항 및 트랜스포메이션 요약을 볼 수 있는 경우 자체 코드 프로젝트를 트랜스포메이션할 준비가 된 것입니다. 트랜스포메이션에 실패하면 IDE가 올바르게 구성되지 않은 것입니다. 구성 문제를 해결하려면 [2단계: 프로젝트 구성](#configure-project) 및 [문제 해결](troubleshooting-code-transformation.md)을 검토합니다.

**참고**  
코드 트랜스포메이션 중에 로컬 시스템을 끄거나 닫거나 절전 모드로 전환하지 마세요. 초기 및 검증 빌드는 안정적인 네트워크 연결이 필요한 클라이언트 측 환경을 사용합니다.

코드 프로젝트 또는 모듈의 언어 버전을 업그레이드하려면 IDE에 대해 다음 단계를 완료합니다.

------
#### [ JetBrains ]

1. JetBrains에서 업그레이드하려는 모듈을 엽니다. IDE에서 프로젝트를 성공적으로 구축했는지 확인합니다.

1. Amazon Q 로고를 선택하고 열리는 채팅 패널에서 애플리케이션을 변환하도록 Amazon Q에 요청합니다.

1. **애플리케이션 트랜스포메이션** 팝업이 나타납니다. 드롭다운 목록에서 업그레이드할 프로젝트를 선택한 다음 **트랜스포메이션**을 선택합니다.

1. Amazon Q는 업그레이드 종속성 파일을 제공하라는 메시지를 표시합니다. 업그레이드할 종속성 및 버전으로 YAML을 구성한 경우 파일을 추가합니다. Amazon Q는 파일을 검증하여 파일이 올바르게 구성되었는지 확인합니다. 오류가 발생하면 [3단계: 종속성 업그레이드 파일 생성(선택 사항)](#create-dependency-upgrade-file)에 설명된 형식과 필수 필드를 검토합니다.

1. Amazon Q가 트랜스포메이션을 시작합니다. **트랜스포메이션 세부 정보** 탭에서 진행 상황을 볼 수 있습니다.

1. 트랜스포메이션이 완료되면 프로젝트를 업데이트하기 전에 업그레이드된 코드를 확인할 수 있습니다. 새 코드를 보려면 **트랜스포메이션 세부 정보** 탭으로 이동한 다음 **diff 보기**를 선택합니다. 표시되는 **패치 적용** 창에서 파일을 선택하여 소스 코드와 업그레이드된 코드가 포함된 diff 보기를 엽니다.

1. Amazon Q의 변경 사항을 수락하려면 **diff 보기**를 선택하여 **패치 적용** 창을 엽니다. 업데이트된 파일을 모두 선택하고 **확인**을 선택하여 프로젝트를 업데이트합니다.

1. 코드가 업그레이드되고 제안된 다음 단계에 대한 세부 정보를 얻으려면 **트랜스포메이션 세부 정보** 탭에서 **트랜스포메이션 요약 보기**를 선택합니다.

------
#### [ Visual Studio Code ]

1. VS Code에서 업그레이드하려는 프로젝트 또는 작업 영역을 엽니다. IDE에서 프로젝트를 성공적으로 구축했는지 확인하세요.

1. Amazon Q 로고를 선택하고 열리는 채팅 패널에서 애플리케이션을 변환하도록 Amazon Q에 요청합니다.

1. IDE 상단의 검색 창에서 업그레이드할 프로젝트를 선택합니다.

1. Amazon Q가 소스 코드의 버전을 찾을 수 없는 경우 코드 버전을 선택하라는 메시지가 표시됩니다. 소스 코드가 기록되는 버전을 선택한 다음 팝업에서 **트랜스포메이션**을 선택하여 계속 진행합니다.

1. 메시지가 표시되면 JDK `JAVA_HOME` 경로를 입력합니다. 자세한 내용은 [VS Code 프로젝트 구성](#configure-vsc)을 참조하세요.

1. Amazon Q는 업그레이드 종속성 파일을 제공하라는 메시지를 표시합니다. 업그레이드할 종속성 및 버전으로 YAML을 구성한 경우 파일을 추가합니다. Amazon Q는 파일을 검증하여 파일이 올바르게 구성되었는지 확인합니다. 오류가 발생하면 [3단계: 종속성 업그레이드 파일 생성(선택 사항)](#create-dependency-upgrade-file)에 설명된 형식과 필수 필드를 검토합니다.

1. Amazon Q가 트랜스포메이션을 시작합니다. **Transformation Hub** 탭에서 진행 상황을 볼 수 있습니다.

1. 트랜스포메이션이 완료되면 **제안된 변경 사항** 탭이 열립니다. 프로젝트를 업데이트하기 전에 업그레이드된 코드를 확인하려면 **제안된 변경 사항 다운로드**를 선택합니다. 파일을 선택하여 소스 코드와 업그레이드된 코드가 포함된 diff 보기를 엽니다.

1. Amazon Q의 변경 사항을 수락하려면 **제안된 변경 사항** 탭으로 이동하여 **수락**을 선택합니다.

1. 코드가 업그레이드되고 제안된 다음 단계에 대한 세부 정보를 얻으려면 **Transformation Hub**에서 **보기 및 추가 작업** 줄임표 버튼을 선택한 다음 **트랜스포메이션 요약 표시**를 선택합니다.

------

# Amazon Q Developer가 Java 언어 업그레이드를 위한 코드를 트랜스포메이션하는 방법
<a name="how-CT-works"></a>

코드를 트랜스포메이션하기 위해 Amazon Q Developer는 프로젝트의 코드 언어 버전을 업그레이드하는 데 사용하는 트랜스포메이션 계획을 생성합니다. 코드를 트랜스포메이션한 후 변경 사항을 수락하기 전에 검토할 수 있도록 트랜스포메이션 요약과 파일 차이를 제공합니다. Amazon Q Developer는 업그레이드된 코드를 대상 JDK와 호환되는 데 필요한 최소한의 변경을 수행하므로 프로젝트의 라이브러리 및 종속성을 업그레이드하려면 추가 트랜스포메이션이 필요합니다. 다음 섹션에서는 Amazon Q가 트랜스포메이션을 수행하는 방법에 대한 자세한 내용을 제공합니다.

## 코드 빌드 및 트랜스포메이션 계획 생성
<a name="build-code-create-plan"></a>

코드 트랜스포메이션을 시작하기 위해 Amazon Q는 로컬에서 프로젝트를 빌드하고 소스 코드, 프로젝트 종속성 및 빌드 로그가 포함된 빌드 아티팩트를 생성합니다.

빌드 아티팩트를 생성한 후 Amazon Q는 보안 빌드 환경에서 코드를 빌드하고 업그레이드하려는 프로젝트 또는 모듈에 맞게 사용자 지정된 트랜스포메이션 계획을 생성합니다. 트랜스포메이션 계획에는 새로운 종속성 버전, 주요 코드 변경 사항, 더 이상 사용되지 않는 코드에 대한 권장 대체를 포함하여 Amazon Q가 시도할 특정 변경 사항이 요약되어 있습니다. 이러한 변경 사항은 코드의 예비 빌드를 기반으로 하며 트랜스포메이션 중에 변경될 수 있습니다.

## 코드 트랜스포메이션
<a name="transform-code"></a>

코드를 트랜스포메이션하기 위해 Amazon Q는 트랜스포메이션 계획의 제안된 변경 사항에 따라 코드를 대상 Java 버전으로 업그레이드하려고 시도합니다. 변경하면 소스 코드의 기존 유닛 테스트를 다시 빌드하고 실행하여 발생한 오류를 반복적으로 수정합니다. JDK 업그레이드는 다음 소스 코드 버전에서 대상 버전으로 수행할 수 있습니다.
+ Java 8\$117
+ Java 8\$121
+ Java 11\$117
+ Java 11\$121
+ Java 17\$121

Amazon Q는 코드를 대상 Java 버전과 호환되는 데 필요한 최소한의 변경 사항을 적용합니다. Amazon Q가 최소 JDK 업그레이드를 수행하면 별도의 트랜스포메이션을 시작하여 모든 서드 파티 종속성을 업그레이드할 수 있습니다. 또는 서드 파티 종속성과 해당 버전을 YAML 파일에 지정하여 라이브러리 업그레이드 트랜스포메이션 중에만 해당 종속성을 업그레이드할 수 있습니다.

Amazon Q는 코드를 업그레이드할 때 다음과 같은 변경을 시도합니다.
+ 대상 Java 버전 권장 사항에 따라 더 이상 사용되지 않는 코드 구성 요소 업데이트
+ 인기 있는 라이브러리 및 프레임워크를 대상 Java 버전과 호환되는 버전으로 업그레이드합니다. 여기에는 다음 라이브러리 및 프레임워크를 사용 가능한 최신 메이저 버전으로 업데이트하는 작업이 포함됩니다.
  + Apache Commons IO 
  + Apache HttpClient 
  + bc-fips 
  + Cucumber-JVM 
  + Hibernate 
  + jackson-annotations 
  + JakartaEE
  + Javax 
  + javax.servlet 
  + jaxb-api 
  + jaxb-impl 
  + jaxen 
  + jcl-over-slf4j 
  + json-simple 
  + jsr305 
  + junit 
  + junit-jupiter-api 
  + Log4j 
  + Micronaut 
  + Mockito 
  + mockito-core 
  + Okio 
  + PowerMockito 
  + Quarkus 
  + slf4j 
  + slf4j-api 
  + Spring Boot 
  + Spring Framework 
  + Spring Security 
  + Swagger 
  + testng 

**참고**  
클라이언트 측 빌드에는 안정적인 네트워크 연결이 필요하므로 코드 트랜스포메이션 중에 로컬 시스템을 끄거나 닫지 마세요.

## 로컬 환경에서 코드 빌드
<a name="java-local-builds"></a>

트랜스포메이션 중에 Amazon Q는 로컬 환경에서 확인 빌드를 수행합니다. Amazon Q는 서버 측 코드를 여러 단계로 트랜스포메이션합니다. 각 단계 후 Amazon Q는 코드를 로컬 환경에 전송하여 변경 사항을 빌드하고 테스트합니다. 그러면 트랜스포메이션을 계속하기 위해 코드가 서버 측으로 다시 전송됩니다.

로컬 환경의 빌드는 Amazon Q가 프라이빗 리소스에 액세스해야 하는 테스트를 실행할 수 있도록 하여 트랜스포메이션된 코드를 확인하는 데 도움이 됩니다. 로컬 환경에서 AI 생성 코드 빌드와 관련된 보안 위험을 최소화하기 위해 Amazon Q는 생성한 코드를 검토하고 업데이트하여 보안 문제를 해결합니다.

## 트랜스포메이션 요약 검토 및 변경 사항 수락
<a name="review-plan-accept-changes"></a>

트랜스포메이션이 완료되면 Amazon Q는 전체 프로젝트가 업그레이드되었는지 여부를 나타내는 최종 빌드의 상태를 포함하여 변경 사항에 대한 세부 정보가 포함된 트랜스포메이션 요약을 제공합니다. 빌드 로그 요약을 보고 Amazon Q가 업그레이드된 버전에서 코드를 빌드하지 못하게 하는 문제를 파악할 수도 있습니다.

트랜스포메이션 요약에는 트랜스포메이션 계획에 제안된 변경 사항과 Amazon Q가 궁극적으로 코드를 업그레이드하기 위해 수행한 변경 사항 간의 차이점과 원래 계획에 없는 추가 변경 사항이 추가로 포함됩니다.

트랜스포메이션 요약을 검토한 후 Amazon Q가 제안하는 변경 사항을 파일 diff 보기에서 볼 수 있습니다. Amazon Q에서 제안하는 모든 코드 변경 사항은 변경 사항을 수락할 때까지 현재 프로젝트 파일에 영향을 미치지 않습니다. 트랜스포메이션된 코드는 트랜스포메이션이 완료된 후 최대 30일까지 사용할 수 있습니다.

## 부분적으로 성공한 트랜스포메이션 완료
<a name="partially-successful-transformations"></a>

코드베이스의 복잡성과 세부 사항에 따라 트랜스포메이션이 부분적으로 성공하는 인스턴스가 있을 수 있습니다. 즉, Amazon Q는 프로젝트의 특정 파일 또는 코드 영역만 트랜스포메이션할 수 있었습니다. 이 경우 프로젝트를 업데이트된 언어 버전으로 빌드하려면 나머지 코드를 수동으로 업데이트해야 합니다.

코드의 나머지 부분을 트랜스포메이션하는 데 도움이 되도록 IDE에서 Amazon Q 채팅을 사용할 수 있습니다. Amazon Q에 부분적으로 업데이트된 파일을 검토하고 컴파일 오류와 같은 문제를 해결하기 위한 새 코드를 제공하도록 요청할 수 있습니다. 특성 [개발](q-in-IDE-chat.md#develop-code) 및 [Workspace 컨텍스트](workspace-context.md)와 같은 기능을 사용하여 더 많은 프로젝트를 컨텍스트로 포함하고 한 번에 여러 파일에 대한 제안을 받을 수도 있습니다.

# Amazon Q Developer를 사용하여 Java 애플리케이션에 임베딩된 SQL 변환
<a name="transform-sql"></a>

IDE의 코드 변환을 위한 Amazon Q Developer 에이전트는 임베디드 SQL을 변환하여 AWS Database Migration Service (AWS DMS)를 사용한 Oracle에서 PostgreSQL로의 데이터베이스 마이그레이션을 완료하는 데 도움이 될 수 있습니다.

AWS DMS는 관계형 데이터베이스, 데이터 웨어하우스, NoSQL 데이터베이스 및 기타 유형의 데이터 스토어를 마이그레이션할 수 있는 클라우드 서비스입니다. DMS의 AWS DMS 스키마 변환은 대상 데이터베이스에 적용할 수 있는 데이터베이스 스키마 및 코드 객체를 변환하는 데 도움이 됩니다. 자세한 내용은 *AWS Database Migration Service 사용 설명서*의 [What is AWS Database Migration Service?](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)를 참조하세요.

 AWS DMS 및 DMS Schema Conversion을 사용하여 데이터베이스를 마이그레이션하는 경우 대상 데이터베이스와 호환되도록 애플리케이션의 임베디드 SQL을 변환해야 할 수 있습니다. 수동으로 변환하는 대신 IDE에서 Amazon Q를 사용하여 변환을 자동화할 수 있습니다. Amazon Q는 DMS 스키마 변환의 메타데이터를 사용하여 애플리케이션에 포함된 SQL을 대상 데이터베이스와 호환되는 버전으로 변환합니다.

현재 Amazon Q는 PostgreSQL로 마이그레이션하는 Oracle 데이터베이스용 Java 애플리케이션의 SQL을 변환할 수 있습니다. 애플리케이션에 Oracle SQL 문이 포함된 경우에만 IDE에서 SQL 코드를 트랜스포메이션하는 옵션이 표시됩니다. 더 많은 정보는 사전 조건을 참조하세요.

## 1단계: 사전 조건
<a name="sql-transform-prereqs"></a>

계속하기 전에 [IDE의 Amazon Q 설정](q-in-IDE-setup.md) 단계를 완료했는지 확인하세요.

SQL 변환을 위한 코드 트랜스포메이션 작업을 시작하기 전에 다음 사전 조건이 충족되는지 확인합니다.
+ Oracle 데이터베이스에서 PostgreSQL 데이터베이스로 임베딩된 SQL이 있는 Java 애플리케이션을 마이그레이션하는 중입니다. 트랜스포메이션에 적합하려면 애플리케이션에 Oracle SQL 문이 포함되어야 합니다.
+  AWS DMS 스키마 변환을 사용하여 데이터베이스 스키마를 변환하는 프로세스를 완료했습니다. 자세한 내용은 *데이터베이스 마이그레이션 안내서*의 [DMS 스키마 변환을 사용하여 Oracle 데이터베이스를 Amazon RDS for PostgreSQL로 마이그레이션](https://docs.aws.amazon.com/dms/latest/sbs/schema-conversion-oracle-postgresql.html)을 참조하세요.
+ 스키마 변환이 완료되면 AWS DMS 콘솔에서 마이그레이션 프로젝트 파일을 다운로드한 것입니다.

## 2단계: 애플리케이션 구성
<a name="sql-transform-configure"></a>

임베딩된 SQL 코드를 변환하려면 Java 프로젝트에 하나 이상의 `.java` 파일이 포함되어야 합니다.

JetBrains IDE를 사용하는 경우 프로젝트 구조 설정의 SDK 필드를 해당 JDK로 설정해야 합니다. 프로젝트 구조 설정 구성에 대한 자세한 내용은 JetBrains 설명서의 [프로젝트 구조 설정](https://www.jetbrains.com/help/idea/project-settings-and-structure.html)을 참조하세요.

## 3단계: 임베딩된 SQL 변환
<a name="convert-sql"></a>

Java 애플리케이션에 포함된 SQL 코드를 PostgreSQL 대상 데이터베이스와 호환되는 형식으로 변환하려면 다음 단계를 완료하세요.

1. Amazon Q가 설치된 IDE에서 변환해야 하는 임베딩된 SQL이 포함된 Java 코드베이스를 엽니다.

1. Amazon Q 아이콘을 선택하여 채팅 패널을 엽니다.

1. Amazon Q에 채팅 패널에서 애플리케이션을 변환하도록 요청합니다.

1. Java 애플리케이션이 SQL 변환에 적합한 경우 Amazon Q는 수행할 트랜스포메이션 유형을 선택하라는 메시지를 표시합니다. **SQL conversion**을 입력합니다.

1. Amazon Q는 Amazon S3에서 검색한 스키마 메타데이터 파일을 업로드하라는 메시지를 표시합니다. 채팅에서 Amazon Q는 파일 검색 지침을 제공합니다.

1. Amazon Q는 임베딩된 SQL과 데이터베이스 스키마 파일이 포함된 프로젝트를 제공하라는 메시지를 표시합니다. 채팅 패널의 드롭다운 메뉴에서 적절한 파일을 선택합니다.

1. 데이터베이스 스키마에서 검색된 Amazon Q의 세부 정보가 정확한지 확인합니다.

1. Amazon Q가 SQL 코드 변환을 시작합니다. 몇 분 정도 걸릴 수 있습니다.

1. Amazon Q는 SQL 코드를 변환한 후 파일에 대한 모든 업데이트와 차이를 제공합니다. 차이의 변경 사항을 검토한 다음 변경 사항을 수락하여 코드를 업데이트합니다.

   또한 Amazon Q는 변경 사항에 대한 세부 정보가 포함된 트랜스포메이션 요약을 제공합니다.

1. 코드를 업데이트한 후 AWS DMS 콘솔로 돌아가서 새 SQL이 마이그레이션된 데이터베이스와 호환되는지 확인합니다.

# Amazon Q Developer를 사용하여 명령줄에서 코드 트랜스포메이션
<a name="transform-CLI"></a>

Amazon Q Developer 명령줄 트랜스포메이션 도구를 사용하여 명령줄에서 애플리케이션을 트랜스포메이션할 수 있습니다. 코드를 트랜스포메이션하는 경우, 소스 코드의 경로와 필요한 구성 파일을 제공하면 Amazon Q가 일련의 단계로 새 코드를 생성합니다. 트랜스포메이션 작업 전반에 걸쳐 Amazon Q는 로컬 환경에 코드를 빌드하여 변경 사항을 확인합니다. 자세한 내용은 [로컬 환경에서 코드 빌드](#local-builds) 단원을 참조하십시오. Amazon Q는 리포지토리에 코드 변경 사항을 커밋하는 새 브랜치를 생성합니다. 트랜스포메이션이 완료되면 브랜치를 원래 브랜치에 병합하여 변경 사항을 코드베이스에 통합할 수 있습니다.

시작하려면 명령줄 도구를 설치하고 인증한 다음 구성을 위한 명령을 확인하고 트랜스포메이션을 시작합니다.

**Topics**
+ [로컬 환경에서 코드 빌드](#local-builds)
+ [명령](#commands)
+ [Amazon Q Developer를 사용하여 명령줄에서 트랜스포메이션 실행](run-CLI-transformations.md)
+ [명령줄의 트랜스포메이션 문제 해결](troubleshooting-CLI-transformations.md)
+ [Amazon Q Developer 명령줄 트랜스포메이션 도구 버전 기록](transform-CLI-versions.md)

## 로컬 환경에서 코드 빌드
<a name="local-builds"></a>

트랜스포메이션 중에 Amazon Q는 로컬 환경에서 확인 빌드를 수행합니다. Amazon Q는 서버 측 코드를 여러 단계로 트랜스포메이션합니다. 각 단계 후 Amazon Q는 코드를 로컬 환경에 전송하여 변경 사항을 빌드하고 테스트합니다. 그러면 트랜스포메이션을 계속하기 위해 코드가 서버 측으로 다시 전송됩니다.

로컬 환경의 빌드는 Amazon Q가 프라이빗 리소스에 액세스해야 하는 테스트를 실행할 수 있도록 하여 트랜스포메이션된 코드를 확인하는 데 도움이 됩니다. 로컬 환경에서 AI 생성 코드 빌드와 관련된 보안 위험을 최소화하기 위해 Amazon Q는 생성한 코드를 검토하고 업데이트하여 보안 문제를 해결합니다.

**참고**  
Amazon Q는 프로젝트의 요청, 설명 및 콘텐츠를 기반으로 트랜스포메이션을 수행합니다. 보안을 유지하려면 검증되지 않은 외부 아티팩트를 프로젝트 리포지토리에 포함하지 말고 기능과 보안 모두에 대해 트랜스포메이션된 코드를 항상 검증합니다.

## 명령
<a name="commands"></a>

이러한 명령 실행에 대한 단계별 지침은 [Amazon Q Developer를 사용하여 명령줄에서 트랜스포메이션 실행](run-CLI-transformations.md) 섹션을 참조하세요.

트랜스포메이션을 구성하고 Amazon Q Developer Pro에 인증하려면 다음을 실행합니다.

```
qct configure
```

Java 업그레이드를 위한 트랜스포메이션을 시작하려면 다음 명령을 실행합니다. *<your-source-java-version>*의 경우 `JAVA_1.8`, `JAVA_8`, `JAVA_11`, `JAVA_17` 또는 `JAVA_21`을 입력할 수 있습니다. *<your-target-java-version>*의 경우 `JAVA_17` 또는 `JAVA_21`을 입력할 수 있습니다. `--source_version` 및 `--target_version`은 모두 선택 사항입니다. `--trust` 플래그를 사용하면 코드를 검사하는 동안 트랜스포메이션을 실행하여 보안을 유지할 수 있습니다.

```
qct transform --source_folder <path-to-folder>
    --source_version <your-source-java-version>        
    --target_version <your-target-java-version>
    --trust
```

SQL 변환에 대한 트랜스포메이션을 시작하려면 다음을 실행합니다.

```
qct transform --source_folder <path-to-folder>
    --sql_conversion_config_file <path-to-sql-config-file>
```

사용 중인 트랜스포메이션용 명령줄 도구의 버전을 확인하려면 다음을 실행합니다.

```
qct -v
```

트랜스포메이션에 대한 도움을 받으려면 다음을 실행합니다.

```
qct -h
```

트랜스포메이션 작업 기록을 보려면 다음을 실행합니다.

```
qct history
```

트랜스포메이션 작업 기록 보기 및 관리에 대한 자세한 내용은 [명령줄에서 작업 기록 보기](transformation-job-history.md#cli-job-history) 섹션을 참조하세요.

# Amazon Q Developer를 사용하여 명령줄에서 트랜스포메이션 실행
<a name="run-CLI-transformations"></a>

Amazon Q Developer 명령줄 도구를 사용하여 명령줄에서 코드를 트랜스포메이션하려면 다음 단계를 완료하세요.

## 사전 조건
<a name="CLI-transformation-prerequisites"></a>

명령줄에서 트랜스포메이션을 시작하기 전에 다음 사전 조건을 충족해야 합니다.
+ Java 코드 버전을 업그레이드하는 경우 프로젝트는 [Amazon Q를 사용하여 Java 버전을 업그레이드하기 위한 사전 조건](code-transformation.md#java-upgrade-prerequisites)을 충족합니다.
+ Java 애플리케이션에서 임베딩된 SQL을 변환하는 경우 애플리케이션은 [SQL with Amazon Q를 변환하기 위한 사전 조건](transform-sql.md#sql-transform-prereqs)을 충족합니다.
+ 명령줄 환경에 Python이 설치되어 있습니다. 명령줄 도구를 설치하는 방법입니다. 현재 지원되는 최소 Python 버전은 3.12입니다.
+ macOS 또는 Linux에서 트랜스포메이션을 실행 중입니다.
+ 애플리케이션의 크기는 2GB 이하입니다.
+ Amazon Q가 업그레이드할 특정 종속성이 있는 경우 [종속성 업그레이드 파일](#step-3-dependency-upgrade-file)을 구성한 것입니다.

## 1단계: 인증 방법 선택 및 권한 추가
<a name="step-1-permissions-auth"></a>

IAM Identity Center를 인증하여 명령줄에서 트랜스포메이션을 실행할 수 있습니다. 필수 권한이 있는지 확인합니다.

**참고**  
명령줄에서 수행되는 트랜스포메이션에는 고객 관리형 키가 지원되지 않습니다.

### 권한 추가
<a name="transform-CLI-add-permissions"></a>

인증에 사용 중인 Amazon Q Developer 구독과 연결된 IAM 자격 증명에는 명령줄에서 트랜스포메이션을 수행할 수 있는 권한이 있어야 합니다. 계속하기 전에 IAM 자격 증명에 [사용자가 명령줄에서 변환을 실행하도록 허용](id-based-policy-examples-users.md#id-based-policy-examples-allow-cli-transformations)에 정의된 권한이 있는지 확인합니다.

### Amazon Q Developer 구독을 통한 IAM Identity Center 인증
<a name="auth-IdC"></a>

IAM Identity Center로 인증하려면 관리자가 [Amazon Q Developer Pro를 직원 사용자로 구독](subscribe-users.md)해야 하며 구독을 통해 인증할 시작 URL을 제공해야 합니다. 사용자 또는 관리자는 Amazon Q Developer 콘솔에서 시작 URL을 찾을 수 있습니다. 자세한 내용은 [Amazon Q Developer에서 사용할 시작 URL 찾기](manage-account-details.md) 섹션을 참조하세요.

필요한 권한을 추가하려면 [권한 추가](#transform-CLI-add-permissions) 섹션을 참조하세요.

[4단계: 구성 및 인증](#step-4-configure-auth)에서 시작 URL을 제공합니다.

## 2단계: 도구 설치
<a name="step-2-install"></a>



1. [트랜스포메이션을 위한 Amazon Q 명령줄 도구를 다운로드](https://desktop-release.codewhisperer.us-east-1.amazonaws.com/amzn_qct_cli/amzn_qct_cli-1.2.2.zip)하고 압축을 풉니다.

   명령줄 도구의 이전 버전을 다운로드하려면 [버전 기록](transform-CLI-versions.md) 섹션을 참조하세요.

1. 도구를 설치하려면 Python에서 가상 환경을 설정하는 것이 좋습니다. 가상 환경을 생성하려면 도구를 설치하고 실행할 디렉터리에서 터미널 창을 엽니다.

   ```
   python -m venv qct-cli 
   ```

1. 가상 환경을 활성화하려면 다음을 수행합니다.

   ```
   source qct-cli/bin/activate 
   ```

1. 명령줄에 도구를 설치하려면 머신 아키텍처에 따라 도구의 압축을 푼 경로로 다음 명령을 실행합니다.

------
#### [ Linux\$1aarch64 ]

   ```
   pip install <path/to/unzipped-tool>/Linux_aarch64/amzn_qct_cli-1.2.2-py3-none-any.whl
   ```

------
#### [ Linux\$1x86\$164 ]

   ```
   pip install <path/to/unzipped-tool>/Linux_x86_64/amzn_qct_cli-1.2.2-py3-none-any.whl
   ```

------
**참고**  
트랜스포메이션에 이전 버전의 명령줄 도구를 사용하는 경우, 다운로드한 [버전](transform-CLI-versions.md)으로 `1.2.2`을 바꿉니다.

1. 도구가 설치되었는지 확인하려면 다음을 실행합니다.

   ```
   which qct
   ```

## 3단계: 종속성 업그레이드 파일 생성(선택 사항)
<a name="step-3-dependency-upgrade-file"></a>

Amazon Q에 *종속성 업그레이드 파일*을 제공할 수 있습니다. 이 파일은 프로젝트의 종속성과 트랜스포메이션 중 업그레이드할 버전을 나열하는 YAML 파일입니다. 종속성 업그레이드 파일을 제공하여 Amazon Q가 업그레이드할 때 모르는 서드 파티 및 퍼스트 파티 종속성을 지정할 수 있습니다.

퍼스트 파티 종속성은 조직이 유지 관리하고 로컬 또는 조직의 프라이빗 네트워크에서만 사용할 수 있는 라이브러리, 플러그인 및 프레임워크를 나타냅니다. Amazon Q는 로컬 환경에서 빌드를 수행할 때 퍼스트 파티 종속성에 액세스할 수 있습니다. 자세한 내용은 [로컬 환경에서 코드 빌드](transform-CLI.md#local-builds) 단원을 참조하십시오. 서드 파티 종속성은 조직에 고유하지 않은 공개적으로 사용 가능한 또는 오픈 소스 종속성입니다.

YAML 파일에서 업그레이드하려는 퍼스트 파티 종속성을 지정할 수 있으며, Amazon Q는 JDK 업그레이드 중에 종속성을 업그레이드합니다(예: Java 8에서 17로). 초기 JDK 업그레이드 후 별도의 트랜스포메이션(17에서 17로 또는 21에서 21로)을 시작하여 서드 파티 종속성을 업그레이드할 수 있습니다.

Amazon Q가 최소 JDK 업그레이드를 수행하면 별도의 트랜스포메이션을 시작하여 모든 서드 파티 종속성을 업그레이드할 수 있습니다. 또는 서드 파티 종속성과 해당 버전을 YAML 파일에 지정하여 라이브러리 업그레이드 트랜스포메이션 중에만 해당 종속성을 업그레이드할 수 있습니다.

Amazon Q는 트랜스포메이션 중에 종속성 업그레이드 파일을 제공하라는 메시지를 표시합니다. 제공하려면 먼저 파일을 올바르게 구성했는지 확인합니다. YAML 파일에는 다음 필드가 필요합니다.
+ name - 종속성 업그레이드 파일의 이름입니다.
+ description(선택 사항) - 종속성 업그레이드 파일 및 트랜스포메이션에 대한 설명입니다.
+ dependencyManagement - 업그레이드할 종속성 및 플러그인 목록을 포함합니다.
+ dependencies - 업그레이드할 라이브러리의 이름과 버전을 포함합니다.
+ plugins - 업그레이드할 플러그인의 이름과 버전을 포함합니다.
+ identifier - 라이브러리, 플러그인 또는 기타 종속성의 이름입니다.
+ targetVersion - 업그레이드할 종속성의 버전입니다.
+ versionProperty(선택 사항) - 정의 중인 종속성의 버전으로, 애플리케이션의 `pom.xml` 파일에 `properties` 태그로 설정됩니다.
+ originType - 종속성이 퍼스트 파티인지 서드 파티인지를 나타내며, FIRST\$1PARTY 또는 THIRD\$1PARTY에 의해 지정됩니다.

다음은 종속성 업그레이드 YAML 파일의 예와 Amazon Q가 구문 분석하는 데 필요한 구성입니다.

```
name: dependency-upgrade
  
description: "Custom dependency version management for Java migration from JDK 8/11/17 to JDK 17/21"
  
  
dependencyManagement:
  
  dependencies:
  
    - identifier: "com.example:library1"
  
      targetVersion: "2.1.0"
  
      versionProperty: "library1.version"  # Optional
  
      originType: "FIRST_PARTY"   
  
    - identifier: "com.example:library2"
  
      targetVersion: "3.0.0"
  
      originType: "THIRD_PARTY"
  
  plugins:
  
    - identifier: "com.example.plugin"
  
      targetVersion: "1.2.0"
  
      versionProperty: "plugin.version"  # Optional
            
      originType: "THIRD_PARTY"
```

## 4단계: 구성 및 인증
<a name="step-4-configure-auth"></a>

트랜스포메이션을 시작하려면 먼저 IAM Identity Center로 인증하고 트랜스포메이션에 대한 구성 세부 정보를 제공해야 합니다.

1. 트랜스포메이션 구성 프로세스를 시작하려면 다음 명령을 실행합니다.

   ```
   qct configure
   ```

1. 지원되는 각 Java 버전에 대해 JDK 경로를 입력하라는 메시지가 표시됩니다. 대상 버전이 아닌 Java 애플리케이션 소스 버전의 JDK 경로만 지정하면 됩니다.

1. 그런 다음 IAM Identity Center로 인증하려면 Amazon Q Developer Pro 구독 프로필의 시작 URL을 입력하라는 메시지가 표시됩니다.

   그런 다음 구독한 AWS 리전 을 형식으로 입력합니다`us-east-1`. 지원되는 리전 목록은 [지원되는 리전](regions.md) 섹션을 참조하세요. 리전 코드 목록은 *AWS 일반 참조 안내서*의 [리전 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints)를 참조하세요.

1. 구성 기본 설정은 configuration.ini 파일에 저장됩니다.

## 5단계: 트랜스포메이션 실행
<a name="step-5-run-transformation"></a>

수행 중인 트랜스포메이션 유형을 선택하여 필요한 구성 및 명령을 확인합니다.

**참고**  
클라이언트 측 빌드에는 안정적인 네트워크 연결이 필요하므로 코드 트랜스포메이션 중에 로컬 시스템을 끄거나 닫지 마세요.

------
#### [ Java upgrade ]

**트랜스포메이션 계획 수정**

Java 버전 업그레이드 중에 Amazon Q는 트랜스포메이션이 시작되기 전에 검토할 수 있는 트랜스포메이션 계획을 생성합니다. 계획에 대해 다음과 같은 변경을 요청할 수 있습니다.
+ 계획에 포함된 목록에서 Amazon Q가 업그레이드하는 라이브러리
  + 프롬프트 예제:
    + <dependency1>, <dependency2> 및 <dependency5>만 업그레이드
    + <dependency1> 또는 <dependency2> 종속성은 업그레이드하지 말 것
+ 라이브러리를 업그레이드할 대상 버전
  + 프롬프트 예제:
    + <version> 대신 이 버전에 대한 <dependency> 업그레이드
+ Amazon Q가 수행해야 하는 단계
  + 프롬프트 예제:
    + 1\$17단계만 완료
    + 5\$19단계 실행 안 함
+ 업그레이드할 종속성 추가(최신 JDK 버전으로 업그레이드할 때 옵션만 해당)
  + 프롬프트 예제:
    + 또한 <dependency1> 종속성을 <version2> 버전으로 업그레이드

**Java 코드 업그레이드**

1. 다음 명령을 실행하여 Java 업그레이드를 위한 트랜스포메이션을 시작합니다. 트랜스포메이션하려는 코드의 폴더 경로로 `<path-to-folder>`를 바꾸고 `JAVA_17` 또는 `JAVA_21`로 `<your-target-java-version>`을 바꿉니다.

   ```
   qct transform --source_folder <path-to-folder>
       --target_version <your-target-java-version>
   ```

   추가 명령 옵션: 
   + 업그레이드할 종속성을 지정하는 경우 종속성 업그레이드 파일의 경로와 함께 `--dependency_upgrade_file` 옵션을 추가합니다.
   + 트랜스포메이션 계획을 검토하거나 업데이트하지 않으려면 명령에 `--no-interactive` 플래그를 추가합니다. Amazon Q는 계획에 대한 피드백을 요청하지 않으며 변경을 요청할 기회가 없습니다.

1. 트랜스포메이션이 시작되기 전에 Maven 버전이 확인됩니다. 지원되는 최소 버전이 있는 경우 다음 출력이 표시됩니다.

   ```
   Running command: mvn --version at: path/to/current/directory 
   Your Maven version is supported for transformations.
   ```

   지원되는 Maven 버전이 없는 경우 계속 진행하려면 업데이트해야 합니다. 자세한 내용은 [사전 조건](#CLI-transformation-prerequisites) 섹션을 참조하세요.

1. `--no-interactive` 플래그를 추가하지 않으면 Amazon Q는 트랜스포메이션 계획에 대한 피드백을 제공하라는 메시지를 표시합니다. 변경하려는 사항을 영어 자연어로 설명할 수 있으며, Amazon Q는 요청한 변경 사항을 지원할 수 있는 경우 계획을 업데이트합니다.

1. Amazon Q가 트랜스포메이션을 시작합니다. 트랜스포메이션 전반에 걸쳐 상태 업데이트를 출력합니다. 완료되면 Amazon Q는 트랜스포메이션 결과, 로그 및 구성 파일이 출력되는 경로를 제공합니다.

   업그레이드된 코드는 생성된 새 브랜치 Amazon Q에 커밋됩니다. Amazon Q는 `qct configure` 실행 시 선택한 항목에 따라 하나 이상의 커밋으로 코드를 커밋합니다.

1. Java 버전을 업그레이드한 후 다른 트랜스포메이션을 실행하면, 첫 번째 트랜스포메이션에서 변경 사항을 커밋한 동일한 브랜치에서 두 번째 트랜스포메이션을 시작합니다.

------
#### [ SQL conversion ]

시작하기 전에 [Amazon Q Developer를 사용하여 Java 애플리케이션에 임베딩된 SQL 변환](transform-sql.md) 섹션을 읽고 이러한 유형의 트랜스포메이션에 대한 사전 조건을 이해해야 합니다.

1. 임베딩된 SQL을 변환하려면 먼저 [AWS DMS 스키마 변환](https://docs.aws.amazon.com/dms/latest/sbs/schema-conversion-oracle-postgresql.html)에서 스키마 메타데이터 파일의 경로가 포함된 YAML 파일을 생성해야 합니다.

   요구하는 파일 형식은 다음과 같습니다.

   ```
   schema_conv_metadata_path: <path-to-metadata-zip-file>
   ```

1. 다음 명령을 실행하여 SQL 변환에 대한 트랜스포메이션을 시작합니다. 트랜스포메이션하려는 코드의 폴더 경로로 `<path-to-folder>`를 바꾸고, 1단계에서 생성한 YAML 파일의 경로로 `<path-to-sql-config-file>`을 바꿉니다.

   ```
   qct transform --source_folder <path-to-folder>
       --sql_conversion_config_file <path-to-sql-config-file>
   ```

1. Amazon Q가 스키마 메타데이터 파일에서 여러 스키마를 찾으면 트랜스포메이션을 중지하고 감지된 스키마 목록을 제공합니다. SQL 변환에 사용할 스키마를 선택한 다음 YAML 파일에 새 필드(`schema: <schema-name>`)를 추가합니다.

1. Amazon Q가 트랜스포메이션을 시작합니다. 트랜스포메이션 전반에 걸쳐 상태 업데이트를 출력합니다. 완료되면 Amazon Q는 트랜스포메이션 결과, 로그 및 구성 파일이 출력되는 경로를 제공합니다.

   업그레이드된 코드는 생성된 새 브랜치 Amazon Q에 커밋됩니다.

------

## 트랜스포메이션 일시 중지 또는 취소
<a name="pause-cancel-CLI-transformations"></a>

현재 트랜스포메이션 작업을 일시 중지하거나 취소하도록 선택할 수 있습니다. 다시 시작하기 전에 트랜스포메이션 작업을 최대 12시간 동안 일시 중지할 수 있습니다.

**코드 트랜스포메이션 작업을 일시 중지하거나 취소하려면**

1. CLI 터미널에서 키보드에서 **Ctrl\$1C**를 누릅니다.

1. 트랜스포메이션을 일시 중지할지 취소할지 선택합니다.
   + 코드 트랜스포메이션 작업을 일시 중지하려면 `1`을 입력합니다. QCT 명령(``qct transform --source_folder=≤/Path/Given/Originally/To/QCT>``)을 사용하여 12시간 이내에 작업을 재개하여 코드 트랜스포메이션을 계속할 수 있습니다.
   + 코드 트랜스포메이션 작업을 취소하려면 `2`를 입력합니다.

# 명령줄의 트랜스포메이션 문제 해결
<a name="troubleshooting-CLI-transformations"></a>

다음 정보는 Amazon Q Developer를 사용하여 명령줄에서 애플리케이션을 트랜스포메이션할 때 발생하는 일반적인 문제를 해결하는 데 도움이 될 수 있습니다.

## 보유자 토큰이 새로 고쳐지지 않는 이유는 무엇인가요?
<a name="bearer-token-refresh"></a>

다음 오류가 표시되면 인증에 사용되는 보유자 토큰을 새로 고쳐야 합니다.

```
Refreshing bearer token
('Error refreshing bearer token due to: ', InvalidGrantException('An error occurred (InvalidGrantException) when calling the CreateToken operation: '))
('Error getting bearer token due to: ', RuntimeError(('Error refreshing bearer token due to: ', InvalidGrantException('An error occurred (InvalidGrantException) when calling the CreateToken operation: '))))
```

이 오류를 해결하려면 다음 명령을 실행합니다.

```
rm ~/.aws/qcodetransform/credentials.json
```

오래된 자격 증명 파일을 제거한 후 `qct transform`을 다시 실행하여 트랜스포메이션을 다시 시작합니다.

## 명령줄 도구의 최신 버전이 사용되지 않는 이유는 무엇인가요?
<a name="install-latest-version"></a>

트랜스포메이션을 위해 새 버전의 명령줄 도구를 다운로드할 때 이전 버전의 도구가 계속 사용되는 경우도 있습니다.

최신 버전의 도구를 사용하려면 [최신 버전](transform-CLI-versions.md)을 다운로드합니다. 그런 다음 기계 아키텍처에 따라 도구의 압축을 푼 경로로 다음 명령을 실행합니다.

------
#### [ Linux\$1aarch64 ]

```
pip install <path/to/unzipped-tool>/Linux_aarch64/amzn_qct_cli-1.2.2-py3-none-any.whl --force-reinstall
```

------
#### [ Linux\$1x86\$164 ]

```
pip install <path/to/unzipped-tool>/Linux_x86_64/amzn_qct_cli-1.2.2-py3-none-any.whl --force-reinstall
```

------

**참고**  
트랜스포메이션에 이전 버전의 명령줄 도구를 사용하는 경우 `1.2.2`을 다운로드한 [버전](transform-CLI-versions.md)으로 바꿉니다.

# Amazon Q Developer 명령줄 트랜스포메이션 도구 버전 기록
<a name="transform-CLI-versions"></a>

Amazon Q Developer 명령줄 트랜스포메이션 도구의 현재 및 과거 릴리스에 대한 자세한 내용은 다음 정보를 검토하세요. 테이블에는 각 버전의 다운로드 링크, 릴리스 날짜 및 릴리스 정보가 포함되어 있습니다.


****  

| 버전 | 릴리스 날짜 | 릴리스 노트 | 
| --- | --- | --- | 
|   [1.2.2(최신)](https://desktop-release.codewhisperer.us-east-1.amazonaws.com/amzn_qct_cli/amzn_qct_cli-1.2.2.zip)   | 2026년 2월 26일 | QCT CLI에 AWS Transform 사용자 지정에 대한 프로모션 배너가 추가되었습니다. 변환 명령 실행 및 도움말 텍스트에 배너가 표시됩니다. 배너 출력을 억제하는 새 --skip-banner 플래그입니다. | 
|   [1.2.1](https://desktop-release.codewhisperer.us-east-1.amazonaws.com/amzn_qct_cli/amzn_qct_cli-1.2.1.zip)   | 2025년 9월 9일 | 초기 프로젝트 업로드 중에 퍼스트 파티 상위 POM을 포함하도록 Maven 확장 업데이트를 진행했습니다. | 
|   [1.2.0](https://desktop-release.codewhisperer.us-east-1.amazonaws.com/amzn_qct_cli/amzn_qct_cli-1.2.0.zip)   | 2025년 8월 7일 | Maven Java 프로젝트의 작업 기록 보기 및 모듈 구조 시각화에 대한 지원이 추가되었습니다. | 
|   [1.1.0](https://desktop-release.codewhisperer.us-east-1.amazonaws.com/amzn_qct_cli/amzn_qct_cli-1.1.0.zip)   | 2025년 7월 21일 | 트랜스포메이션에 대한 원격 측정 수집 지원이 포함됩니다. | 
|   [1.0.0](https://desktop-release.codewhisperer.us-east-1.amazonaws.com/amzn_qct_cli/amzn_qct_cli-1.0.0.zip)   | 2025년 6월 27일 | 명령줄 변환 도구는 일반적으로 사용할 수 있으며 Amazon Q Developer Pro 구독에서만 AWS IAM Identity Center를 통한 인증을 지원합니다. 유럽(프랑크푸르트) 리전의 구독 지원이 추가되었습니다. | 
|   [0.6.0](https://desktop-release.codewhisperer.us-east-1.amazonaws.com/amzn_qct_cli/amzn_qct_cli-0.6.0.zip)   | 2025년 6월 6일 | 종속성 업그레이드 파일을 제공하고 트랜스포메이션 계획을 반복하기 위한 지원이 포함됩니다. | 
|   [0.5.2](https://desktop-release.codewhisperer.us-east-1.amazonaws.com/amzn_qct_cli/amzn_qct_cli-0.5.2.zip)   | 2025년 4월 16일 | 버그 수정을 통해 퍼스트 파티 종속성이 있는 애플리케이션의 작업 및 실패를 재개할 때 발생하는 문제를 해결합니다. | 
|   [0.5.1](https://desktop-release.codewhisperer.us-east-1.amazonaws.com/amzn_qct_cli/amzn_qct_cli-0.5.1.zip)   | 2025년 3월 13일 | IAM으로 인증할 때 더 이상 AWS 리전을 제공할 필요가 없습니다. 출력 로그에 작업 상태를 포함하는 버그 수정도 포함됩니다. | 
|   [0.5.0](https://desktop-release.codewhisperer.us-east-1.amazonaws.com/amzn_qct_cli/amzn_qct_cli-0.5.0.zip)   | 2025년 2월 28일 | 를 통한 IAM 인증에 대한 지원을 포함합니다 AWS CLI. | 
|   [0.4.1](https://desktop-release.codewhisperer.us-east-1.amazonaws.com/amzn_qct_cli/amzn_qct_cli-0.4.1.zip)   | 2025년 2월 17일 | Amazon Q Developer 구독이 구성된 AWS 리전 를 입력하기 위한 지원을 포함하는 버그 수정입니다. | 
|   [0.4.0](https://desktop-release.codewhisperer.us-east-1.amazonaws.com/amzn_qct_cli/amzn_qct_cli-0.4.0.zip)   | 2025년 2월 14일 | Java 애플리케이션을 Java 21로 업그레이드하기 위한 지원이 포함되어 있습니다. | 
|   [0.3.0](https://desktop-release.codewhisperer.us-east-1.amazonaws.com/amzn_qct_cli/amzn_qct_cli-0.3.0.zip)   | 2025년 2월 12일 | Java 애플리케이션에서 임베딩된 SQL 변환에 대한 지원을 포함합니다. | 
|   [0.2.0](https://desktop-release.codewhisperer.us-east-1.amazonaws.com/amzn_qct_cli/amzn_qct_cli-0.2.0.zip)   | 2025년 2월 3일 | 여러 커밋에서 업그레이드된 Java 코드를 수신하기 위한 지원이 포함되어 있습니다. | 
|  [0.1.0](https://desktop-release.codewhisperer.us-east-1.amazonaws.com/amzn_qct_cli/amzn_qct_cli-0.1.0.zip)  | 2024년 11월 27일 | 최초 릴리스입니다. 명령줄에서 Java 코드 버전을 업그레이드하기 위한 지원이 포함되어 있습니다. | 

# 트랜스포메이션 작업 기록 보기
<a name="transformation-job-history"></a>

Amazon Q는 Java 트랜스포메이션 작업 기록에 대한 포괄적인 개요를 제공하므로 IDE와 명령줄 모두에서 트랜스포메이션 작업을 추적하고 검토할 수 있습니다.

트랜스포메이션 작업 기록에는 작업에 대한 다음 정보가 포함됩니다.
+ **날짜** - 트랜스포메이션 작업이 실행된 시간
+ **프로젝트 이름** - 트랜스포메이션된 프로젝트의 이름입니다.
+ **상태** – 트랜스포메이션 작업의 현재 상태입니다.
+ **기간** - 트랜스포메이션을 완료하는 데 걸린 시간입니다.
+ **작업 ID** - 트랜스포메이션 작업의 고유 식별자입니다.
+ **Diff 패치** - 모든 코드 변경 사항을 보여주는 최종 diff 패치 파일의 링크 또는 경로
+ **요약** - 변경 사항에 대한 세부 정보가 포함된 트랜스포메이션 요약 파일의 링크 또는 경로입니다.

**참고**  
이 기능이 릴리스된 이후 실행된 트랜스포메이션만 작업 기록에서 사용할 수 있습니다. 기능 릴리스 날짜는 [Amazon Q Developer 사용 설명서의 설명서 기록](doc-history.md) 섹션을 참조하세요.

## IDE에서 작업 기록 보기
<a name="ide-job-history"></a>

**참고**  
이 기능은 현재 Visual Studio Code에서만 사용할 수 있습니다.

Visual Studio Code의 Transformation Hub는 Java 트랜스포메이션 작업 기록에 대한 포괄적인 보기를 제공합니다.

Transformation Hub의 테이블에는 지난 30일 동안의 가장 최근 트랜스포메이션 작업 10개가 나열됩니다. 테이블에서 트랜스포메이션 아티팩트 및 새로 고침 작업에 액세스하여 진행 상황을 추적하고 누락된 아티팩트를 가져올 수 있습니다.

### 트랜스포메이션 아티팩트 검색
<a name="retrieve-artifacts"></a>

작업 기록 테이블에서 diff 패치 및 요약 파일과 같은 트랜스포메이션 아티팩트에 액세스할 수 있습니다. 적절한 링크를 선택하여 IDE에서 diff 또는 요약을 엽니다.

아티팩트는 `.aws/transform` 디렉터리에 로컬로 저장되므로 이전 작업에서 이전에 다운로드한 트랜스포메이션 아티팩트에 액세스할 수도 있습니다.

### 작업 상태 새로 고침
<a name="refresh-jobs"></a>

작업 기록 테이블에서 작업 상태를 새로 고칠 수 있습니다. Amazon Q가 실패한 작업을 재개할 수 있는 경우와 같이 서버 측에서 아직 서버에 도달하지 않았을 수 있는 업데이트된 상태를 가져오려면 실패한 작업을 새로 고칩니다. 완료된 작업을 새로 고쳐 아직 나타나지 않았을 수 있는 아티팩트를 다운로드할 수도 있습니다.

### IDE에서 실행되는 작업에 대한 작업 기록이 저장되는 방법
<a name="ide-history-storage"></a>

Visual Studio Code의 경우 모든 트랜스포메이션 작업 정보와 아티팩트는 `.aws/transform` 디렉터리에 로컬로 저장됩니다. 스토리지는 다음과 같이 구성됩니다.

```
.aws/transform/
├── [project-name-1]/
│   ├── [job-id-1]/
│   │   ├── diff.patch
│   │   ├── [summary-1]/
│   │   │   └── summary.md
│   │   │   └── buildCommandOutput.log
│   └── [job-id-2]/
│       ├── diff.patch
│       ├── [summary-2]/
│       │   └── summary.md
│       │   └── buildCommandOutput.log
└── [project-name-2]/
    └── [job-id-3]/
        ├── diff.patch
        ├── [summary-3]/
        │   └── summary.md
        │   └── buildCommandOutput.log
```

## 명령줄에서 작업 기록 보기
<a name="cli-job-history"></a>

명령줄의 트랜스포메이션의 경우 **qct history** 명령은 사용자 지정 옵션을 사용하여 트랜스포메이션 작업 기록에 대한 액세스를 제공합니다.

CLI의 경우 트랜스포메이션 작업 기록 정보는 `.aws/qcodetransform/history/` 디렉터리에 로컬로 저장됩니다.

### qct 기록 명령 사용
<a name="cli-history-command"></a>

트랜스포메이션 작업 기록을 보는 기본 명령은 다음과 같습니다.

```
qct history
```

기본적으로 이 명령은 일시 중지되거나 진행 중인 작업 외에도 가장 최근의 트랜스포메이션 작업 10개를 표시합니다.

**--limit** 플래그와 함께 표시할 작업 기록 항목 수를 지정할 수도 있습니다. 예를 들어 20개의 작업을 표시하려면 다음을 실행합니다.

```
qct history --limit 20
```

# Java 트랜스포메이션 문제 해결
<a name="troubleshooting-code-transformation"></a>

다음 정보는 Amazon Q Developer로 Java 애플리케이션을 트랜스포메이션할 때 발생하는 일반적인 문제를 해결하는 데 도움이 될 수 있습니다.

**Topics**
+ [Amazon Q가 프로젝트를 업로드할 수 없는 이유는 무엇인가요?](#project-upload-fail)
+ [Maven 명령이 실패하는 이유는 무엇입니까?](#maven-commands-failing)
+ [내 `PATH`에 Maven을 추가하려면 어떻게 해야 합니까?](#add-maven-to-path)
+ [Amazon Q가 코드를 빌드할 수 없는 이유는 무엇입니까?](#build-fail)
+ [55분 후에 트랜스포메이션이 실패한 이유는 무엇인가요?](#build-time-limit)
+ [트랜스포메이션된 코드를 다운로드할 수 없는 이유는 무엇입니까?](#download-code-fail)
+ [코드 트랜스포메이션 로그에 액세스하려면 어떻게 해야 하나요?](#logs)
+ [트랜스포메이션 작업 ID는 어떻게 찾을 수 있나요?](#job-id)

## Amazon Q가 프로젝트를 업로드할 수 없는 이유는 무엇인가요?
<a name="project-upload-fail"></a>

프로젝트가 업로드되지 않는 경우 다음 문제 중 하나 때문일 수 있습니다. Amazon Q에서 표시되는 오류에 해당하는 항목을 참조하세요.

**Topics**
+ [프로젝트 크기 축소](#reduce-project-size)
+ [IDE에서 프록시 설정 구성](#configure-proxy)
+ [Amazon S3에 액세스 허용](#allowlist-s3-bucket)

### 프로젝트 크기 축소
<a name="reduce-project-size"></a>

코드를 트랜스포메이션하기 위해 Amazon Q는 소스 코드, 프로젝트 종속성 및 빌드 로그가 포함된 프로젝트 아티팩트를 생성합니다. 트랜스포메이션 작업의 최대 프로젝트 아티팩트 크기는 2GB입니다. 프로젝트 아티팩트 크기와 관련된 오류가 발생하는 경우 프로젝트 크기를 줄이거나 더 작은 프로젝트를 트랜스포메이션해야 합니다. 코드 트랜스포메이션 로그에서 프로젝트 아티팩트 파일의 크기를 볼 수 있습니다. 자세한 내용은 [코드 트랜스포메이션 로그에 액세스하려면 어떻게 해야 하나요?](#logs) 섹션을 참조하세요.

### IDE에서 프록시 설정 구성
<a name="configure-proxy"></a>

코드를 트랜스포메이션하기 위해 Amazon Q는 프로젝트 아티팩트를 서비스 소유 Amazon S3 버킷에 업로드합니다. 업로드 프로세스의 일환으로 SSL 또는 TLS 인증서를 사용하여 Amazon S3와 IDE 간의 통신을 설정합니다. 프록시 서버를 사용하는 경우 프록시 서버에서 사용하는 SSL 또는 TLS 인증서를 신뢰할 수 있어야 합니다. 그렇지 않으면 Amazon Q가 프로젝트를 업로드할 수 없습니다.

프록시 또는 인증서와 관련된 오류가 발생하는 경우 인증서를 신뢰하거나 다른 프록시 설정을 업데이트하도록 IDE 또는 운영 체제를 구성해야 할 수 있습니다.

**참고**  
조직의 프록시 서버 또는 방화벽 뒤에 있는 경우 인증서와 관련이 없는 문제가 발생할 수도 있습니다. 인증서를 구성하기 위해 다음 절차를 완료했지만 여전히 문제가 있는 경우 네트워크 관리자에게 문의하여 IDE에서 Amazon S3와 통신할 수 있는지 확인합니다. 자세한 내용은 [Amazon S3에 액세스 허용](#allowlist-s3-bucket) 단원을 참조하십시오.

#### JetBrains에서 인증서 구성
<a name="configure-proxy-JB"></a>

프록시 서버에서 사용하는 SSL 또는 TLS 인증서를 신뢰하도록 JetBrains IDE Java 런타임 환경(JRE)을 구성하려면 SSL 또는 TLS 인증서를 JRE의 `cacerts` 파일로 가져와야 합니다. `cacerts` 파일은 HTTPS 및 SSL과 같은 보안 연결을 위한 신뢰할 수 있는 루트 인증서가 포함된 파일이며 JRE의 보안 설정의 일부입니다. 인증서를 가져오려면 다음 절차를 완료합니다.

**참고**  
실수로 인해 보안 연결에 문제가 발생할 수 있으므로 `cacerts` 파일을 수정하기 전에 백업하는 것이 좋습니다.

1. JRE의 `cacerts` 파일의 경로를 결정합니다. JetBrains IDE와 함께 제공된 내부 JRE의 `cacerts` 파일 경로는 운영 체제와 사용 중인 JetBrains IDE 버전에 따라 달라집니다.

   다음은 공통 운영 체제의 `cacerts` 파일 경로의 예입니다. 운영 체제를 선택하여 예시를 확인하세요.
**참고**  
 `<JetBrains Installation Folder>`는 JetBrains 제품이 설치된 디렉터리를 참조합니다. 이 디렉터리는 일반적으로 설치 프로세스 중에 선택됩니다.  
`jbr` 폴더는 JetBrains IDE와 함께 사용하도록 조정된 JRE의 특정 버전인 JetBrains IDE와 함께 번들링된 JRE를 나타냅니다.

------
#### [ Windows ]

   Windows에 설치된 JetBrains IDE의 `cacerts` 파일 경로는 다음과 같습니다.

   ```
   <JetBrains Installation Folder>\jbr\bin\cacerts
   ```

   예를 들어 Windows의 기본 위치에 JetBrains IDE를 설치한 경우 경로는 다음과 같을 수 있습니다.

   ```
   C:\Program Files\JetBrains\jbr\bin\cacerts
   ```

------
#### [ macOS ]

   macOS에 설치된 JetBrains IDE의 `cacerts` 파일 경로는 다음과 같습니다.

   ```
   /Applications/JetBrains Toolbox/<version>/JetBrains Toolbox.app/Contents/jbr/Contents/Home/lib/security/cacerts
   ```

   예를 들어 macOS의 기본 위치에 JetBrains IDE를 설치한 경우 경로는 다음과 같을 수 있습니다.

   ```
   /Applications/JetBrains Toolbox/2022.3.4/JetBrains Toolbox.app/Contents/jbr/Contents/Home/lib/security/cacerts
   ```

------
#### [ Linux ]

   Linux에 설치된 JetBrains IDE의 `cacerts` 파일 경로는 다음과 같습니다.

   ```
   /opt/jetbrains/jbr/lib/security/cacerts
   ```

------

1. `cacerts` 파일로 가져와야 하는 인증서를 결정합니다. 인증서 파일에는 일반적으로 `.cer`, `.crt`또는 `.der` 파일 확장자가 있습니다. 추가해야 할 인증서가 확실하지 않은 경우 네트워크 관리자에게 문의하세요.

1. 인증서를 `cacerts` 키 스토어로 가져옵니다. Java `keytool` 명령을 사용하여 수행할 수 있습니다.

   1. 명령 프롬프트를 열고 다음 명령을 입력합니다.

      ```
      keytool -import -alias <alias> -file <certificate_file> -keystore <path_to_cacerts>
      ```

   1. `<alias>`의 경우 나중에 참조하도록 가져오려는 인증서의 이름을 추가할 수 있습니다. 이 옵션은 선택 사항입니다.

   1. `<certificate_file>`의 경우 가져오려는 인증서의 경로를 지정합니다. 인증서가 포함된 `.cer`, `.crt` 또는 `.der` 파일의 경로여야 합니다.

   1. `<path_to_cacerts>`에는 1단계에서 저장한 `cacerts` 키 스토어 파일의 경로를 지정합니다. 이는 인증서를 가져오는 파일입니다.

   예를 들어 `my_certificate.cer`이라는 인증서를 Windows의 IntelliJ IDEA에서 번들링된 JRE의 `cacerts` 키 스토어로 가져오고 인증서에 별칭 `myalias`를 지정하려는 경우, 명령은 다음과 같을 수 있습니다.

   ```
   keytool -import -alias myalias -file my_certificate.cer -keystore "C:\Program Files\JetBrains\IntelliJ IDEA 2022.3.2\jbr\bin\cacerts"
   ```

1. 가져오기 프로세스 중에 키 스토어 암호를 입력하라는 메시지가 표시됩니다. `cacerts` 키 스토어의 기본 암호는 `changeit`입니다.

1. 명령을 실행한 후 인증서를 신뢰하라는 메시지가 표시됩니다. 인증서가 신뢰할 수 있는지 확인하고 가져오기를 완료하려면 `yes`를 입력합니다.

1. JRE 외에도 IDE 자체에 인증서를 추가해야 할 수도 있습니다. 자세한 내용은 JetBrains 설명서에서 [서버 인증서](https://www.jetbrains.com/help/idea/settings-tools-server-certificates.html)를 참조하세요.

#### Visual Studio Code에서 인증서 구성
<a name="configure-proxy-VSC"></a>

프록시 서버에서 사용하는 SSL 또는 TLS 인증서를 신뢰하도록 Visual Studio Code를 구성하려면 운영 체제에 대해 다음 프록시 설정을 구성했는지 확인합니다.

##### macOS의 Visual Studio Code에서 인증서 구성
<a name="certs-mac"></a>

macOS의 Visual Studio Code에 대한 다음 프록시 설정을 구성합니다.

##### macOS 키체인에 인증서 추가
<a name="w2aac11c16c17c13c23b7b9c11b5b1b5"></a>

아직 사용하지 않은 경우 프록시 서버에서 사용하는 인증서를 macOS 키체인에 추가해야 합니다. 키체인에 인증서를 추가하는 방법에 대한 자세한 내용은 키체인 액세스 사용 설명서의 [Mac에서 키체인 액세스를 사용하여 키체인에 인증서 추가](https://support.apple.com/guide/keychain-access/add-certificates-to-a-keychain-kyca2431/mac)를 참조하세요.

##### Mac CA VSCode 확장 설치
<a name="w2aac11c16c17c13c23b7b9c11b5b1b7"></a>

[Mac CA VSCode 확장](https://marketplace.visualstudio.com/items?itemName=linhmtran168.mac-ca-vscode)을 사용하면 Amazon Q가 Mac의 키체인 액세스에 추가한 인증서에 액세스할 수 있습니다.

확장을 설치하려면 다음을 수행하세요.

1. VS Code 확장 창에서 `mac-ca-vscode`를 검색하고 **설치**를 선택합니다.

1. VS Code를 다시 시작합니다.

##### macOS의 VS Code에서 프록시 설정 업데이트
<a name="w2aac11c16c17c13c23b7b9c11b5b1b9"></a>

다음 설정을 업데이트하여 VS Code가 프록시에 맞게 올바르게 구성되었는지 확인합니다.

1. VS Code에서 설정을 엽니다.

1. 검색줄에 `proxy`를 입력합니다.

1. **Http: Proxy** 필드에 프록시 URL을 추가합니다.

1. **Http: Proxy Strict SSL**의 선택을 취소합니다.

1. **Http: Proxy Support** 드롭다운 목록에서 **on**을 선택합니다.

1. 설정 검색창에 `http.experimental.systemCertificatesV2`를 입력합니다. **Http › Experimental: 시스템 인증서 V2**를 선택합니다.

##### Windows의 Visual Studio Code에서 인증서 구성
<a name="certs-windows"></a>

Windows의 Visual Studio Code에 대한 다음 프록시 설정을 구성합니다.

##### Windows에서 신뢰할 수 있는 루트 인증서로 인증서 추가
<a name="w2aac11c16c17c13c23b7b9c11b5b3b5"></a>

아직 사용하지 않은 경우 프록시 서버에서 사용하는 인증서를 Windows의 신뢰할 수 있는 루트 인증 기관 스토어에 추가해야 합니다. 인증서를 추가하려면 다음 절차를 완료합니다.

1. 검색 도구 또는 실행 명령 창을 엽니다.

1. 다음을 입력하여 인증서 관리자 도구를 엽니다.

   ```
   certmgr.msc
   ```

1. **신뢰할 수 있는 루트 인증 기관** 스토어를 선택합니다.

1. **인증서**를 마우스 오른쪽 버튼으로 클릭하고 **모든 작업**을 선택한 다음 **가져오기...**를 선택합니다.

1. 제공된 지침에 따라 프록시 인증서를 가져옵니다.

1. 인증서를 가져온 후 인증서가 추가되었는지 확인합니다.

   **신뢰할 수 있는 루트 인증 기관** 스토어에서 **인증서**를 두 번 클릭합니다. 추가한 인증서를 마우스 오른쪽 버튼으로 클릭하고 **속성**을 선택합니다. **인증서 목적**에서 **이 인증서의 모든 목적 활성화** 옵션을 선택해야 합니다.

##### Win-CA VSCode 확장 설치
<a name="w2aac11c16c17c13c23b7b9c11b5b3b7"></a>

[Win-CA VSCode 확장](https://marketplace.visualstudio.com/items?itemName=ukoloff.win-ca)을 사용하면 Amazon Q가 Windows의 신뢰할 수 있는 루트 인증서에 추가한 인증서에 액세스할 수 있습니다.

확장을 설치하려면 다음을 수행하세요.

1. VS Code 설정 창에서 `win-ca `를 검색합니다.

1. **삽입** 드롭다운 목록에서 **추가**를 선택합니다.

##### Windows의 VS Code에서 프록시 설정 업데이트
<a name="w2aac11c16c17c13c23b7b9c11b5b3b9"></a>

다음 설정을 업데이트하여 VS Code가 프록시에 맞게 올바르게 구성되었는지 확인합니다.

1. VS Code에서 설정을 엽니다.

1. 검색줄에 `proxy`를 입력합니다.

1. **Http: Proxy** 필드에 프록시 URL을 추가합니다.

1. **Http: Proxy Strict SSL**의 선택을 취소합니다.

1. **Http: Proxy Support** 드롭다운 목록에서 **on**을 선택합니다.

1. 설정 검색창에 `http.experimental.systemCertificatesV2`를 입력합니다. **Http › Experimental: 시스템 인증서 V2**를 선택합니다.

1. VS Code를 다시 시작합니다.

### Amazon S3에 액세스 허용
<a name="allowlist-s3-bucket"></a>

트랜스포메이션하는 동안 Amazon Q는 서비스 소유 Amazon S3 버킷에 코드를 업로드합니다. 네트워크 또는 조직이 Amazon S3에 대한 액세스를 구성하지 않은 경우 Amazon Q는 프로젝트를 업로드할 수 없습니다.

Amazon Q가 프로젝트를 업로드할 수 있도록 하려면 Amazon S3에 대한 액세스를 허용하도록 프록시 구성 및 데이터 손실 방지(DLP) 정책과 같은 기타 네트워크 구성 요소가 구성되어 있는지 확인합니다. Amazon Q가 프로젝트를 업로드하는 Amazon S3 버킷을 허용해야 할 수도 있습니다. 자세한 내용은 [허용 목록에 추가하는 Amazon S3 버킷 URL 및 ARN](firewall.md#data-perimeters) 단원을 참조하십시오.

대규모 프로젝트를 트랜스포메이션하면 DLP 정책 또는 기타 네트워크 구성 요소가 Amazon S3 버킷을 허용하도록 구성되지 않은 경우 지연이 발생하여 업로드가 성공하지 못할 수 있습니다. 버킷을 허용 목록에 추가하지 않도록 선택하는 경우 Amazon Q가 업로드할 수 있도록 더 작은 프로젝트를 트랜스포메이션해야 할 수 있습니다.

## Maven 명령이 실패하는 이유는 무엇입니까?
<a name="maven-commands-failing"></a>

다음은 JetBrains 및 Visual Studio Code IDE에서 볼 수 있는 Maven 구성 문제입니다. 문제를 해결했는데 여전히 Maven 오류가 표시되는 경우 프로젝트에 문제가 있을 수 있습니다. 오류 로그의 정보를 사용하여 프로젝트의 문제를 해결한 다음 프로젝트를 다시 트랜스포메이션합니다.

### JetBrains에서 Maven 구성 업데이트
<a name="jetbrains"></a>

Maven 명령 문제로 인해 JetBrains에서의 트랜스포메이션이 실패하면 **실행** 탭에 오류 로그가 표시됩니다. 로그의 정보를 사용하여 문제를 해결합니다. 다음은 해결해야 할 몇 가지 문제입니다.
+ Maven 홈 경로가 **번들링됨**으로 설정되어 있는지 확인합니다. **설정**으로 이동한 다음 **빌드, 실행, 배포** 섹션을 확장합니다. **빌드 도구** 섹션을 확장한 다음 **Maven**을 확장합니다. **Maven 홈 경로** 드롭다운 목록에서 **번들링됨**을 선택합니다.
+ Java 런타임 환경(JRE)이 프로젝트 JDK를 사용하고 있는지 확인합니다. **설정**으로 이동한 다음 **빌드, 실행, 배포** 섹션을 확장합니다. **Maven**을 확장하고 **실행기**를 선택합니다. **JRE** 드롭다운 목록에서 **프로젝트 JDK 사용**을 선택합니다.
+ Maven이 활성화되어 있는지 확인합니다. **설정**으로 이동하여 **플러그인**을 선택합니다. Maven을 검색하고 Maven 플러그인을 선택합니다. **활성화** 버튼이 표시되면 선택하여 Maven을 활성화합니다.

### Visual Studio Code에서 Maven 구성 업데이트
<a name="vscode"></a>

Maven 명령 문제로 인해 VS Code에서의 트랜스포메이션이 실패하면 오류 로그가 포함된 텍스트 파일이 새 탭에서 열립니다. 로그의 정보를 사용하여 문제를 해결합니다.

다음 옵션 중 하나를 구성했는지 확인합니다.
+ 프로젝트에는 프로젝트 루트 폴더의 Maven 래퍼가 포함되어 있습니다.
+ Amazon Q에서 지원하는 Maven 버전은 `PATH`에서 사용할 수 있습니다.

자세한 내용은 [내 `PATH`에 Maven을 추가하려면 어떻게 해야 합니까?](#add-maven-to-path) 섹션을 참조하세요.

## 내 `PATH`에 Maven을 추가하려면 어떻게 해야 합니까?
<a name="add-maven-to-path"></a>

Maven 래퍼를 사용하지 않고 VS Code에서 코드를 트랜스포메이션하려면 Maven을 설치하고 `PATH` 변수에 추가해야 합니다.

이미 Maven을 올바르게 설치했는지 확인하려면 Visual Studio Code 외부의 새 OS 터미널에서 `mvn -v`를 실행합니다. Maven 버전과 함께 출력이 표시됩니다.

Visual Studio Code 터미널에서 출력을 얻지만 OS 터미널에서는 출력을 얻지 못하거나 명령을 찾을 수 없는 경우 `PATH`에 Maven을 추가해야 합니다.

 Maven을 `PATH`에 추가하려면 시스템의 지침을 따릅니다.

------
#### [ macOS ]

macOS `PATH`에 Maven을 추가하려면 다음 단계를 완료합니다.

1. Maven 설치 디렉터리 또는 Maven을 설치한 폴더를 찾아 해당 폴더에 경로를 저장합니다.

1. 선택한 편집기에서 쉘의 구성 파일을 엽니다. 최신 macOS 버전의 경우 기본 쉘은 `zsh`이고 기본 구성 파일은 `~/.zshrc`에 있습니다.

   구성 파일 하단에 다음 줄을 추가합니다. `M2_HOME`의 값을 1단계에서 저장한 경로로 설정합니다.

   ```
   export M2_HOME="your Maven installation directory"
   export PATH="${M2_HOME}/bin:${PATH}"
   ```

   이러한 명령을 사용하면 모든 터미널에서 `mvn` 명령을 사용할 수 있습니다.

1. 모든 OS 터미널 창을 닫고 모든 Visual Studio Code 인스턴스를 종료합니다.

1. `PATH`에 Maven이 추가되었는지 확인하려면 새 OS 터미널을 열고 다음 명령을 실행합니다.

   ```
   mvn -v
   ```

   Maven 버전과 함께 출력이 표시됩니다.

1. Maven 출력이 표시되면 Visual Studio Code를 다시 시작합니다. 시스템을 다시 시작해야 할 수도 있습니다. 새 Visual Studio Code 터미널을 열고 다음 명령을 실행합니다.

   ```
   mvn -v
   ```

   출력은 4단계의 출력과 동일해야 합니다. Visual Studio Code 출력이 다른 경우 다음을 수행하여 설정이 올바른지 확인합니다.
   + Visual Studio Code에서 `PATH` 변수를 확인합니다. IDE 확장이 로컬 `PATH` 변수와 다르게 `PATH`를 변경할 수 있습니다. 확장을 제거하여 `PATH`에서 제거합니다.
   + Visual Studio Code에서 기본 쉘을 확인합니다. `zsh`가 아닌 다른 것으로 설정된 경우 쉘에 대해 이 단계를 반복합니다.

------
#### [ Windows ]

Windows `PATH`에 Maven을 추가하려면 다음 단계를 완료합니다.

1. Maven 설치 디렉터리 또는 Maven을 설치한 폴더를 찾아 해당 폴더에 경로를 저장합니다.

1. 환경 변수 창을 엽니다.

   1. Windows 버튼을 선택하여 검색 창을 엽니다.

   1. `Edit environment variables for your account`를 입력하고 선택합니다.

1. **환경 변수** 창에서 경로 변수를 찾습니다. 경로 변수가 이미 있는 경우 **편집...**을 선택하여 업데이트합니다. 경로 변수가 표시되지 않으면 **새로 만들기...**를 선택하여 추가합니다.

1. 나타나는 **환경 변수 편집** 창에서 기존 경로를 두 번 클릭하여 편집하거나 **새로 만들기**를 선택하여 새 경로 항목을 추가합니다.

   기존 Maven 경로 항목을 1단계에서 저장한 경로로 바꾸거나 경로를 새 항목으로 추가합니다. 다음 예제와 같이 경로 끝에 접미사로 `\bin`을 추가합니다.

   ```
   C:\Users\yourusername\Downloads\apache-maven-3.9.6-bin\apache-maven-3.9.6\bin
   ```

1. **확인**을 선택하여 경로 항목을 저장한 다음 **환경 변수** 창에서 **확인**을 다시 선택합니다.

1. 새 명령 프롬프트를 열고 다음 명령을 실행합니다.

   ```
   mvn -v
   ```

   Maven 버전과 함께 출력이 표시됩니다.

------

## Amazon Q가 코드를 빌드할 수 없는 이유는 무엇입니까?
<a name="build-fail"></a>

Amazon Q가 코드를 빌드할 때 트랜스포메이션이 실패하는 경우 Amazon Q가 코드를 빌드하는 환경에 맞게 프로젝트가 제대로 구성되지 않을 수 있습니다. 빌드 구성 또는 코드 구현을 업데이트해야 할 수 있습니다.

Amazon Q에서 제공하는 빌드 로그 출력을 검토하여 프로젝트에 변경할 수 있는 사항이 있는지 확인합니다. 다음은 Amazon Q가 코드를 빌드하지 못하게 할 수 있는 몇 가지 일반적인 문제입니다.

### pom.xml에서 절대 경로 제거
<a name="remove-absolute-path"></a>

pom.xml 파일에 절대 경로가 있는 경우 Amazon Q는 관련 파일을 찾을 수 없으므로 코드를 빌드하지 못할 수 있습니다.

다음은 `pom.xml` 파일에 있을 수 있는 절대 경로의 예입니다.

```
<toolspath>
    <path>/Library/Java/JavaVirtualMachines/jdk-11.0.11.jdk/Contents/Home/lib/tools.jar</path>
</toolspath>
```

절대 경로를 사용하는 대신 포인터를 사용하여 상대 경로를 생성할 수 있습니다. 다음은 이전 절대 경로를 상대 경로로 대체하는 방법의 예입니다.

```
<toolspath>
    <path>${java.home}/../lib/tools.jar</path>
</toolspath>
```

### 유닛 테스트에서 로컬 또는 외부 데이터베이스 제거
<a name="remove-external-databases"></a>

Amazon Q는 코드를 빌드할 때 프로젝트의 모든 유닛 테스트를 실행합니다. 유닛 테스트가 로컬 또는 외부 데이터베이스를 호출하는 경우 Amazon Q는 데이터베이스에 액세스할 수 없으므로 빌드가 실패합니다. 빌드가 실패하지 않도록 하려면 트랜스포메이션을 제출하기 전에 유닛 테스트에서 데이터베이스 호출을 제거하거나 유닛 테스트를 제거해야 합니다.

## 55분 후에 트랜스포메이션이 실패한 이유는 무엇인가요?
<a name="build-time-limit"></a>

55분 후에 코드 트랜스포메이션 작업이 실패하는 경우 코드 빌드 시간이 빌드 시간 제한을 초과할 수 있습니다. 현재 코드를 빌드하는 데 걸리는 시간은 55분입니다.

로컬 빌드 시간이 55분 이상 걸리는 경우 코드를 트랜스포메이션하는 데 걸리는 프로젝트의 빌드 시간을 줄입니다. 로컬 빌드가 코드 트랜스포메이션을 사용한 빌드보다 빠른 경우 프로젝트에서 실패할 수 있는 작업을 확인하거나 다른 환경에서 더 오랜 시간이 걸릴 수 있습니다. 장기 실행 테스트 사례를 비활성화하는 것이 좋습니다. 또한 보안 IDE 환경 또는 인터넷에서 사용할 수 없는 리소스에 액세스하려는 시도에는 제한 시간을 사용하는 것도 좋습니다.

## 트랜스포메이션된 코드를 다운로드할 수 없는 이유는 무엇입니까?
<a name="download-code-fail"></a>

트랜스포메이션이 완료된 후 코드를 다운로드할 수 없는 경우 다음 문제 중 하나 때문일 수 있습니다. Amazon Q에서 표시되는 오류에 해당하는 항목을 참조하세요.

**Topics**
+ [프로젝트 크기 축소](#reduce-project-size-output)
+ [30일 이내에 코드 diff 다운로드](#download-30-hrs)
+ [IDE에서 프록시 설정 구성](#configure-proxy-download)
+ [JetBrains 프록시 설정에서 와일드카드 문자 제거](#remove-wildcard)

### 프로젝트 크기 축소
<a name="reduce-project-size-output"></a>

트랜스포메이션이 완료되면 Amazon Q는 업그레이드된 코드와의 차이와 변경 사항에 대한 정보가 포함된 트랜스포메이션 요약이 포함된 출력 아티팩트를 생성합니다. IDE가 출력 아티팩트를 다운로드하려면 출력 아티팩트가 1GB 이하여야 합니다.

출력 아티팩트가 한도를 초과하는 경우 업그레이드된 코드 또는 트랜스포메이션 요약을 다운로드할 수 없습니다. 큰 출력 아티팩트를 방지하기 위해 작은 프로젝트를 트랜스포메이션해 보세요. 문제가 지속되면에 문의하십시오 지원. Amazon Q 지원 에 문의하는 방법에 대한 자세한 내용은 섹션을 참조하세요[Amazon Q Developer를 사용하여 지원와 채팅](support-chat.md).

### 30일 이내에 코드 diff 다운로드
<a name="download-30-hrs"></a>

업그레이드된 코드가 포함된 코드 diff 파일은 트랜스포메이션이 완료된 후 30일 동안만 사용할 수 있습니다. 트랜스포메이션이 완료된 후 30일이 지난 경우 트랜스포메이션을 다시 시작하여 diff 파일을 다운로드합니다.

### IDE에서 프록시 설정 구성
<a name="configure-proxy-download"></a>

Amazon Q는 서비스 소유 Amazon S3 버킷에서 업그레이드된 코드를 다운로드합니다. 다운로드 프로세스의 일환으로 SSL 또는 TLS 인증서를 사용하여 Amazon S3와 IDE 간의 통신을 설정합니다. 프록시 서버를 사용하는 경우 프록시 서버에서 사용하는 SSL 또는 TLS 인증서를 신뢰할 수 있어야 합니다. 그렇지 않으면 Amazon Q가 프로젝트를 업로드할 수 없습니다.

코드를 다운로드하려면 인증서를 신뢰하거나 다른 프록시 설정을 업데이트하도록 IDE를 구성해야 할 수 있습니다. 프록시 설정 업데이트에 대한 자세한 내용은 [IDE에서 프록시 설정 구성](#configure-proxy) 섹션을 참조하세요.

### JetBrains 프록시 설정에서 와일드카드 문자 제거
<a name="remove-wildcard"></a>

JetBrains IDE에서 프록시 설정을 구성한 경우 업그레이드된 코드를 다운로드할 때 다음 오류가 표시될 수 있습니다.

```
software.amazon.awssdk.core.exception.SdkClientException: 
Unable to execute HTTP request: Dangling meta character '*' near index 0
```

이는 IDE 프록시 설정의 **프록시 없음** 필드에 와일드카드 문자(\$1)가 존재하기 때문일 수 있습니다. Amazon Q에서 사용하는 Java SDK는 이 필드의 와일드카드 항목을 지원하지 않습니다.

코드를 다운로드하려면 **프록시 없음** 필드에서 와일드카드를 제거한 다음 IDE를 다시 시작합니다. 프록시를 우회해야 하는 호스트를 지정해야 하는 경우 와일드카드 대신 정규식을 사용합니다. JetBrains IDE에서 프록시 설정을 업데이트하려면 JetBrains 설명서의 [HTTP 프록시](https://www.jetbrains.com/help/idea/settings-http-proxy.html)를 참조하세요.

## 코드 트랜스포메이션 로그에 액세스하려면 어떻게 해야 하나요?
<a name="logs"></a>

### JetBrains의 로그에 액세스
<a name="jetbrains-logs"></a>

JetBrains 로그 파일에 액세스하는 방법에 대한 자세한 내용은 JetBrains 설명서의 [IDE 로그 파일 찾기](https://intellij-support.jetbrains.com/hc/en-us/articles/207241085-Locating-IDE-log-files)를 참조하세요.

JetBrains의 Amazon Q에서 이 내보낸 로그를 찾으려면 IDE 로그에서 다음 문자열을 검색하세요.

```
software.aws.toolkits.jetbrains.services.codemodernizer
```

코드 트랜스포메이션 로그는 이전 문자열로 시작합니다. Maven에서 생성된 로그는 **실행** 탭에 표시되며 로그 항목 앞뒤에 이전 문자열이 있습니다.

### Visual Studio Code의 로그에 액세스
<a name="vsc-logs"></a>

VS Code의 Amazon Q에서 내보낸 로그를 찾으려면 다음 단계를 완료합니다.

1. 상단 탐색 모음에서 **보기**를 선택한 다음 **명령 팔레트**를 선택합니다.

1. 나타나는 명령 팔레트에서 `Amazon Q: View Logs`를 검색합니다.

1. 로그는 IDE에서 열립니다. `CodeTransformation`에 대한 로그 파일을 검색하려면 `CMD + F` 또는 `Control + F`를 사용합니다.

VS Code의 코드 트랜스포메이션 로그에는 `CodeTransformation:` 접두사가 붙습니다. 다음은 Maven 복사 종속성 오류에 대해 VS Code에서 생성된 로그의 예입니다.

```
2024-02-12 11:29:16 [ERROR]: CodeTransformation: Error in running Maven copy-dependencies command mvn = /bin/sh: mvn: command not found
```

## 트랜스포메이션 작업 ID는 어떻게 찾을 수 있나요?
<a name="job-id"></a>

### JetBrains에서 작업 ID 찾기
<a name="jetbrains"></a>

JetBrains에서 트랜스포메이션 작업 ID를 찾으려면 **Transformation Hub**의 **트랜스포메이션 세부 정보** 탭으로 이동하여 **작업 상태 표시**(시계) 아이콘을 선택합니다.

### Visual Studio Code에서 작업 ID 찾기
<a name="vs-code"></a>

VS 코드에서 트랜스포메이션 작업 ID를 찾으려면 **Transformation Hub**로 이동하여 **작업 상태 표시**(시계) 아이콘을 선택합니다.

# Amazon Q Developer를 사용하여 .NET 애플리케이션 트랜스포메이션
<a name="transform-dotnet-IDE"></a>

Amazon Q Developer는 생성형 AI 기반 리팩터링 워크플로를 통해 Windows 기반 .NET 애플리케이션을 Linux 호환 크로스 플랫폼 .NET 애플리케이션으로 포팅할 수 있습니다. 또한 Amazon Q를 사용하면 이전 버전의 크로스 플랫폼 .NET 애플리케이션을 최신 버전으로 업그레이드할 수 있습니다.

.NET 솔루션 또는 프로젝트를 트랜스포메이션하기 위해 Amazon Q는 코드베이스를 분석하고, 애플리케이션을 포팅하는 데 필요한 업데이트를 결정하고, 트랜스포메이션이 시작되기 전에 트랜스포메이션 계획을 생성합니다. 이 분석 중에 Amazon Q는 .NET 솔루션 또는 프로젝트를 트랜스포메이션 계획에서 볼 수 있는 코드 그룹으로 나눕니다. *코드 그룹*은 DLL(동적 링크 라이브러리) 또는 실행 파일과 같은 빌드 가능한 코드 단위를 함께 생성하는 프로젝트 및 모든 종속 항목입니다.

트랜스포메이션 중에 Amazon Q는 진행 상황을 모니터링할 수 있는 Transformation Hub에서 단계별 업데이트를 제공합니다. 애플리케이션을 트랜스포메이션한 후 Amazon Q는 제안된 변경 사항이 포함된 요약을 diff 보기에서 생성하여 변경 사항을 수락하기 전에 선택적으로 확인할 수 있습니다. 변경 사항을 수락하면 Amazon Q에서는 .NET 솔루션 또는 프로젝트를 현재 위치에서 업데이트합니다.

Amazon Q는 .NET 애플리케이션을 Linux로 포팅하는 네 가지 키 작업을 수행합니다.
+ **언어 버전 업그레이드** - 오래된 C\$1 버전을 Linux 호환 C\$1 버전으로 바꿉니다.
+ **.NET 프레임워크에서 크로스 플랫폼 .NET으로 마이그레이션** - Windows 종속 .NET 프레임워크에서 Linux와 호환되는 크로스 플랫폼 .NET으로 프로젝트 및 패키지를 마이그레이션합니다.
+ **Linux 호환성을 위한 코드 재작성** - 더 이상 사용되지 않거나 비효율적인 코드 구성 요소를 리팩터링하고 재작성합니다.
+ **Linux 호환성 준비 보고서 생성 **- Linux에서 코드를 빌드하고 실행하기 위해 사용자 개입이 필요한 개방형 작업의 경우 Amazon Q는 트랜스포메이션 후 애플리케이션을 구성하는 데 필요한 작업에 대한 자세한 보고서를 제공합니다.

Amazon Q가 .NET 트랜스포메이션을 수행하는 방법에 대한 자세한 내용은 [작동 방식](how-dotnet-transformation-works.md)을 참조하세요.

**Topics**
+ [할당량](#quotas-dotnet-transformation)
+ [Visual Studio에서 Amazon Q Developer를 사용하여 .NET 애플리케이션 포팅](port-dotnet-application.md)
+ [Amazon Q Developer가 .NET 애플리케이션을 트랜스포메이션하는 방법](how-dotnet-transformation-works.md)
+ [IDE에서 .NET 트랜스포메이션 문제 해결](troubleshooting-dotnet-transformation-IDE.md)

## 할당량
<a name="quotas-dotnet-transformation"></a>

IDE에서 Amazon Q를 사용한 .NET 트랜스포메이션은 다음 할당량을 유지합니다.
+ **작업당 코드 줄** - Amazon Q가 지정된 트랜스포메이션 작업에서 트랜스포메이션할 수 있는 최대 코드 줄 수입니다. 이는 .NET 트랜스포메이션에 대한 월별 총 한도이기도 합니다.
+ **동시 작업** - 동시에 실행할 수 있는 최대 트랜스포메이션 작업 수입니다. 이 할당량은 [Java 트랜스포메이션](transform-java.md)을 포함하여 IDE의 모든 트랜스포메이션에 적용됩니다.


| Resource | 할당량 | 
| --- | --- | 
| 작업당 코드 줄 | 코드 100,000줄 | 
| 동시 작업 |  사용자당 작업 1개  AWS 계정당 작업 2개  | 

# Visual Studio에서 Amazon Q Developer를 사용하여 .NET 애플리케이션 포팅
<a name="port-dotnet-application"></a>

Visual Studio의 Amazon Q Developer를 사용하여 Windows 기반 .NET 애플리케이션을 Linux 호환 크로스 플랫폼 .NET 애플리케이션으로 포팅하려면 다음 단계를 완료하세요.

## 1단계: 사전 조건
<a name="transform-dotnet-prerequisites"></a>

계속하기 전에 [IDE의 Amazon Q 설정](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/q-in-IDE.html) 단계를 완료했는지 확인하세요.

.NET 트랜스포메이션 작업을 시작하기 전에 애플리케이션에 다음 사전 조건이 충족되는지 확인합니다.
+ 애플리케이션에는 C\$1으로 작성된 .NET 프로젝트만 포함되어 있습니다.
+ 애플리케이션에는 Microsoft에서 작성한 NuGet 패키지 종속성만 있습니다.
+ 애플리케이션은 UTF-8 문자만 사용합니다. 애플리케이션이 non-UTF-8 문자를 사용하는 경우에도 Amazon Q는 코드를 트랜스포메이션하려고 시도합니다.
+ 애플리케이션이 IIS(인터넷 정보 서비스)에 종속되어 있는 경우 기본 IIS 구성만 사용됩니다.
+ Amazon Q는 선택한 프로젝트의 유형과 해당 종속성을 평가하여 코드 그룹을 생성합니다. 코드 그룹은 다음 프로젝트 유형만 가질 수 있습니다.
  + 콘솔 애플리케이션
  + 클래스 라이브러리 
  + 웹 API
  + WCF 서비스
  + MVC(모델 보기 컨트롤러) 및 SPA(단일 페이지 애플리케이션)의 비즈니스 로직 계층
  + 테스트 프로젝트

**참고**  
Amazon Q는 Razor 뷰 또는 WebForms ASPX 파일과 같은 UI 계층 구성 요소 트랜스포메이션을 지원하지 않습니다. Amazon Q가 솔루션 또는 프로젝트에서 UI 계층 구성 요소를 감지하면 UI 계층 구성 요소를 제외하여 부분 트랜스포메이션을 수행하며 대상 .NET 버전에서 코드를 빌드할 수 있도록 추가로 리팩터링해야 할 수 있습니다.

## 2단계: 애플리케이션 트랜스포메이션
<a name="transform-dotnet-app"></a>

.NET 솔루션 또는 프로젝트를 트랜스포메이션하려면 다음 절차를 완료하세요.

1. Visual Studio에서 트랜스포메이션하려는 C\$1 기반 솔루션 또는 프로젝트를 엽니다.

1. 편집기에서 C\$1 코드 파일을 엽니다.

1. **솔루션 탐색기**를 선택합니다.

1. 솔루션 탐색기에서 트랜스포메이션하려는 솔루션 또는 프로젝트를 마우스 오른쪽 버튼으로 클릭한 다음 **Amazon Q Developer로 포팅**을 선택합니다.

1. **Amazon Q Developer로 포팅** 창이 나타납니다.

   선택한 솔루션 또는 프로젝트는 **트랜스포메이션할 솔루션 또는 프로젝트 선택** 드롭다운 메뉴에서 선택됩니다. 메뉴를 확장하여 트랜스포메이션할 다른 솔루션 또는 프로젝트를 선택할 수 있습니다.

   **.NET 대상 선택** 드롭다운 메뉴에서 업그레이드할 .NET 버전을 선택합니다.

1. **확인**을 선택하여 트랜스포메이션을 시작합니다.

1. Amazon Q가 코드 트랜스포메이션을 시작합니다. 생성되는 트랜스포메이션 계획을 보고 애플리케이션을 트랜스포메이션하는 방법에 대한 세부 정보를 확인할 수 있습니다.

   트랜스포메이션 기간 동안 진행 상황을 모니터링할 수 있는 **Transformation Hub**가 열립니다. Amazon Q가 **작업 트랜스포메이션 시작 대기** 단계를 완료한 후 트랜스포메이션 기간 동안 프로젝트 또는 솔루션에서 벗어날 수 있습니다.

1. 트랜스포메이션이 완료되면 **Transformation Hub**로 이동하여 **diffs 보기**를 선택하여 diff 보기에서 Amazon Q의 제안된 변경 사항을 검토합니다.

1. Amazon Q의 변경 사항에 대한 세부 정보를 보려면 **코드 트랜스포메이션 요약 보기**를 선택합니다. 요약을 **.md로 다운로드**를 선택하여 트랜스포메이션 요약을 다운로드할 수도 있습니다.

   **코드 그룹** 테이블의 항목 중 Linux 포팅 상태에서 입력이 필요한 항목이 있는 경우 Linux에서 애플리케이션을 실행하려면 일부 파일을 수동으로 업데이트해야 합니다.

   1. **작업** 드롭다운 메뉴에서 **Linux 준비 보고서 다운로드**를 선택합니다.

   1. 애플리케이션이 Linux와 호환되기 전에 완료해야 하는 프로젝트 또는 솔루션을 변경하면 .csv 파일이 열립니다. 여기에는 업데이트해야 하는 프로젝트 및 파일, 업데이트할 항목에 대한 설명, 문제에 대한 설명이 포함됩니다. Linux 준비 문제를 해결하는 방법에 대한 아이디어는 **권장 사항** 열을 사용합니다.

1. 파일을 업데이트하려면 **작업** 드롭다운 메뉴에서 **변경 수락**을 선택합니다.

# Amazon Q Developer가 .NET 애플리케이션을 트랜스포메이션하는 방법
<a name="how-dotnet-transformation-works"></a>

Amazon Q Developer를 사용한 .NET 트랜스포메이션의 작동 방식에 대한 자세한 내용은 다음 섹션을 검토하세요.

## 애플리케이션 분석 및 트랜스포메이션 계획 생성
<a name="analyzing-app-generating-plan"></a>

트랜스포메이션이 시작되기 전에 Amazon Q는 로컬에서 코드를 빌드하여 트랜스포메이션을 위해 코드를 빌드하고 올바르게 구성했는지 확인합니다. 그런 다음 Amazon Q는 안전하고 암호화된 빌드 환경에 코드를 업로드하고 AWS, 코드베이스를 분석하고, 애플리케이션을 이식하는 데 필요한 업데이트를 결정합니다.

이 분석 중에 Amazon Q는 .NET 솔루션 또는 프로젝트를 코드 그룹으로 나눕니다. 코드 그룹은 DLL(동적 링크 라이브러리) 또는 실행 파일과 같은 빌드 가능한 코드 단위를 함께 생성하는 프로젝트 및 모든 종속 항목입니다. 트랜스포메이션할 모든 프로젝트 종속성을 선택하지 않은 경우에도 Amazon Q는 선택한 프로젝트를 빌드하는 데 필요한 종속성을 결정하고 트랜스포메이션합니다. 이렇게 하여 트랜스포메이션된 애플리케이션을 빌드하고 사용할 준비가 되도록 합니다.

코드를 분석한 후 Amazon Q는 코드 그룹 목록과 트랜스포메이션할 종속성을 포함하여 제안된 변경 사항을 간략하게 설명하는 트랜스포메이션 계획을 생성합니다.

## 애플리케이션 트랜스포메이션
<a name="transforming-app"></a>

트랜스포메이션을 시작하기 위해 Amazon Q는 코드를 보안 빌드 환경에 다시 빌드하여 원격으로 빌드할 수 있도록 합니다. 그러면 Amazon Q가 애플리케이션 포팅을 시작합니다. 이 작업은 가장 낮은 수준의 종속성부터 시작하여 높은 종속성으로 진행합니다. Amazon Q가 종속성을 포팅하는 데 문제가 발생하면 트랜스포메이션을 중지하고 오류의 원인에 대한 정보를 제공합니다.

트랜스포메이션에는 애플리케이션에 대한 다음 업데이트가 포함됩니다.
+ 오래된 코드 C\$1 버전을 Linux 호환 C\$1 버전으로 교체
+ 다음을 포함하여 .NET 프레임워크를 크로스 플랫폼 .NET으로 업그레이드 
  + 패키지, 라이브러리 및 API 식별 및 반복 교체
  + NuGet 패키지 및 API 업그레이드 및 교체
  + 크로스 플랫폼 런타임으로 전환
  + 미들웨어 설정 및 런타임 구성 업데이트
  + 프라이빗 또는 서드 파티 패키지 교체 
  + IIS 및 WCF 구성 요소 처리 
  + 빌드 오류 디버깅
+ 기존 코드를 포팅하기 위해 더 이상 사용되지 않고 비효율적인 코드 리팩터링 및 재작성을 포함하여 Linux 호환성을 위한 코드 재작성 

## 트랜스포메이션 요약 검토 및 변경 사항 수락
<a name="reviewing-summary-accepting-changes"></a>

트랜스포메이션이 완료되면 Amazon Q는 변경된 파일 수, 업데이트된 패키지, 변경된 API 등 애플리케이션에 대해 제안된 업데이트에 대한 정보가 포함된 트랜스포메이션 요약을 제공합니다. 영향을 받는 파일 또는 파일 부분과 빌드 시도 중에 발생한 오류를 포함하여 실패한 트랜스포메이션에 플래그를 지정합니다. 빌드 로그가 포함된 빌드 요약을 보고 변경 사항에 대해 자세히 알아볼 수도 있습니다.

또한 트랜스포메이션 요약은 Linux 포팅 상태를 제공합니다. 이 상태는 애플리케이션 Linux를 호환하기 위해 추가 사용자 입력이 필요한지 여부를 나타냅니다. 코드 그룹의 항목 중 하나라도 사용자의 입력이 필요한 경우 Amazon Q가 빌드 시 해결할 수 없는 Windows별 고려 사항이 포함된 Linux 준비 보고서를 다운로드합니다. 코드 그룹 또는 파일에 대한 입력이 필요하면 보고서를 검토하여 여전히 수행해야 하는 변경 유형에 대한 세부 정보를 확인하세요. 해당하는 경우 코드를 업데이트하는 방법에 대한 권장 사항도 함께 확인하세요. Linux에서 애플리케이션을 실행하려면 먼저 이러한 변경을 수동으로 수행해야 합니다.

파일의 현재 위치 업데이트로 수락하기 전에 Amazon Q가 diff 보기에서 수행한 제안된 변경 사항을 검토할 수 있습니다. 파일을 업데이트하고 Linux 준비 보고서의 항목을 해결하면 애플리케이션이 크로스 플랫폼 .NET에서 실행될 준비가 된 것입니다.

# IDE에서 .NET 트랜스포메이션 문제 해결
<a name="troubleshooting-dotnet-transformation-IDE"></a>

다음 섹션을 사용하여 Amazon Q Developer의 IDE에서 .NET 트랜스포메이션과 관련된 일반적인 문제를 해결합니다.

## 작업이 진행 중인지 알 수 있는 방법은 무엇인가요?
<a name="job-progressing"></a>

Amazon Q가 Transformation Hub의 단계에서 오랜 시간을 소비하는 것처럼 보이면, 출력 로그에서 작업이 여전히 활성 상태인지 확인할 수 있습니다. 진단 메시지가 생성되는 경우 작업은 여전히 활성 상태입니다.

출력을 확인하려면 Visual Studio에서 **출력** 탭을 선택합니다. **출력 표시 출처:** 메뉴에서 **Amazon Q Language Client**를 선택합니다.

다음 스크린샷은 Amazon Q가 트랜스포메이션 중에 생성하는 출력의 예를 보여줍니다.

![\[Amazon Q Language Client의 출력을 보여주는 Amazon Q Developer Code Transformation Hub의 스크린샷입니다.\]](http://docs.aws.amazon.com/ko_kr/amazonq/latest/qdeveloper-ug/images/code-transform-troubleshoot4.png)


## 일부 프로젝트가 트랜스포메이션을 위해 선택되지 않은 이유는 무엇인가요?
<a name="projects-not-selected"></a>

Amazon Q는 지원되는 프로젝트 유형만 C\$1 언어로 트랜스포메이션할 수 있습니다. 현재 Amazon Q는 VB.NET 또는 F\$1 언어로 작성된 UI 계층 구성 요소 또는 프로젝트 포팅을 지원하지 않습니다. 지원되는 프로젝트 유형 및 .NET 프로젝트를 트랜스포메이션하기 위한 기타 사전 조건 목록은 [1단계: 사전 조건](port-dotnet-application.md#transform-dotnet-prerequisites) 섹션을 참조하세요.

## 프로젝트 또는 솔루션이 트랜스포메이션되지 않는 경우 지원을 받으려면 어떻게 해야 하나요?
<a name="get-support"></a>

문제를 직접 해결할 수 없는 경우 또는 AWS 계정 팀에 문의하여 지원 지원 사례를 제출할 수 있습니다.

지원을 받으려면가 실패한 작업을 조사할 AWS 수 있도록 변환 작업 ID를 제공합니다. 트랜스포메이션 작업 ID를 찾으려면 Visual Studio에서 **출력** 탭을 선택합니다. **출력 표시 출처:** 메뉴에서 **Amazon Q Language Client**를 선택합니다.

## 방화벽이 트랜스포메이션 작업을 방해하지 않도록 하려면 어떻게 해야 하나요?
<a name="firewall-inteference"></a>

조직에서 방화벽을 사용하는 경우 Visual Studio의 트랜스포메이션을 방해할 수 있습니다. Node.js에서 보안 검사를 일시적으로 비활성화하여 트랜스포메이션 실행을 방해하는 문제를 해결하거나 테스트할 수 있습니다.

환경 변수 `NODE_TLS_REJECT_UNAUTHORIZED`는 중요한 보안 검사를 제어합니다. `NODE_TLS_REJECT_UNAUTHORIZED`를 "0"으로 설정하면 Node.js의 무단 TLS/SSL 인증서 거부가 비활성화됩니다. 이는 다음을 의미합니다.
+ 자체 서명 인증서가 수락됩니다.
+ 만료된 인증서가 허용됩니다.
+ 호스트 이름이 일치하지 않는 인증서가 허용됩니다.
+ 다른 인증서 검증 오류가 무시됩니다.

프록시가 자체 인증서를 사용하는 경우 `NODE_TLS_REJECT_UNAUTHORIZED`를 비활성화하는 대신 다음 환경 변수를 설정할 수 있습니다.

```
NODE_OPTIONS = —use-openssl-ca
NODE_EXTRA_CA_CERTS = Path/To/Corporate/Certs
```

그렇지 않으면 프록시에서 `NODE_TLS_REJECT_UNAUTHORIZED`를 비활성화하는 데 사용하는 CA 인증서를 지정해야 합니다.

**Windows에서 NODE\$1TLS\$1REJECT\$1UNAUTHORIZED를 비활성화하려면:**

1. 시작 메뉴를 열고 **환경 변수**를 검색합니다.

1. **시스템 환경 변수 편집**을 선택합니다.

1. **시스템 속성** 창에서 **환경 변수**를 선택합니다.

1. **시스템 변수**에서 **새로 만들기**를 선택합니다.

1. **변수 이름**을 NODE\$1TLS\$1REJECT\$1UNAUTHORIZED로 설정하고 **변수 값**을 0으로 설정합니다.

1. **확인**을 선택하여 변경 사항을 저장합니다.

1. Visual Studio를 다시 시작합니다.

# Amazon Q Developer로 코드 설명 및 업데이트
<a name="explain-update-code"></a>

Amazon Q Developer는 통합 개발 환경(IDE)에서 특정 코드 라인을 설명하고 업데이트할 수 있습니다. 코드를 업데이트하려는 경우 Amazon Q에 지정된 코드 행 또는 블록을 변경하도록 요청하면 변경 사항을 반영하는 새 코드가 생성됩니다. 그런 다음 업데이트된 코드를 코드가 시작된 파일에 직접 삽입할 수 있습니다.

다음 옵션 중에서 선택할 수 있습니다.
+ **설명** - 코드를 자연어로 설명합니다.
+ **리팩터링** - 여러 개선 사항 중에서도 코드 가독성이나 효율성을 개선합니다.
+ **수정** - 코드를 디버그합니다.
+ **테스트 생성** - 현재 파일 또는 선택한 코드에 대한 유닛 테스트를 생성합니다.
+ **최적화** - 코드 성능을 개선합니다.
+ **프롬프트로 보내기** - 강조 표시된 코드를 Amazon Q 채팅 패널로 보내고 코드에 대해 궁금한 점을 질문합니다.

## Amazon Q로 코드 보내기
<a name="send-code"></a>

Amazon Q에서 코드를 설명하거나 업데이트하려면 다음 단계를 완료하세요.

1. IDE에서 코드 파일의 섹션을 강조 표시합니다.

1. 강조 표시된 코드를 마우스 오른쪽 버튼으로 클릭하여 컨텍스트 창을 엽니다. **Amazon Q**를 선택한 다음, **설명**, **리팩터링**, **수정**, **테스트 생성**, **최적화** 또는 **프롬프트로 보내기**를 선택합니다.

   **프롬프트로 보내기**를 선택하면 Amazon Q는 강조 표시된 코드를 채팅 패널에 복사하며, 여기에서 코드에 대한 질문을 입력할 수 있습니다.

1. 강조 표시된 코드를 새로 생성된 코드로 바꾸려면 코드를 복사하거나 **코드 삽입**을 선택하여 파일에 직접 삽입할 수 있습니다. Amazon Q가 원래 코드를 업데이트된 코드로 바꿉니다.

# Amazon Q Developer와 인라인 채팅
<a name="q-in-IDE-inline-chat"></a>

*인라인 채팅* 기능을 사용하면 IDE의 기본 코딩 창에서 Amazon Q와 채팅할 수 있습니다. 인라인 채팅 기능을 사용하려면 제안하려는 코드를 강조 표시하고 작은 입력 화면에 지침을 제공합니다. Amazon Q는 기본 코딩 창 내의 차이에 표시되는 코드를 자동으로 생성합니다. 그런 다음 변경 사항을 수락하거나 거부하도록 선택할 수 있습니다.

인라인 채팅의 장점은 채팅 창과 기본 코딩 창 간에 이동할 때 발생하는 컨텍스트 전환이 없어진다는 점입니다.

일반적으로 코드를 검토하거나 유닛 테스트를 작성하거나 코드 기반 답변이 필요한 다른 작업을 수행할 때 인라인 채팅 기능을 사용합니다. 텍스트 기반 답변(예: "이 코드 설명"에 대한 답변)을 원하는 경우 [채팅 창]()을 사용하는 것이 더 좋습니다.

Amazon Q는 인라인 채팅을 통해 코드 권장 사항을 생성할 때 현재 파일의 코드를 고려합니다. 다른 파일이나 프로젝트의 코드는 볼 수 없습니다.

## Amazon Q 인라인 채팅 실행 중
<a name="q-in-IDE-inline-chat-action"></a>

인라인 채팅 세션은 다음과 같이 펼쳐집니다.

1. 제안하려는 코드를 강조 표시한 다음 IDE에 따라 다음 옵션 중에서 선택합니다.
   + Visual Studio Code 및 JetBrains에서 `⌘+I`(Mac) 또는 `Ctrl+I`(Windows)를 누릅니다.
   + Eclipse에서 `⌘+Shift+I`(Mac) 또는 `Ctrl+Shift+I`(Windows)를 누릅니다.
   + 또는 선택 항목을 마우스 오른쪽 버튼으로 클릭하고 **Amazon Q**를 선택한 다음 **인라인 채팅**을 선택할 수 있습니다.

   이렇게 하면 기본 코딩 창 상단에 **Fix this code**와 같은 프롬프트를 입력할 수 있는 작은 입력 화면이 시작됩니다.  
![\[인라인 채팅 입력 화면입니다.\]](http://docs.aws.amazon.com/ko_kr/amazonq/latest/qdeveloper-ug/images/inline-chat-input-screen.png)

1. Amazon Q는 코드를 생성하여 차이로 표시합니다.  
![\[인라인 채팅 차이입니다.\]](http://docs.aws.amazon.com/ko_kr/amazonq/latest/qdeveloper-ug/images/inline-chat-diff.png)

1. **수락** 또는 **거부**를 선택하거나 키보드에 해당하는 값(`Enter` 또는 `Esc`)을 눌러 변경 사항을 수락하거나 거부합니다.  
![\[인라인 채팅 수락 및 거부 버튼입니다.\]](http://docs.aws.amazon.com/ko_kr/amazonq/latest/qdeveloper-ug/images/inline-chat-accept.png)

## 예시 주제 및 질문
<a name="q-in-IDE-inline-chat-questions"></a>

인라인 채팅은 항상 코드를 답변으로 반환하므로 다음과 같은 프롬프트를 입력할 수 있습니다.
+ 이 코드 문서화
+ 이 코드 리팩터링
+ 이 함수에 대한 유닛 테스트 작성

## 차이 형식
<a name="q-in-IDE-inline-chat-diff"></a>

인라인 채팅은 기존 코드가 맨 위에 있고 제안된 코드가 맨 아래에 있는 여러 블록의 차이를 표시합니다. 병렬 차이는 지원되지 않습니다.

# IDE에서 Amazon Q Developer 채팅에 컨텍스트 추가
<a name="ide-chat-context"></a>

통합 개발 환경(IDE)에서 Amazon Q와 채팅할 때, Amazon Q가 답변을 조정하고 개선하는 데 사용할 수 있는 파일 및 폴더와 같은 추가 *컨텍스트*를 Amazon Q에 제공할 수 있습니다.

Amazon Q에 컨텍스트를 제공하는 두 가지 방법이 있습니다.
+ **명시적 방법** - 컨텍스트를 명시적으로 제공하려면 채팅 창에 **@**를 입력합니다. **@**는 컨텍스트로 포함할 항목을 선택하는 컨텍스트 선택기 팝업을 시작합니다. 또는 **@**를 입력하고 파일, 폴더 또는 기타 컨텍스트 유형의 이름을 입력하여 자동 완성되도록 할 수 있습니다. 자세한 내용은 [명시적 컨텍스트 유형](#context-explicit) 단원을 참조하십시오.
+ **자동 방법** - 컨텍스트를 자동으로 제공하려면 채팅 외부에서 컨텍스트를 별도로 설정합니다. Amazon Q는 프로젝트에서 작업하는 개발자가 채팅 창에 질문을 입력할 때마다 컨텍스트를 자동으로 참조합니다. 자세한 내용은 [자동 컨텍스트 유형](#context-automatic) 단원을 참조하십시오.

Amazon Q가 답변을 생성하면 답변 시작 바로 위에 표시되는 **컨텍스트** 드롭다운 목록에 컨텍스트로 사용한 파일이 표시됩니다.

## 명시적 컨텍스트 유형
<a name="context-explicit"></a>

채팅에 **@**를 입력할 때 다음 컨텍스트 유형 중에서 선택할 수 있습니다.
+ **@workspace** – Amazon Q는 프로젝트의 워크스페이스를 답변의 컨텍스트로 사용합니다. **@workspace** 옵션에는 구성이 필요합니다. 자세한 내용은 [IDE에서 Amazon Q Developer 채팅에 작업 영역 컨텍스트 추가](workspace-context.md) 단원을 참조하십시오.
+ **폴더** - Amazon Q는 현재 프로젝트의 폴더 목록을 표시하고 선택한 폴더를 답변의 컨텍스트로 사용합니다.
+ **파일** - Amazon Q는 현재 프로젝트의 파일 목록을 표시하고 선택한 파일을 답변의 컨텍스트로 사용합니다.
+ **코드** - Amazon Q는 현재 프로젝트의 클래스, 함수, 글로벌 변수 목록을 표시하고 선택 항목을 답변의 컨텍스트로 사용합니다.
+ **이미지** - Amazon Q를 사용하면 프롬프트의 컨텍스트로 이미지를 추가할 수 있으므로 UI 모형 또는 시퀀스 다이어그램에서 코드 생성과 같은 시나리오에 유용합니다. 이미지는 최대 크기가 3.75MB이고 크기가 8,000 x 8,000픽셀을 초과하지 않는 JPEG, PNG, GIF 또는 WebP 형식이어야 합니다. 컨텍스트에 고정된 이미지를 포함하여 단일 메시지에 최대 20개의 이미지를 포함할 수 있습니다.
+ **프롬프트** - Amazon Q는 저장한 프롬프트 목록을 표시하고 선택한 프롬프트를 응답의 컨텍스트로 사용합니다. **프롬프트** 옵션에는 일부 구성이 필요합니다. 자세한 내용은 [Amazon Q Developer 채팅에 사용할 라이브러리에 프롬프트 저장](context-prompt-library.md) 단원을 참조하십시오.

## 자동 컨텍스트 유형
<a name="context-automatic"></a>

다음 유형의 컨텍스트를 설정한 경우 Amazon Q에서 자동으로 사용합니다.
+ **프로젝트 규칙** - Amazon Q는 사용자가 컨텍스트로 정의한 프로젝트 규칙 세트를 자동으로 사용합니다. 자세한 내용은 [Amazon Q Developer 채팅에 사용할 프로젝트 규칙 생성](context-project-rules.md) 단원을 참조하십시오.
+ **사용자 지정 **- Amazon Q는 소스 코드의 리포지토리를 컨텍스트로 자동으로 사용합니다.

# IDE에서 Amazon Q Developer 채팅에 작업 영역 컨텍스트 추가
<a name="workspace-context"></a>

통합 개발 환경(IDE)에서 Amazon Q와 채팅할 때 질문에 **@workspace**를 추가하여 작업 영역 코드의 가장 관련성이 높은 청크를 컨텍스트로 자동으로 포함할 수 있습니다. Amazon Q Developer는 주기적으로 업데이트되는 인덱스를 기반으로 관련성을 결정합니다.

Amazon Q는 작업 영역 컨텍스트를 통해 파일 찾기, 파일 간에 코드가 사용되는 방법 이해, 열리지 않은 파일을 포함하여 여러 파일을 활용하는 코드 생성 등의 향상된 기능을 갖추고 있습니다.

**Topics**
+ [설정](#setup)
+ [작업 영역 컨텍스트에 대한 질문](#ask-questions-workspace-context)

## 설정
<a name="setup"></a>

계속하기 전에 IDE의 최신 버전이 설치되어 있는지 확인하세요. 그러면 다음 단계를 완료할 수 있습니다.

### 인덱싱 활성화
<a name="setup-enable-indexing"></a>

Amazon Q는 작업 영역을 컨텍스트로 사용하기 위해 코드 파일, 구성 파일 및 프로젝트 구조를 포함하여 작업 영역 리포지토리의 로컬 인덱스를 생성합니다. 인덱싱 중에 바이너리 또는 `.gitignore` 파일에 지정된 파일과 같은 필수적이지 않은 파일이 필터링됩니다.

새 작업 영역을 인덱싱하는 데 5\$120분이 걸릴 수 있습니다. 이 시간 동안 IDE에서 CPU 사용량이 증가할 수 있습니다. 초기 인덱싱 후에는 워크스페이스를 변경할 때 인덱스가 점진적으로 업데이트됩니다.

작업 영역 컨텍스트를 처음 추가할 때는 IDE에서 인덱싱을 활성화해야 합니다. 다음 단계를 완료하여 인덱싱을 활성화합니다.

1. Amazon Q 채팅 패널의 질문에 **@workspace**를 추가합니다.

1. Amazon Q는 인덱싱을 활성화하라는 메시지를 표시합니다. **설정**을 선택하여 IDE의 Amazon Q 설정으로 리디렉션합니다.

   메시지가 표시되지 않으면 IDE 하단에서 **Amazon Q**를 선택하여 설정으로 이동할 수 있습니다. 그런 다음 열리는 Amazon Q 작업 표시줄에서 **설정 열기**를 선택합니다.

1. **워크스페이스 인덱스** 옆의 상자를 선택합니다.

### 인덱싱 구성(선택 사항)
<a name="setup-configure-indexing"></a>

인덱싱 프로세스에는 구성이 필요하지 않지만 인덱싱 전용 스레드 수를 지정하도록 선택할 수 있습니다. 사용되는 스레드 수를 늘리면 인덱싱이 더 빨리 완료되고 CPU가 더 많이 사용됩니다. 인덱싱 구성을 업데이트하려면 **Workspace Index Worker Threads** 설정에서 스레드 수를 지정합니다. 워크스페이스 컨텍스트에 대해 인덱싱할 수 있는 파일의 최대 크기를 설정하고 인덱싱에 그래픽 처리 장치(GPU)를 사용할 수 있습니다.

## 작업 영역 컨텍스트에 대한 질문
<a name="ask-questions-workspace-context"></a>

Amazon Q와의 대화에 작업 영역을 컨텍스트로 추가하려면 질문하려는 작업 영역을 연 다음 채팅 패널에서 질문에 **@workspace**를 추가합니다. 작업 영역 컨텍스트를 추가하려는 모든 질문에 @workspace를 추가해야 합니다.

다른 작업 영역에 대한 채팅을 시작하려면 작업 영역을 연 다음 새 채팅 탭을 엽니다. 질문에 **@workspace**를 포함시켜 새 작업 영역을 컨텍스트로 추가합니다.

열지 않은 파일을 포함하여 작업 영역의 모든 파일에 대해 Amazon Q에 문의할 수 있습니다. Amazon Q는 기존 대화형 코딩 기능 외에도 파일을 설명하고, 코드를 찾고, 파일 간에 코드를 생성할 수 있습니다.

다음은 채팅에서 작업 영역 컨텍스트를 활용하는 Amazon Q에 할 수 있는 질문의 예입니다.
+ @workspace 권한 부여를 처리하는 코드는 어디에 있습니까?
+ @workspace 이 프로젝트에서 애플리케이션 로직을 사용하는 키 클래스는 무엇입니까?
+ @workspace main.py 설명 
+ @workspace 이 프로젝트에 인증 추가
+ @workspace 이 프로젝트에서 사용되는 타사 라이브러리 또는 패키지는 무엇이며 어떤 목적으로 사용됩니까?
+ @workspace *<함수 이름>* 함수에 대한 유닛 테스트 추가

# Amazon Q Developer 채팅에 사용할 라이브러리에 프롬프트 저장
<a name="context-prompt-library"></a>

IDE에서 Amazon Q와 채팅할 때 사용할 수 있는 공통 프롬프트 라이브러리를 구축할 수 있습니다. 이러한 프롬프트를 라이브러리에 저장하면 매번 프롬프트를 다시 입력하지 않고도 채팅에 쉽게 삽입할 수 있습니다. 여러 대화 및 프로젝트에서 저장된 프롬프트를 사용할 수 있습니다.

프롬프트는 `~/.aws/amazonq/prompts` 폴더에 저장됩니다.

**프롬프트 라이브러리에 프롬프트를 저장하는 방법**

1. IDE에서 Amazon Q 채팅 창을 엽니다.

1. **@**를 입력하고 **프롬프트**를 선택합니다.

1. **새 프롬프트 생성**을 선택합니다. (찾으려면 아래로 스크롤해야 할 수 있습니다.)

1. **프롬프트 이름**에 **Create\$1sequence\$1diagram**과 같은 프롬프트 이름을 입력하고 Enter 키를 누릅니다. 프롬프트 이름에는 공백이 포함될 수 없습니다.

   Amazon Q는 `~/.aws/amazonq/prompts` 폴더에 `Create_sequence_diagram.md`라는 프롬프트 파일을 생성하고 IDE에서 파일을 엽니다.

1. 프롬프트 파일에 자세한 프롬프트를 추가합니다. 예제:

   `Create a sequence diagram using Mermaid that shows the sequence of calls between resources. Ignore supporting resources like IAM policies and security group rules.`

1. 프롬프트 파일을 저장합니다.

**저장된 프롬프트를 사용하는 방법**

1. IDE에서 Amazon Q 채팅 창을 엽니다.

1. **@**를 입력하고 **프롬프트**를 선택합니다.

1. **Create\$1sequence\$1diagram**과 같이 저장된 프롬프트를 선택합니다.

1. (선택 사항) 채팅 입력 창에서 필요에 따라 세부 정보를 추가합니다. 텍스트를 더 입력하고 컨텍스트 유형을 더 추가할 수 있습니다. 예를 들어, 프롬프트는 다음과 같을 수 있습니다.

   `@Create_sequence_diagram using the files in the @lib folder`

1. 프롬프트를 제출하고 Amazon Q가 답변을 생성할 때까지 기다립니다.

# 컨텍스트 항목 고정
<a name="context-pinning"></a>

**참고**  
컨텍스트 고정은 현재 VS Code IDE에서만 사용할 수 있습니다.

컨텍스트 고정을 사용하면 채팅 세션 내의 모든 메시지에 추가되는 컨텍스트 항목을 지정할 수 있습니다. 컨텍스트 항목을 고정하면 현재 대화의 모든 메시지에 자동으로 포함되므로 **@workspace**, **@file** 또는 **@folder** 등의 명령을 반복적으로 입력할 필요가 없습니다.

고정된 항목은 두 가지 소스에서 가져올 수 있습니다. 자주 참조하는 항목을 수동으로 고정하거나 Amazon Q가 자동으로 컨텍스트(예: 현재 활성 파일)를 추가하여 응답 품질을 개선할 수 있습니다. 고정된 컨텍스트 항목은 채팅 패널의 텍스트 입력 상자 상단에 표시되며 포함하지 않을 컨텍스트를 제거할 수 있습니다.

명확한 컨텍스트 경계를 유지하기 위해 고정된 항목은 현재 채팅 탭에만 적용됩니다. 새 탭을 열면 활성 파일과 같은 기본 고정 컨텍스트로만 새로 시작합니다.

## 고정된 컨텍스트 사용
<a name="w2aac11c16c25c19b7"></a>

**고정된 컨텍스트 항목을 추가하는 방법**

1. IDE에서 Amazon Q 채팅 패널을 엽니다.

1. 채팅에서 **@workspace**, **@file**, **@folder**, 또는 **@prompt** 등의 컨텍스트 명령을 사용한 후 원하는 컨텍스트를 클릭하여 고정합니다.

   또는 "@ Pin Context" 버튼을 클릭하여 사용 가능한 옵션을 보고 고정할 컨텍스트를 선택할 수 있습니다.

1. 고정된 컨텍스트는 채팅 패널 상단의 고정된 컨텍스트 영역에 표시됩니다.

### 컨텍스트 항목을 고정하는 방법
<a name="w2aac11c16c25c19b7b5"></a>

컨텍스트 항목을 고정할 수 있는 방법은 세 가지입니다.

1. @Pin Context 메뉴 사용:
   + 채팅 패널에서 "@Pin Context" 버튼을 클릭합니다.
   + 사용 가능한 옵션에서 원하는 컨텍스트 항목을 선택합니다.

1. 컨텍스트 메뉴 및 키보드 바로 가기 사용:
   + 채팅 입력에 "@"를 입력하여 컨텍스트 메뉴를 불러옵니다.
   + 원하는 항목으로 이동합니다.
   + Option/Alt \$1 Enter 키를 눌러 선택한 항목을 고정합니다.

1. 입력 프롬프트에서 고정:
   + 입력에 컨텍스트 명령(예: **@workspace**, **@file**, **@folder**, 또는 **@prompt**)을 이미 입력한 경우 입력의 컨텍스트 항목 위에 마우스를 올려 놓습니다.
   + 항목을 클릭하여 고정합니다.

고정 후 컨텍스트 항목은 채팅의 텍스트 입력 상자 상단에 있는 고정된 컨텍스트 영역에 나타납니다.

**고정된 컨텍스트 항목을 제거하는 방법**
+ 고정된 컨텍스트 항목을 제거하려면 알약의 왼쪽에 있는 X를 클릭합니다. 이는 사용자 고정 컨텍스트 항목과 시스템 추가 컨텍스트 항목 모두에 해당합니다.

# Amazon Q Developer 채팅에 사용할 프로젝트 규칙 생성
<a name="context-project-rules"></a>

IDE에서 Amazon Q와 채팅할 때 사용할 수 있는 프로젝트 규칙 라이브러리를 구축할 수 있습니다. 이러한 규칙은 팀 전체의 코딩 표준 및 모범 사례를 설명합니다. 예를 들어 모든 Python 코드가 유형 힌트를 사용해야 하거나 모든 Java 코드가 Javadoc 주석을 사용해야 한다고 명시하는 규칙이 있을 수 있습니다. 이러한 규칙을 프로젝트에 저장하면 경험 수준에 관계없이 개발자 간의 일관성을 보장할 수 있습니다.

프로젝트 규칙은 프로젝트 `project-root/.amazonq/rules` 폴더의 마크다운 파일에 정의됩니다.

프로젝트 규칙을 생성하면 Amazon Q는 개발자가 프로젝트 내에서 Amazon Q와 채팅할 때마다 이를 컨텍스트로 자동으로 사용하고 답변을 생성할 때 규칙을 준수하도록 합니다. 채팅에 컨텍스트를 추가하는 것에 대한 자세한 내용은 [IDE에서 Amazon Q Developer 채팅에 컨텍스트 추가](ide-chat-context.md) 섹션을 참조하세요.

파일 시스템에서 직접 또는 Amazon Q 채팅 인터페이스를 통해 프로젝트 규칙을 생성할 수 있습니다.

**Amazon Q 채팅 인터페이스를 사용하여 프로젝트 규칙을 생성하는 방법**

1. IDE에서 Amazon Q 채팅 패널을 엽니다.

1. 채팅 입력 상자에서 **규칙** 버튼을 클릭합니다.

1. **새 규칙 생성**을 선택합니다.

1. 표시되는 대화 상자에 규칙의 이름을 입력합니다.

   이렇게 하면 프로젝트의 `project-root/.amazonq/rules` 폴더에 해당 이름으로 마크다운 파일이 생성됩니다.

1. 편집기에 규칙 콘텐츠를 추가합니다.

1. 파일을 저장합니다.

**파일 시스템을 사용하여 프로젝트 규칙을 생성하는 방법**

1. IDE에서 프로젝트 루트 폴더를 엽니다.

1. 프로젝트 루트 폴더에서 다음 폴더를 생성합니다.

   `project-root/.amazonq/rules`

   이 폴더에는 모든 프로젝트 규칙이 들어 있습니다.

1. `project-root/.amazonq/rules`에서 프로젝트 규칙 파일을 생성합니다. 파일은 반드시 마크다운 파일이어야 합니다. 예제:

   `cdk-rules.md`

1. 프로젝트 규칙 마크다운 파일을 엽니다.

1. 파일에 자세한 프롬프트를 추가합니다. 예제:

   ```
   All Amazon S3 buckets must have encryption enabled, enforce SSL, and block public access.
   All Amazon DynamoDB Streams tables must have encryption enabled. 
   All Amazon SNS topics must have encryption enabled and enforce SSL. 
   All Amazon SNS queues must enforce SSL.
   ```

1. 파일을 저장합니다.

1. (선택 사항) 프로젝트 규칙 마크다운 파일을 더 추가합니다.

   이제 하나 이상의 프로젝트 규칙을 생성했습니다. Amazon Q는 개발자가 프로젝트 내에서 Amazon Q와 채팅할 때마다 이러한 규칙을 컨텍스트로 자동으로 사용합니다.

**Amazon Q 채팅 인터페이스에서 규칙을 관리하는 방법**

1. IDE에서 Amazon Q 채팅 패널을 엽니다.

1. 채팅 입력 상자에서 **규칙** 버튼을 클릭하여 사용 가능한 모든 규칙을 확인합니다.

1. 규칙을 클릭하여 현재 채팅 세션에 대해 규칙을 켜거나 끕니다.
   + 확인 표시가 있는 규칙은 활성 상태이며 대화에 적용됩니다.
   + 확인 표시가 없는 규칙은 현재 세션에서 비활성화됩니다.

# Amazon Q 채팅용 메모리 뱅크 생성
<a name="context-memory-bank"></a>

Amazon Q는 프로젝트 구조, 기술 스택 및 제품 정보의 빠른 인덱스를 제공하는 메모리 뱅크 파일을 자동으로 생성할 수 있습니다. 이 기능은 프로젝트의 키 파일을 분석하여 질문할 때마다 전체 프로젝트를 분석할 필요 없이 Amazon Q가 코드베이스를 이해하는 데 도움이 되는 요약 파일을 생성합니다.

메모리 뱅크 파일을 생성하면 Amazon Q는 다음과 같은 자동 생성된 파일이 `.amazonq/rules` 포함된 `memory-bank` 하위 폴더를에 생성합니다.
+ `product.md` - 프로젝트 및 기능에 대한 개요입니다.
+ `structure.md` - 프로젝트의 아키텍처, 폴더 구성 및 주요 구성 요소입니다.
+ `tech.md` - 기술 스택, 프레임워크, 종속성 및 코딩 표준.
+ `guidelines.md` - 프로젝트의 개발 표준 및 패턴입니다.

이러한 파일은 Amazon Q와 채팅할 때 컨텍스트로 자동으로 사용되며 프로젝트에 대한 배경 정보를 제공합니다.

## 프로젝트에 대한 메모리 뱅크 생성
<a name="generate-files"></a>

메모리 뱅크를 생성하려면 다음 절차를 완료합니다.

1. IDE에서 Amazon Q 채팅 패널을 엽니다.

1. 채팅 입력 상자에서 **규칙** 버튼을 선택합니다.

1. **메모리 뱅크 생성을** 선택합니다.

1. Amazon Q가 프로젝트를 분석하여 메모리 뱅크 파일을 생성하기 시작하는 새 채팅 탭이 열립니다.

1. 완료되면 **규칙** 버튼을 선택하여 파일을 볼 수 있습니다.

   질문을 할 때 컨텍스트로 사용할 개별 파일을 선택하고 선택 취소할 수 있습니다.

1. 프로젝트가 변경되면 Amazon Q가 새 메모리 뱅크 파일을 생성하여 컨텍스트를 업데이트하도록 할 수 있습니다. 이렇게 하려면 **규칙** 버튼을 선택한 다음 **메모리 뱅크 재생성을** 선택합니다.

## 메모리 뱅크 생성 사용자 지정
<a name="customize-files"></a>

사용자 지정 프로젝트 규칙을 생성하여 메모리 뱅크 파일이 생성되는 방식을 사용자 지정할 수 있습니다. 예를 들어 생성된 파일의 언어 또는 형식을 지정하는 규칙을 생성할 수 있습니다.

```
When generating the memory bank files like product.md, structure.md, and tech.md, 
always generate content in Spanish and include detailed code examples.
```

메모리 뱅크 규칙을 프로젝트 `project-root/.amazonq/rules` 폴더의 파일에 저장합니다.

사용자 지정 프로젝트 규칙 생성에 대한 자세한 내용은 섹션을 참조하세요[Amazon Q Developer 채팅에 사용할 프로젝트 규칙 생성](context-project-rules.md).

# Amazon Q Developer의 채팅 기록 압축
<a name="ide-chat-history-compaction"></a>

IDE에서 Amazon Q Developer와 상호 작용하면 대화가 채팅 기록에 누적됩니다. 이 기록은 Amazon Q가 프로젝트를 이해하고 보다 관련성이 높은 응답을 제공하는 데 도움이 되는 중요한 컨텍스트를 제공합니다. 그러나 기본 모델에 대한 각 요청에 포함될 수 있는 대화 기록의 양에는 제한이 있습니다.

## 컨텍스트 창 제한 이해
<a name="understanding-context-window-limits"></a>

컨텍스트 창은 Amazon Q와의 단일 상호 작용에서 처리할 수 있는 최대 정보 양을 나타냅니다. 여기에는 다음이 포함됩니다.
+ 현재 질문 또는 요청
+ 이전 대화 메시지
+ 공유한 코드 조각 및 파일
+ 프로젝트에 대한 시스템 정보

이 컨텍스트 창이 용량 제한에 가까워지면 대화의 이전 부분을 참조하는 Amazon Q의 기능이 영향을 받을 수 있습니다.

## 채팅 기록 압축 작동 방식
<a name="how-chat-history-compaction-works"></a>

채팅 기록 압축을 사용하면 대화의 필수 정보를 유지하면서 사용되는 컨텍스트의 양을 줄일 수 있습니다. 압축이 발생하는 경우 다음과 같이 됩니다.

1. Amazon Q는 대화 기록을 분석합니다.

1. 주요 요점, 질문 및 결정에 대한 간결한 요약을 생성합니다.

1. 이 요약은 컨텍스트 창의 세부 대화 기록을 대체합니다.

1. 채팅 인터페이스에 전체 대화가 계속 표시됩니다.

압축을 사용하면 중요한 컨텍스트를 잃지 않고 대화를 계속할 수 있으며 컨텍스트 창 제한에 도달하면 완전히 새로운 채팅을 시작할 필요가 없습니다.

## 채팅 기록 압축 사용
<a name="using-chat-history-compaction"></a>

압축은 다음 두 가지 방법으로 사용할 수 있습니다.

### 수동 압축
<a name="manual-compaction"></a>

채팅 기록을 수동으로 압축하는 방법:

1. 텍스트 입력 필드에 **/compact**를 입력합니다.

1. Amazon Q는 요청을 처리하고 압축된 대화의 요약과 함께 확인 메시지를 표시합니다.

현재 대화를 계속하고 싶지만 응답 시간이 느리거나 관련성이 낮은 답변을 확인하려는 경우 수동 압축을 사용합니다.

### 자동 압축 넛지
<a name="automatic-compaction-nudge"></a>

컨텍스트 창이 용량의 약 80%에 도달하면 Amazon Q는 압축을 제안하는 알림을 표시합니다. 알림에는 다음이 포함됩니다.
+ 압축이 권장되는 이유에 대한 설명
+ 압축을 즉시 트리거하는 버튼

## 압축 후
<a name="after-compaction"></a>

압축 후에는 다음과 같이 됩니다.
+ 현재 세션이 끝날 때까지 채팅 인터페이스에 전체 대화 기록이 표시됩니다.
+ Amazon Q는 압축된 요약(전체 기록이 아님)을 사용하여 응답을 생성합니다.
+ 압축된 요약은 세부 기록 대신 컨텍스트 창에 포함됩니다.
+ IDE를 다시 시작하면 세부 채팅 기록이 재설정됩니다.

## 관련 명령
<a name="related-commands"></a>

### 채팅 기록 지우기
<a name="clearing-chat-history"></a>

압축 대신 **/clear** 명령을 사용하여 채팅 기록을 완전히 지울 수 있습니다.

1. 텍스트 입력 필드에 **/clear**를 입력합니다.

1. Amazon Q는 디스플레이와 컨텍스트 창 모두에서 이전 대화 기록을 모두 제거합니다.

### 압축 및 지우기 기록을 선택해야 하는 경우
<a name="when-to-choose-compaction-vs-clearing"></a>

다음과 같은 경우 압축을 선택합니다.
+ 현재 대화 주제를 계속 진행하려는 경우
+ 이전 컨텍스트가 여전히 현재 작업과 관련이 있는 경우
+ 대화의 일반적인 방향과 지식을 유지하고 싶을 경우

다음과 같은 경우 기록 지우기를 선택합니다.
+ 완전히 새로운 작업 또는 주제를 시작하려는 경우
+ 이전 대화가 더 이상 관련이 없는 경우
+ 이전 컨텍스트가 새 응답에 영향을 미치지 않도록 하려는 경우
+ 대화에서 잠재적으로 민감한 정보를 제거하려는 경우

# Amazon Q Developer 대화 기록 보기, 삭제 및 내보내기
<a name="ide-chat-conversation"></a>

통합 개발 환경(IDE)에서 Amazon Q와 채팅하면 Amazon Q는 각 채팅 탭을 별도의 대화로 저장합니다. 이러한 대화를 보고, 검색하고, 삭제할 수 있습니다. 마크다운 또는 HTML 형식 파일로 내보낼 수도 있습니다.

Amazon Q는 로컬 컴퓨터의 홈 디렉터리에 대화를 저장합니다.

Amazon Q는 각 워크스페이스에 대한 대화를 별도로 저장하므로 대화 기록이 표시되지 않는 것은 잘못된 워크스페이스에 있기 때문일 수 있습니다. Amazon Q는 현재 워크스페이스에 대한 대화 기록만 표시합니다.

다음 지침에 따라 대화를 보고, 검색하고, 삭제하고, 내보냅니다.

**과거 대화를 보고 검색하는 방법**

1. IDE에서 Amazon Q에 로그인합니다.

1. Amazon Q 채팅 탭을 엽니다.

1. 다음 중 하나를 수행하여 채팅 기록을 엽니다.
   + 채팅 패널의 오른쪽 상단에서 **채팅 기록 보기** 버튼을 선택합니다.
   + `ctrl+F`(Windows/Linux) 또는 `⌘ F`(Mac)를 누릅니다.

1. 다음 중 하나를 수행하세요.
   + 보려는 대화를 선택합니다. 대화는 날짜별로 구성됩니다.
   + 채팅 기록 상단 근처의 검색 창을 사용하여 대화를 찾습니다. Amazon Q는 입력한 텍스트와 정확히 일치하는 대화를 찾습니다.

**단일 대화를 삭제하는 방법**

1. IDE에서 Amazon Q에 로그인합니다.

1. 다음 중 하나를 수행하세요.
   + 열려 있는 채팅 세션의 채팅 탭에서 **/clear**를 입력하여 채팅 탭의 내용을 삭제합니다.
   + Amazon Q 채팅 탭을 연 뒤 다음 중 하나를 수행하여 채팅 기록을 엽니다.
     + 채팅 패널의 오른쪽 상단에서 **채팅 기록 보기** 버튼을 선택합니다.
     + `ctrl+F`(Windows/Linux) 또는 `⌘ F`(Mac)를 누릅니다.

     삭제하려는 대화 옆에 있는 줄임표(…)를 선택한 다음 **삭제**를 선택합니다.

**대화를 마크다운 또는 HTML로 내보내는 방법**

1. IDE에서 Amazon Q에 로그인합니다.

1. 다음 중 하나를 수행하세요.
   + 채팅 세션이 이미 시작된 상태에서 채팅 패널 오른쪽 상단에서 **내보내기** 버튼을 선택하여 탭에 표시된 대화를 내보냅니다.
   + Amazon Q 채팅 탭을 연 뒤 다음 중 하나를 수행하여 채팅 기록을 엽니다.
     + 채팅 패널의 오른쪽 상단에서 **채팅 기록 보기** 버튼을 선택합니다.
     + `ctrl+F`(Windows/Linux) 또는 `⌘ F`(Mac)를 누릅니다.

     내보내려는 대화에서 세로 줄임표(⋮)를 선택하고 **내보내기**를 선택하여 대화를 마크다운 또는 HTML 형식 파일로 내보냅니다.

   기본적으로 Amazon Q는 파일 `q-dev-chat-yyyy-mm-dd.md|html`의 이름을 지정하고 프로젝트 루트에 저장합니다.

# Amazon Q Developer와 채팅에서 바로 가기 키 사용
<a name="q-in-ides-chat-shortcuts"></a>

Amazon Q는 에이전트 채팅 인터페이스와 효율적으로 상호 작용하는 데 도움이 되는 키보드 바로 가기를 제공합니다. 키보드 바로 가기를 사용하면 키보드와 마우스 간에 전환하지 않고도 워크플로를 유지할 수 있습니다.

**참고**  
키보드 바로 가기는 현재 Visual Studio Code IDE에서만 사용할 수 있습니다.

## 키보드 바로 가기
<a name="keyboard-shortcuts"></a>


**Amazon Q 채팅의 키보드 바로 가기**  

| 작업 | Visual Studio Code 바로 가기 | 
| --- | --- | 
| 실행 명령 |  Shift \$1 Cmd \$1 Enter(Mac) Shift \$1 Ctrl \$1 Enter(Windows) Shift \$1 Meta \$1 Enter(Linux)  | 
| 거부 명령 |  Shift \$1 Cmd \$1 R(Mac) Shift \$1 Ctrl \$1 R(Windows) Shift \$1 Meta \$1 R(Linux)  | 
| 생성 중지 |  Shift \$1 Cmd \$1 Backspace(Mac) Shift \$1 Ctrl \$1 Backspace(Windows) Shift \$1 Meta \$1 Backspace(Linux)  | 

## 키보드 바로 가기 사용자 지정
<a name="customizing-keyboard-shortcuts"></a>

IDE의 표준 키보드 바로 가기 사용자 지정 인터페이스를 통해 바로 가기를 수정할 수 있습니다. Amazon Q는 각 IDE의 기본 바로 가기 시스템을 사용하므로 변경 사항은 Amazon Q 인터페이스에 반영됩니다. 툴팁 및 UI 요소에 표시된 바로 가기는 사용자 지정 키 매핑과 일치하도록 자동으로 업데이트됩니다.

## 바로 가기 검색 가능성
<a name="shortcut-discoverability"></a>

Amazon Q는 다음과 같이 키보드 바로 가기를 검색하는 몇 가지 방법을 제공합니다.
+ **툴팁**: 실행 명령 버튼, 거부 명령 버튼 또는 중지 버튼 위로 마우스를 가져가면 현재 키보드 바로 가기가 표시됩니다.
+ **설정**: IDE의 키보드 바로 가기 사용자 지정 인터페이스에서 모든 바로 가기를 봅니다.

## 바로 가기 동작
<a name="shortcut-behavior"></a>
+ 에이전트 채팅의 키보드 바로 가기는 Amazon Q 채팅 패널에 포커스가 있는 경우에만 활성화됩니다.
+ 이렇게 하면 기존 IDE 키 바인딩과의 충돌을 방지할 수 있습니다.
+ 바로 가기를 수정하는 경우 변경 사항이 툴팁에 반영되도록 IDE를 새로 고쳐야 할 수 있습니다.

# IDE에서 Amazon Q 채팅용 모델 선택
<a name="q-in-ides-chat-models"></a>

IDE에서 채팅하는 동안 Amazon Q가 사용할 모델을 선택할 수 있습니다. 선택한 모델은 향후 모든 채팅 세션에서 유지됩니다.

다음 표에서는 IDE 및 컨텍스트 창에서 Amazon Q 채팅에 사용할 수 있는 모델을 설명합니다.


****  

| 모델 | 컨텍스트 창 | 
| --- | --- | 
| Claude Sonnet 3.7 | 20만 | 
| Claude Sonnet 4(기본값) | 20만 | 

## IDE에서 채팅에 사용되는 모델 선택
<a name="select-model-ide-chat"></a>

IDE에서 채팅할 때 Amazon Q가 사용하는 모델을 선택하는 방법:

1. IDE에서 Amazon Q 채팅 패널을 엽니다.

1. 텍스트 상자 하단에서 모델 메뉴 드롭다운을 선택합니다. 사용 가능한 옵션 중에서 사용하려는 모델을 선택합니다.

   선택한 모델은 변경할 때까지 유지됩니다.

## 컨텍스트 창
<a name="context-window"></a>

컨텍스트 창은 컨텍스트의 양으로, 여기에는 Amazon Q가 요청을 처리하고 응답하는 데 사용할 수 있는 대화 기록과 명시적 또는 자동 컨텍스트가 포함됩니다. 컨텍스트는 텍스트와 코드를 포함하는 토큰으로 측정됩니다.

컨텍스트에 대한 자세한 내용은 [채팅에 컨텍스트 추가](ide-chat-context.md) 섹션을 참조하세요.