

# AWS Toolkit for JetBrains를 사용하여 AWS 서버리스 애플리케이션 작업
<a name="sam"></a>

다음 항목에서는 AWS Toolkit for JetBrains을 사용하여 AWS 계정에서 AWS 서버리스 애플리케이션 작업을 하는 방법을 설명합니다.

**Topics**
+ [애플리케이션 생성](deploy-serverless-app.md)
+ [애플리케이션 동기화](sam-sync.md)
+ [애플리케이션 설정 변경(업데이트)](sam-update.md)
+ [애플리케이션 삭제](sam-delete.md)

# AWS Toolkit for JetBrains를 사용하여 AWS 서버리스 애플리케이션 생성
<a name="deploy-serverless-app"></a>

이 절차를 완료하려면 먼저 AWS Toolkit를 설치하고 아직 연결하지 않은 경우 AWS 계정에 처음 연결해야 합니다. 그런 다음 IntelliJ IDEA, PyCharm, WebStorm 또는 JetBrains Rider가 이미 실행되고 있는 상태에서 다음을 수행합니다.

1. IntelliJ IDEA, PyCharm, WebStorm 또는 JetBrains Rider가 이미 실행되고 있는 상태에서 다음 중 하나를 수행합니다.
   + IntelliJ IDEA 또는 WebStorm의 경우 **파일**, **신규**, **프로젝트**를 선택합니다.
   + PyCharm의 경우 **파일**, **새 프로젝트**를 선택합니다.
   + JetBrains Rider의 경우 새 솔루션에 대해 **파일**, **신규**를 선택합니다. 또는 **탐색기** 도구 창에서 기존 솔루션을 마우스 오른쪽으로 클릭하고 **추가**, **새 프로젝트**를 선택합니다.

1. IntelliJ IDEA의 경우 **AWS**, **AWS 서버리스 애플리케이션**을 선택하고 **다음**을 선택합니다.  
![\[IntelliJ IDEA에서 AWS 서버리스 애플리케이션 생성 선택\]](http://docs.aws.amazon.com/ko_kr/toolkit-for-jetbrains/latest/userguide/images/sam-create-intellij.png)

   PyCharm의 경우 **AWS Serverless Application**을 선택합니다.  
![\[PyCharm에서 AWS 서버리스 애플리케이션 생성 선택\]](http://docs.aws.amazon.com/ko_kr/toolkit-for-jetbrains/latest/userguide/images/sam-create-pycharm.png)

   WebStorm의 경우 **AWS Serverless Application**을 선택합니다.  
![\[WebStorm에서 AWS 서버리스 애플리케이션 생성 선택\]](http://docs.aws.amazon.com/ko_kr/toolkit-for-jetbrains/latest/userguide/images/sam-create-webstorm.png)

   JetBrains Rider의 경우 **AWS Serverless Application**을 선택합니다.  
![\[JetBrains Rider에서 AWS 서버리스 애플리케이션 생성 선택\]](http://docs.aws.amazon.com/ko_kr/toolkit-for-jetbrains/latest/userguide/images/sam-create-rider.png)

1. [새 프로젝트 대화 상자 또는 새 솔루션 대화 상자(JetBrains Rider의 경우)](new-project-dialog.md)를 완료하고 **완료**(IntelliJ IDEA의 경우) 또는 **생성**(PyCharm, WebStorm 또는 JetBrains Rider의 경우)을 선택합니다. AWS Toolkit for JetBrains은 프로젝트를 만들고 새 프로젝트에 서버리스 애플리케이션의 코드 파일을 추가합니다.

1. IntelliJ IDEA를 사용하는 경우 **프로젝트** 도구 창이 이미 열려 있고 서버리스 애플리케이션의 파일을 포함한 프로젝트가 표시되는 경우 다음 중 하나를 실행합니다.
   + Maven 기반 프로젝트라면 프로젝트의 `pom.xml` 파일을 마우스 오른쪽으로 클릭하고 **Maven 프로젝트 추가**를 선택합니다.  
![\[POM 파일을 Maven 프로젝트로 추가하도록 선택\]](http://docs.aws.amazon.com/ko_kr/toolkit-for-jetbrains/latest/userguide/images/add-as-maven-project.png)
   + Gradle 기반 프로젝트라면 프로젝트의 `build.gradle` 파일을 마우스 오른쪽으로 클릭하고 **Gradle 프로젝트 가져오기**를 선택합니다.  
![\[Gradle 프로젝트 가져오기 선택\]](http://docs.aws.amazon.com/ko_kr/toolkit-for-jetbrains/latest/userguide/images/import-gradle-project.png)

     **Gradle에서 모듈 가져오기** 대화 상자를 완료하고 **확인**을 선택합니다.

서버리스 애플리케이션을 생성한 후 해당 애플리케이션에 포함된 AWS Lambda 함수의 로컬 버전을 실행(간접적으로 호출)하거나 디버깅할 수 있습니다.

서버리스 애플리케이션을 배포할 수도 있습니다. 배포한 후에는 배포된 애플리케이션의 일부인 Lambda 함수의 원격 버전을 간접적으로 호출할 수 있습니다.

# AWS Toolkit for JetBrains에서 AWS SAM 애플리케이션 동기화
<a name="sam-sync"></a>

AWS Serverless Application Model(AWS SAM) `sam sync`는 서버리스 애플리케이션의 변경 사항을 자동으로 식별한 다음 해당 변경 사항을 구축하고 AWS 클라우드에 배포하는 가장 좋은 방법을 선택하는 AWS SAM-CLI 명령 배포 프로세스입니다. 인프라를 변경하지 않고 애플리케이션 코드만 변경한 경우 AWS SAM Sync는 CloudFormation 스택을 재배포하지 않고 애플리케이션을 업데이트합니다.

`sam sync` 및 AWS SAM CLI 명령에 대한 자세한 내용은 **AWS Serverless Application Model 개발자 안내서의 [AWS SAM CLI command reference](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-command-reference.html) 주제를 참조하세요.

다음 섹션에서는 AWS SAM Sync 작업을 시작하는 방법을 설명합니다.

## 필수 조건
<a name="w7aac13c40c11b9"></a>

AWS SAM Sync 작업 전에 다음 사전 조건을 충족해야 합니다.
+ 작동 중인AWS SAM 애플리케이션이 있습니다. AWS SAM 애플리케이션 생성에 대한 자세한 내용은 이 사용 설명서의 [AWS SAM 작업](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/key-tasks.html#key-tasks-sam-create) 주제를 참조하세요.
+ AWS SAM CLI. 버전 1.78.0 이상이 설치되어 있어야 합니다. AWS SAM CLI 설치에 대한 자세한 내용은 **AWS Serverless Application Model 개발자 안내서의 [Installing the AWS SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html) 주제를 참조하세요.
+ 애플리케이션이 개발 환경에서 실행 중이어야 합니다.

**참고**  
본 속성이 아닌 속성이 있는 AWS Lambda 함수가 포함된 서버리스 애플리케이션을 동기화하고 배포하려면 배포 전에 AWS Lambda 함수와 연결된 AWS SAM 템플릿 파일에 선택적 속성을 설정해야 합니다.  
AWS Lambda 속성에 대해 자세히 알아보려면 GitHub에서 **AWS Serverless Application Model User Guide의 [AWS::Serverless::Function](https://github.com/aws/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction) 섹션을 참조하세요.

## 시작하기
<a name="w7aac13c40c11c11"></a>

AWS SAM Sync 작업을 시작하려면 다음 절차를 완료하세요.

**참고**  
AWS 리전이 서버리스 애플리케이션과 연결된 위치로 설정되어 있는지 확인하세요.  
AWS Toolkit for JetBrains에서 AWS 리전을 변경하는 방법에 대해 자세히 알아보려면 이 사용 설명서의 [AWS 리전 간 전환](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/key-tasks.html#key-tasks-switch-region) 주제를 참조하세요.

1. **프로젝트** 도구 창의 서버리스 애플리케이션 프로젝트에서 `template.yaml` 파일에 대한 컨텍스트 메뉴(마우스 오른쪽 버튼 클릭)를 엽니다.

1. `template.yaml` 컨텍스트 메뉴에서 **서버리스 애플리케이션 동기화(이전에 배포)**를 선택하여 **개발 스택 확인** 대화 상자를 엽니다.

1. 개발 스택에서 작업 중인지 확인하여 **서버리스 애플리케이션 동기화** 대화 상자를 엽니다.  
![\[개발 스택 확인 대화 상자\]](http://docs.aws.amazon.com/ko_kr/toolkit-for-jetbrains/latest/userguide/images/sam-sync-dev-stack.png)

1. **서버리스 애플리케이션 동기화** 대화 상자의 단계를 완료한 다음 **동기화**를 선택하여 AWS SAM Sync 프로세스를 시작합니다. **서버리스 애플리케이션 동기화** 대화 상자에 대해 자세히 알아보려면 아래에 있는 [서버리스 애플리케이션 동기화 대화 상자](#sam-sync-serverless-app-dialog) 섹션을 참조하세요.

1. 동기화 프로세스 중에 AWS Toolkit for JetBrains **실행 창**이 배포 상태로 업데이트됩니다.

1. 동기화에 성공하면 CloudFormation 스택의 이름이 **AWS Explorer**에 추가됩니다.

   동기화에 실패하면 JetBrains **실행 창** 또는 CloudFormation **이벤트 로그**에서 문제 해결 세부 정보를 확인할 수 있습니다. CloudFormation 이벤트 로그 보기에 대해 자세히 알아보려면 이 사용 설명서의 [스택에 대한 이벤트 로그 보기](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/key-tasks.html#key-tasks-cloudformation-logs) 주제를 참조하세요.

## 서버리스 애플리케이션 동기화 대화 상자
<a name="sam-sync-serverless-app-dialog"></a>

**서버리스 애플리케이션 동기화 대화 상자**는 AWS SAM 동기화 프로세스를 지원합니다. 다음 섹션은 여러 대화 상자 구성 요소 각각에 대한 설명과 세부 정보입니다.

### 스택 생성 또는 스택 업데이트
<a name="w7aac13c40c11c13b5"></a>

**필수:** 새 배포 스택을 생성하려면 제공된 필드에 이름을 입력하여 서버리스 애플리케이션 배포를 위한 CloudFormation 스택을 생성하고 설정합니다.

또는 기존 CloudFormation 스택에 배포하려면 AWS 계정과 연결된 자동으로 채워지는 스택 목록에서 스택 이름을 선택합니다.

### 템플릿 파라미터
<a name="w7aac13c40c11c13b7"></a>

**선택 사항:** 프로젝트 `template.yaml` 파일에서 감지된 파라미터 목록을 채웁니다. 파라미터 값을 지정하려면 **값** 열에 있는 제공된 텍스트 필드에 새 파라미터 값을 입력합니다.

### S3 Bucket
<a name="w7aac13c40c11c13b9"></a>

**필수:** CloudFormation 템플릿을 저장할 기존 Amazon Simple Storage Service(S3) 버킷을 선택하려면 목록에서 해당 버킷을 선택합니다.

스토리지용 새 Amazon S3 버킷을 생성하고 사용하려면 **생성**을 선택하고 프롬프트를 따릅니다.

### ECR 리포지토리
<a name="w7aac13c40c11c13c11"></a>

**필수, 이미지 패키지 유형 작업 시에만 표시됨:** 서버리스 애플리케이션 배포를 위해 기존 Amazon Elastic Container Registry(Amazon ECR) 리포지토리 URI를 선택합니다.

AWS Lambda 패키지 유형에 대한 자세한 내용은 **AWS Lambda 개발자 안내서의 [Lambda 배포 패키지](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html)를 참조하세요.

### CloudFormation 기능
<a name="w7aac13c40c11c13c13"></a>

**필수:** 스택을 생성할 때 CloudFormation에서 사용할 수 있는 기능을 선택합니다.

### 태그
<a name="w7aac13c40c11c13c15"></a>

**선택 사항:** 파라미터에 태그를 지정하려면 제공된 텍스트 필드에 기본 태그를 입력합니다.

### 컨테이너 내부에 함수 빌드
<a name="w7aac13c40c11c13c17"></a>

**선택 사항, Docker 필요:** 이 옵션을 선택하면 배포 전 로컬 Docker 컨테이너 안에 서버리스 애플리케이션 함수가 빌드됩니다. 이 옵션은 함수가 기본적으로 컴파일된 종속 항목 또는 프로그램이 있는 패키지에 종속되는 경우에 유용합니다.

자세한 내용은 **AWS Serverless Application Model 개발자 안내서의 [Building applications](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-using-build.html) 주제를 참조하세요.

# AWS Toolkit for JetBrains를 사용하여 AWS 서버리스 애플리케이션 설정 변경(업데이트)
<a name="sam-update"></a>

변경하려는 AWS 서버리스 애플리케이션을 아직 배포하지 않은 경우 먼저 해당 애플리케이션을 배포해야 합니다.
**참고**  
AWS Lambda 함수가 포함된 서버리스 애플리케이션을 배포하고 해당 함수를 기본값이 아닌 속성 또는 선택적 속성으로 배포하려면 먼저 함수의 해당 AWS SAM 템플릿 파일 (예: 프로젝트 내에서 파일 이름이 `template.yaml`인 파일)에 해당 속성을 설정해야 합니다. 사용 가능한 속성 목록은 GitHub의 [awslabs/serverless-application-model](https://github.com/awslabs/serverless-application-model/) 리포지토리에 있는 [AWS::Serverless::Function](https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction)을 참조하세요.

1. **프로젝트** 도구 창이 이미 열려 있고 서버리스 애플리케이션의 파일이 포함된 프로젝트가 표시된 상태에서 프로젝트의 `template.yaml` 파일을 엽니다. 파일의 내용을 변경하여 새 설정을 반영한 다음 파일을 저장하고 닫습니다.

1. 서버리스 애플리케이션을 배포하기 위해 다른 AWS 리전으로 전환해야 하는 경우 지금 수행하세요.

1. 프로젝트의 `template.yaml` 파일을 마우스 오른쪽 단추로 클릭한 다음 **서버리스 애플리케이션 배포**를 선택합니다.  
![\[서버리스 애플리케이션 배포 명령 선택\]](http://docs.aws.amazon.com/ko_kr/toolkit-for-jetbrains/latest/userguide/images/deploy-serverless-application.png)

1. [서버리스 애플리케이션 배포](deploy-serverless-application-dialog.md) 대화 상자를 완료한 다음 **배포**를 선택합니다. AWS Toolkit for JetBrains에서는 배포에 대한 해당 AWS CloudFormation 스택을 업데이트합니다.

   배포가 실패하면 스택에 대한 이벤트 로그를 확인하여 이유를 파악할 수 있습니다.

# AWS Toolkit for JetBrains를 사용하여 AWS 서버리스 애플리케이션 삭제
<a name="sam-delete"></a>

AWS 서버리스 애플리케이션을 삭제하기 전에 먼저 배포해야 합니다.

1. AWS Explorer가 열려 있지 않은 경우 이를 엽니다. 서버리스 애플리케이션이 포함된 다른 AWS 리전으로 전환해야 하는 경우 지금 수행하세요.

1. **CloudFormation**을 확장합니다.

1. 삭제할 서버리스 애플리케이션을 포함한 AWS CloudFormation 스택의 이름을 마우스 오른쪽 단추로 클릭한 다음 **CloudFormation 스택 삭제**를 선택합니다.  
![\[AWS Explorer에서 시작하는 AWS 서버리스 애플리케이션의 AWS CloudFormation 스택 삭제 선택\]](http://docs.aws.amazon.com/ko_kr/toolkit-for-jetbrains/latest/userguide/images/sam-delete.png)

1. 스택의 이름을 입력하여 삭제를 확인한 다음 **확인**을 선택합니다. 스택 삭제에 성공하면 AWS Toolkit for JetBrains가 **AWS Explorer**의 **CloudFormation** 목록에서 해당 스택 이름을 제거합니다. 스택 삭제에 실패하면 스택에 대한 이벤트 로그를 확인하여 이유를 파악할 수 있습니다.