

 AWS Cloud9 는 더 이상 신규 고객이 사용할 수 없습니다. AWS Cloud9 의 기존 고객은 정상적으로 서비스를 계속 이용할 수 있습니다. [자세히 알아보기](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)

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

# AWS 도구 키트 작업
<a name="toolkit-welcome"></a>

 AWS 탐색기 창을 통해 AWS 도구 키트를 AWS 서비스 사용하여 탐색하고와 상호 작용할 수 있습니다.

## 도구 AWS 키트를 사용하는 이유는 무엇입니까?
<a name="toolkit-why"></a>

 AWS 도구 키트는 AWS Cloud9 통합 개발 환경(IDE)의 확장입니다. 이 확장을 AWS 서비스 통해에 액세스하고 다양한 로 작업할 수 있습니다. AWS 도구 키트는 Lambda 플러그인에서 제공하는 기능을 대체합니다 AWS Cloud9. 자세한 내용은 [AWS 도구 키트 비활성화](#disable-toolkit) 단원을 참조하십시오.

**중요**  
AWS 도구 키트 지원은의 통합 기능입니다 AWS Cloud9. 현재는 타사 확장으로 AWS Cloud9 IDE를 사용자 지정할 수 없습니다.

**주의**  
 AWS Cloud9 IDE에서 Mozilla Firefox를 기본 브라우저로 사용하는 경우 브라우저에서 AWS Cloud9 Webview 및 AWS Toolkits가 올바르게 작동하지 않도록 하는 타사 쿠키 설정이 있습니다. 이 문제를 해결하려면 아래 이미지에 표시된 대로 브라우저 설정의 개인 정보 보호 및 보안 섹션에서 쿠키를 차단하지 않았는지 확인해야 합니다.****  

![\[Firefox의 쿠키 설정 표시\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/images/firefox-workaround.png)


현재 AWS Toolkit 확장을 통해 다음 AWS 서비스 및 리소스에 액세스할 수 있습니다.
+ [AWS 앱 실행기](using-apprunner.md)
+ [API Gateway](api-gateway-toolkit.md)
+ [CloudFormation 스택](cloudformation-toolkit.md)
+ [CloudWatch Logs](cloudwatch-logs-toolkit.md)
+ [AWS Lambda](lambda-toolkit.md)
+ [리소스](more-resources.md)
+ [Amazon S3 버킷 및 객체](s3-toolkit.md)
+ [AWS Serverless Application Model 애플리케이션](serverless-apps-toolkit.md)
+ [Step Functions 및 상태 시스템](bulding-stepfunctions.md)
+ [Systems Manager 자동화 문서](systems-manager-automation-docs.md)
+ [AWS Cloud9 IDE에서 Amazon ECR 작업](ecr.md)
+ [AWS IoT](iot-start.md)
+ [Amazon Elastic Container Service 작업](ecs.md)
+ [Amazon EventBridge](eventbridge.md)
+ [작업 AWS Cloud Development Kit (AWS CDK)](cdk-explorer.md)

## AWS 도구 키트 활성화
<a name="access-toolkit"></a>

환경에서 AWS 도구 키트를 사용할 수 없는 경우 **기본 설정** 탭에서 활성화할 수 있습니다.<a name="enabling-toolkit"></a>

**AWS 도구 키트를 활성화하려면**

1. 메뉴 모음에서 [**AWS Cloud9**], [**기본 설정(Preferences)**]을 선택합니다.

1. **기본 설정(Preferences)** 탭 측면의 탐색 창에서 **AWS 설정(AWS Settings)**을 선택합니다.

1. **AWS Resources**(리소스) 창에서 **AWS Toolkit**(도구 키트)를 활성화하여 녹색 배경에 확인 표시가 표시되도록 합니다.

    AWS 도구 키트를 활성화하면 통합 개발 환경(IDE)이 새로 고쳐져 업데이트된 도구 ** AWS 키트 활성화** 설정이 표시됩니다. 또한 **Environment**(환경) 옵션 아래 IDE 측면에 AWS Toolkit(도구 키트) 옵션이 표시됩니다.

**중요**  
 AWS Cloud9 환경의 EC2 인스턴스가 인터넷에 액세스할 수 없는 경우(즉, 아웃바운드 트래픽이 허용되지 않음) AWS 도구 키트를 활성화하고 IDE를 다시 시작한 후 메시지가 표시될 수 있습니다. 이 메시지는 AWS 도구 키트에 필요한 종속 구성 요소를 다운로드할 수 없다는 내용입니다. 이 경우 AWS 도구 키트도 사용할 수 없습니다.  
이 문제를 해결하려면 Amazon S3용 VPC 엔드포인트를 생성합니다. 이렇게 하면 IDE를 최신 상태로 유지하는 데 필요한 종속성이 AWS 리전 포함된의 Amazon S3 버킷에 대한 액세스 권한이 부여됩니다.  
자세한 내용은 [종속 구성 요소를 다운로드하도록 Amazon S3의 VPC 엔드포인트 구성](ec2-ssm.md#configure-s3-endpoint) 단원을 참조하십시오.



## AWS 도구 키트에 대한 액세스 자격 증명 관리
<a name="credentials-for-toolkit"></a>

AWS 도구 키트는 다양한와 상호 작용합니다 AWS 서비스. 액세스 제어를 관리하려면 AWS 도구 키트 서비스의 IAM 엔터티에이 서비스 범위에 필요한 권한이 있는지 확인합니다. 먼저 [AWS 관리형 임시 보안 인증 정보](security-iam.md#auth-and-access-control-temporary-managed-credentials)를 사용하여 필요한 권한을 얻으십시오. 이러한 관리형 자격 증명은 IAM 사용자와 같은 AWS 엔터티 AWS 서비스 를 대신하여 EC2 환경에에 대한 액세스 권한을 부여하는 방식으로 작동합니다.

그러나 개발 환경의 EC2 인스턴스를 **프라이빗 서브넷**으로 시작한 경우 AWS 관리형 임시 자격 증명을 사용할 수 없습니다. 따라서 자체 자격 증명 세트를 수동으로 생성 AWS 서비스 하여 AWS Toolkit이에 액세스하도록 허용할 수 있습니다. 이 세트를 *프로파일*이라고 합니다. 프로파일에는 액세스 키라는 장기 보안 인증 정보가 있습니다. IAM 콘솔에서 이러한 액세스 키를 얻을 수 있습니다.<a name="manual-credentials"></a>

**AWS Toolkit에 대한 액세스 자격 증명을 제공하는 프로필 생성**

1. 액세스 키(*액세스 키 ID* 및 *비밀 액세스 키*로 이루어짐)를 얻으려면 IAM 콘솔([ https://console.aws.amazon.com/iam](https://console.aws.amazon.com/iam))로 이동합니다.

1. 탐색 모음에서 [**사용자(Users)**]를 선택한 다음 AWS 사용자 이름(확인란 아님)을 선택합니다.

1. [**보안 자격 증명(Security credentials)**] 탭을 선택한 후 [**액세스 키 생성(Create access key)**]을 선택합니다.
**참고**  
이미 액세스 키가 있지만 비밀 키에 액세스할 수 없는 경우 이전 키를 비활성화하고 새 키를 만듭니다.

1. 액세스 키 ID와 비밀 액세스 키가 표시된 대화 상자에서 [**.csv 파일 다운로드(Download .csv file)**]를 선택하여 이 정보를 안전한 위치에 저장합니다.

1. 액세스 키를 다운로드한 후 AWS Cloud9 환경을 시작하고 **창**, **새 터미널을 선택하여 터미널** 세션을 시작합니다.

1. 터미널 창에서 다음 명령을 실행합니다.

   ```
   aws configure --profile toolkituser
   ```

   이 예에서는 `toolkituser`라는 프로파일 이름을 사용 중이지만 직접 선택할 수 있습니다.

1. 명령줄에서 IAM 콘솔에서 앞서 다운로드한 `AWS Access Key ID` 및 `AWS Secret Access Key`를 입력합니다.
   + 의 경우 `Default region name`를 지정합니다 AWS 리전 (예: `us-east-1`).
   + `Default output format`에 파일 형식을 지정합니다(예: `json`).
**참고**  
프로파일 구성 옵션에 대한 자세한 내용은 *AWS Command Line Interface 사용 설명서*에서 [구성 기본 사항](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)을 참조하세요.

1. 프로필을 생성한 후 AWS 도구 키트를 시작하고 [**AWS 도구 키트 메뉴**](toolkit-navigation.md#toolkit-menu)로 이동하여 **연결을 AWS** 선택합니다.

1. 자격 ** AWS 증명 프로필 선택** 필드에서 터미널에서 방금 생성한 프로필을 선택합니다(예: `profile:toolkituser`).

선택한 프로필에 유효한 액세스 자격 증명이 포함된 경우 탐색**AWS 기** 창이 새로 고쳐져 이제 액세스할 수 AWS 서비스 있는가 표시됩니다.

### IAM 역할을 사용하여 EC2 인스턴스의 애플리케이션에 권한 부여
<a name="ec2-instance-credentials"></a>

IAM 역할을 사용하여 EC2 인스턴스에서 실행되는 애플리케이션의 임시 자격 증명을 관리할 수도 있습니다. 역할은 애플리케이션이 다른 AWS 리소스를 호출할 때 사용할 수 있는 임시 권한을 제공합니다. EC2 인스턴스를 시작할 때 인스턴스와 연결할 IAM 역할을 지정합니다. 그러면 AWS 서비스에 대해 API 요청을 실행할 때 이 인스턴스에서 실행되는 애플리케이션은 역할 제공 임시 자격 증명을 사용할 수 있습니다.

역할을 만든 후에는 *인스턴스 프로파일*을 만들어 이 역할 및 관련 권한을 인스턴스에 할당합니다. 그러면 인스턴스 프로파일이 인스턴스에 연결되고 인스턴스에서 실행되는 애플리케이션에 이 역할의 임시 자격 증명을 제공할 수 있습니다.

자세한 내용은 * IAM 사용 설명서*의 [IAM 역할을 사용하여 Amazon EC2 인스턴스에서 실행되는 애플리케이션에 권한 부여](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html#roles-usingrole-ec2instance-get-started)를 참조하세요.

## AWS 도구 키트 구성 요소 식별
<a name="ui-components"></a>

다음 스크린샷은 AWS 도구 키트의 세 가지 주요 UI 구성 요소를 보여줍니다.

![\[AWS 도구 키트의 주요 UI 구성 요소를 보여주는 레이블이 지정된 스크린샷\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/images/toolkit-UI-overview-labelled.png)


1. **AWS 탐색기** 창: 도구 키트를 통해 액세스할 수 있는와 AWS 서비스 상호 작용하는 데 사용됩니다. 통합 개발 환경(IDE)의 왼쪽에 있는 AWS 옵션을 사용하여 **AWS 탐색**기를 표시하거나 숨길 수 있습니다. 이 인터페이스 구성 요소를 사용하고 다른에 액세스하는 방법에 AWS 서비스 대한 자세한 내용은 섹션을 AWS 리전참조하세요[AWS Explorer를 사용하여 여러 리전의 서비스 및 리소스 작업](toolkit-navigation.md#working-with-aws-explorer).

1. **도구** 키트 메뉴:에 대한 연결을 관리하고 AWS, **AWS 탐색기** 창의 표시를 사용자 지정하고, 서버리스 애플리케이션을 생성 및 배포하고, GitHub 리포지토리로 작업하고, 설명서에 액세스하는 데 사용됩니다. 자세한 내용은 [AWS 도구 키트 메뉴 액세스 및 사용](toolkit-navigation.md#toolkit-menu) 단원을 참조하십시오.

1. **AWS 구성** 창: 도구 키트를 사용하여 AWS 서비스 상호 작용하는의 동작을 사용자 지정하는 데 사용됩니다. 자세한 내용은 [AWS 구성 창을 사용하여 AWS 도구 키트 설정 수정](toolkit-navigation.md#configuration-options) 단원을 참조하십시오.

## AWS 도구 키트 비활성화
<a name="disable-toolkit"></a>

**기본 설정** 탭에서 AWS 도구 키트를 비활성화할 수 있습니다.<a name="disabling-toolkit"></a>

**AWS 도구 키트를 비활성화하려면**

1. 메뉴 모음에서 [**AWS Cloud9**], [**기본 설정(Preferences)**]을 선택합니다.

1. **기본 설정(Preferences)** 탭 측면의 탐색 창에서 **AWS 설정(AWS Settings)**을 선택합니다.

1. **AWS 리소스** 창에서 **AWS AWS 도구 키트를** 끕니다.

    AWS 도구 키트를 비활성화하면 통합 개발 환경(IDE)이 새로 고쳐져 **환경** 옵션 아래의 IDE 옆에 있는 AWS 도구 키트 옵션이 제거됩니다.



## AWS 도구 키트 주제
<a name="toolkit-resources-info"></a>
+ [AWS 도구 키트 탐색 및 구성](toolkit-navigation.md)
+ [AWS 도구 키트 AWS App Runner 와 함께 사용](using-apprunner.md)
+ [AWS 도구 키트를 사용하여 API Gateway 작업](api-gateway-toolkit.md)
+ [AWS 도구 키트를 사용하여 AWS CloudFormation 스택 작업](cloudformation-toolkit.md)
+ [AWS 도구 키트를 사용하여 AWS Lambda 함수 작업](lambda-toolkit.md)
+ [리소스 작업](more-resources.md)
+ [AWS 도구 키트를 사용하여 Amazon S3 작업](s3-toolkit.md)
+ [AWS 도구 키트 AWS SAM 사용 작업](serverless-apps-toolkit.md)
+ [Amazon CodeCatalyst 작업](ide-toolkits-cloud9.md)
+ [](ecr.md)

# AWS 도구 키트 탐색 및 구성
<a name="toolkit-navigation"></a>

다음 AWS 도구 키트 인터페이스 요소를 통해 리소스에 액세스하고 설정을 수정할 수 있습니다.
+ [**AWS 탐색기** 창](#working-with-aws-explorer): 다른 AWS 서비스 에서에 액세스합니다 AWS 리전.
+ [**AWS 도구 키트** 메뉴](#toolkit-menu): 서버리스 애플리케이션을 생성 및 배포하고, 표시 또는 숨기고 AWS 리전, 사용자 지원에 액세스하고, Git 리포지토리와 상호 작용합니다.
+ [**AWS 구성** 창](#configuration-options): AWS 도구 키트 AWS 서비스 에서와 상호 작용하는 방법에 영향을 미치는 설정을 수정합니다.

## AWS Explorer를 사용하여 여러 리전의 서비스 및 리소스 작업
<a name="working-with-aws-explorer"></a>

**AWS 탐색**기 창에서 해당 서비스와 연결된 특정 리소스를 선택하고 AWS 서비스 작업할 수 있습니다. **AWS 탐색기에서** 서비스 이름 노드(예: API Gateway 또는 Lambda)를 선택합니다. 그런 다음 해당 서비스와 관련된 특정 리소스(예: REST API 또는 Lambda 함수)를 선택합니다. 특정 리소스를 선택하면 메뉴에 업로드 또는 다운로드, 호출 또는 복사와 같은 가능한 상호 작용 옵션이 표시됩니다.

다음 예제를 살펴보세요. AWS 계정 자격 증명이 Lambda 함수에 액세스할 수 있는 경우에 대해 나열된 Lambda 노드를 확장한 AWS 리전다음 AWS Cloud9 IDE에 코드로 호출하거나 업로드할 특정 Lambda 함수를 선택합니다. 또한 노드 제목의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열어 AWS Serverless Application Model을 사용하는 애플리케이션 생성을 시작할 수도 있습니다.

**참고**  
통합 개발 환경(IDE)에서 **AWS 탐색**기 창을 보는 옵션이 보이지 않는 경우 AWS 도구 키트를 활성화했는지 확인합니다. 활성화되었는지 확인한 후 다시 시도하세요. 자세한 내용은 [AWS 도구 키트 활성화](toolkit-welcome.md#access-toolkit) 단원을 참조하십시오.

**AWS 탐색기** 창에는 여러 AWS 리전에서 호스트되는 서비스가 표시될 수도 있습니다.

## 선택한 리전 AWS 서비스 에서에 액세스하려면


1. **AWS 탐색기** 창에서 [**도구 키트(Toolkit)**] 메뉴, [**탐색기에 리전 표시(Show region in the Explorer)**]를 선택합니다.

1. ** AWS 탐색기 목록에 표시할 리전 선택 목록에서**을 선택합니다 AWS 리전.

   선택한 리전이 **AWS 탐색기** 창에 표시됩니다. 사용 가능한 서비스 및 리소스에 액세스하려면 리전의 이름 앞에 있는 화살표(>)를 선택합니다.

**참고**  
다음 옵션을 사용하여 **AWS 탐색**기 AWS 리전 창에서 선택한를 숨길 수도 있습니다.  
리전의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 **Hide region from the Explorer**(탐색기에서 리전 숨기기)를 선택합니다.
 AWS 도구 키트 메뉴의 **탐색기에서 리전 숨기기를** 선택하고 숨길 리전을 선택합니다.

## AWS 도구 키트 메뉴 액세스 및 사용
<a name="toolkit-menu"></a>

**AWS 도구 키트**는 [서버리스 애플리케이션](serverless-apps-toolkit.md)을 만들고 배포하는 옵션에 대한 액세스를 제공합니다. 이 메뉴를 사용하면 연결을 관리하고 **AWS: 탐색기** 창을 업데이트하고 문서에 액세스하고 GitHub 리포지토리와 상호 작용할 수 있습니다.

**도구 키트** 메뉴에 액세스하려면 **AWS 탐색기** 창에서 **AWS: 탐색기** 제목의 반대편에 있는 스크롤 아이콘을 선택합니다.

![\[AWS 도구 키트의 도구 키트 메뉴 위치를 보여주는 레이블이 지정된 스크린샷\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/images/toolkit-UI-menu-location.png)


다음 표에서는 **Toolkit**(도구 키트) 메뉴에서 사용할 수 있는 옵션 개요를 확인할 수 있습니다.


****도구 키트(Toolkit)** 메뉴 옵션**  

| 메뉴 옵션 | 설명 | 
| --- | --- | 
|  **탐색 AWS 기 새로 고침**  |  **AWS 탐색기**를 새로 고쳐 창을 마지막으로 연 이후에 수정된 AWS 서비스 를 표시하려면 이 옵션을 선택합니다.  | 
|  **에 연결 AWS**  |  *프로파일*에 저장된 자격 증명을 AWS 계정 사용하여 AWS Toolkit을에 연결합니다. 자세한 내용은 [AWS 도구 키트에 대한 액세스 자격 증명 관리](toolkit-welcome.md#credentials-for-toolkit) 단원을 참조하십시오.  | 
|  **탐색기에 리전 표시**  |  **AWS 탐색**기 AWS 리전 창에를 표시합니다. 자세한 내용은 [AWS Explorer를 사용하여 여러 리전의 서비스 및 리소스 작업](#working-with-aws-explorer) 단원을 참조하십시오.  | 
|  **탐색기에서 리전 숨기기**  |  **AWS 탐색**기 AWS 리전 창에서를 숨깁니다. 자세한 내용은 [AWS Explorer를 사용하여 여러 리전의 서비스 및 리소스 작업](#working-with-aws-explorer) 섹션을 참조하세요.  | 
|  **새 SAM 애플리케이션 생성**  |  새 AWS 서버리스 애플리케이션에 대한 코드 파일 세트를 생성합니다. SAM 애플리케이션을 생성하고 배포하는 방법에 대한 자세한 정보는 [AWS 도구 키트 AWS SAM 사용 작업](serverless-apps-toolkit.md) 단원을 참조하십시오.  | 
|  **SAM 애플리케이션 배포**  |  서버리스 애플리케이션을에 배포합니다 AWS. SAM 애플리케이션을 생성하고 배포하는 방법에 대한 자세한 정보는 [AWS 도구 키트 AWS SAM 사용 작업](serverless-apps-toolkit.md) 단원을 참조하십시오.  | 
|  **빠른 시작 보기**  |  빠른 시작 가이드를 엽니다.  | 
|  **도구 키트 문서 보기**  |   AWS 도구 키트 사용 설명서를 엽니다.  | 
|  **GitHub에서 소스 보기**  |   AWS 도구 키트의 GitHub 리포지토리를 엽니다.  | 
|  **GitHub에서 새로운 사례 만들기**  |  Github에서 AWS 도구 키트의 새 문제 페이지를 엽니다.  | 
|  **빠른 피드백 제출**  |  도구 AWS 키트 개발 팀에 비공개 단방향 피드백을 제출합니다. 대화 또는 버그 수정이 필요한 문제가 있다면 **Create a New Issue on Github**(Github에서 새로운 사례 만들기) 메뉴 옵션을 선택하여 Github에서 사례를 제출하세요.  | 
|  ** AWS 도구 키트 정보**  |  실행 중인 도구 키트 버전 및 해당 도구 키트가 구성된 Amazon 운영 체제에 대한 정보를 표시합니다.  | 

## AWS 구성 창을 사용하여 AWS 도구 키트 설정 수정
<a name="configuration-options"></a>

**AWS 구성** 창에 액세스하려면 [**AWS Cloud9**], [**기본 설정(Preferences)**]을 선택합니다. 다음으로 **Preferences**(기본 설정) 창의 **Project Settings**(프로젝트 설정)에서 **AWS Configuration**(구성)을 선택합니다.

![\[AWS 도구 키트의 AWS 구성 메뉴 위치를 보여주는 레이블이 지정된 스크린샷\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/images/toolkit-UI-aws-config-location.png)


다음 표에서는 **AWS Configuration**(구성) 페이지에서 사용할 수 있는 옵션 개요를 확인할 수 있습니다.


****  

| 메뉴 옵션 | 설명 | 
| --- | --- | 
|  **AWS: 프로파일**  |  자격 증명을 가져올 자격 증명 프로파일의 이름을 설정합니다.  | 
|  **AWS: 기본 리전 누락 시**  |  **AWS Explorer** 창에서 AWS 리전 선택한 자격 증명 프로필의 기본값을 사용할 수 없는 경우 수행할 작업을 나타냅니다. 다음 세 가지 옵션 중에서 선택할 수 있습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/toolkit-navigation.html)  | 
|  **AWS > S3: 페이지당 최대 항목 수**  |  **AWS 탐색기**창에 한 번에 표시되는 Amazon S3 객체 또는 폴더의 수를 지정합니다. 최대 개수가 표시되면**더 불러오기**을 클릭하여 다음 배치를 표시합니다. 이 필드에 허용되는 값의 범위는 3에서 1,000 사이입니다. 이 설정은 한 번에 표시되는 객체 또는 폴더 수에만 적용됩니다. 생성한 모든 버킷이 한 번에 표시됩니다. 기본적으로 각에 최대 100개의 버킷을 생성할 수 있습니다 AWS 계정.  | 
|  **AWS > Samcli: 위치**  |  [서버리스 애플리케이션](serverless-apps-toolkit.md)을 생성, 빌드, 패키지 및 배포하는 데 사용되는 SAM CLI의 위치를 나타냅니다.  | 
|  **AWS > Samcli > 디버그 > 연결> 재시도: 최대:**  |  도구 키트가 포기하기 전에 SAM CLI 디버거를 연결하려고 시도하는 횟수를 지정합니다. 기본 할당량은 30회입니다.  AWS SAMCLI 내에서 디버그 모드에서 Lambda 함수를 로컬로 호출하면 디버거를 연결할 수 있습니다.  | 
|  **AWS > Samcli > 디버그 > 연결> 제한 시간: Millis:**  |  도구 키트가 포기하기 전에 SAM CLI 디버거를 연결하려고 시도하는 시간을 지정합니다. 기본값은 30,000밀리초(30초)입니다.  AWS SAMCLI 내에서 디버그 모드에서 Lambda 함수를 로컬로 호출하면 디버거를 연결할 수 있습니다.  | 
|  **AWS : 로그 수준:**  |  로깅되는 워크플로 이벤트의 범주를 설정합니다. 다음 수준을 사용할 수 있습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/toolkit-navigation.html)  | 
|  **AWS : 원격 측정**  |  사용 데이터 전송을 활성화하거나 비활성화합니다 AWS. 기본적으로 사용됩니다.  | 

# AWS 도구 키트를 사용하여 API Gateway 작업
<a name="api-gateway-toolkit"></a>

API Gateway를 사용하여 실시간 양방향 통신 애플리케이션을 지원하는 RESTful API 및 WebSocket API를 생성할 수 있습니다. API Gateway를 사용하여 API를 생성하고 관리하는 방법에 대한 자세한 내용은 [https://docs.aws.amazon.com/apigateway/latest/developerguide/](https://docs.aws.amazon.com/apigateway/latest/developerguide/)를 참조하세요.

 AWS 도구 키트를 사용하면 입력으로 전달되는 REST 리소스, 메서드 유형 및 데이터를 지정하여 REST API에 대한 호출을 구성할 수 있습니다.

## API Gateway에서 REST API 호출
<a name="api-gateway-toolkit-invoke"></a>

**중요**  
 AWS 도구 키트를 사용하여 API 메서드를 호출하면 실행 취소할 수 없는 리소스가 변경될 수 있습니다. 예를 들어 `POST` 메서드를 호출하면 호출이 성공할 경우 API의 리소스가 업데이트됩니다.

 AWS 도구 키트 AWS 에서에서 API Gateway를 호출할 수 있습니다.

## REST API를 호출하려면


1. **AWS 탐색기** 창에서 API Gateway 노드를 선택하여 현재 AWS 리전에서 사용 가능한 REST API의 목록을 봅니다.

1. REST API를 마우스 오른쪽 버튼으로 클릭한 다음 **Invoke on AWS**( AWS에서 호출)를 선택합니다.
**참고**  
컨텍스트 메뉴를 사용하여 REST API의 URL, 이름 및 Amazon 리소스 이름(ARN)을 복사할 수 있습니다.

   **Invoke methods**(메서드 호출) 창이 표시됩니다. API에 대한 호출을 구성할 수 있습니다.

1. **Select a resource**(리소스 선택)에서 상호 작용할 REST 리소스를 선택합니다.

1. [**메서드 선택(Select a method)**]에서 다음 메서드 유형 중 하나를 선택합니다.
   + [**GET**]: API를 통해 액세스되는 백엔드 서비스에서 리소스를 가져옵니다.
   + [**OPTIONS**]: API Gateway가 지원하는 메서드 및 작업에 대한 정보를 요청합니다.
   + [**POST**]: API를 통해 액세스되는 백엔드 서비스에 새 리소스를 만듭니다.

1. API 메서드 호출에 입력을 제공하려면 쿼리 문자열 또는 JSON 형식의 페이로드를 사용할 수 있습니다.
   + **Query string**(쿼리 문자열): `parameter1=value1&parameter2=value2` 형식을 사용하여 쿼리 문자열을 입력합니다. (쿼리 문자열을 사용하려면 먼저 [매핑 템플릿](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html)을 생성하여 들어오는 웹 요청이 통합 백엔드로 전송되기 전에 변환합니다.)
   + JSON 형식: [**메서드 호출(Invoke methods)**] 창의 라지 텍스트 필드에 JSON 형식의 페이로드를 정의할 수 있습니다.

     예를 들어 다음 페이로드를 포함하는 `POST` 메서드를 사용하여 새 리소스를 추가할 수 있습니다.

     ```
     {"type": "soda", "price" : 3.99}       
     ```

1. [**호출(Invoke)**] 버튼을 선택하여 REST API 리소스를 호출합니다.

   REST API 응답이 **AWS Remote Invocations**(원격 호출) 탭에 표시됩니다. 응답 본문에는 JSON 형식의 리소스 데이터가 포함됩니다.

# AWS 도구 키트 AWS App Runner 와 함께 사용
<a name="using-apprunner"></a>

[AWS App Runner](https://docs.aws.amazon.com/apprunner/latest/dg/what-is-apprunner.html)는 소스 코드 또는 컨테이너 이미지에서 AWS 클라우드의 확장 가능하고 안전한 웹 애플리케이션으로 직접 배포하는 빠르고 비용 효율적인 방법을 제공합니다. 이를 사용하면 새로운 기술을 배우거나, 사용할 컴퓨팅 서비스를 결정하거나, AWS 리소스를 프로비저닝하고 구성하는 방법을 알 필요가 없습니다.

 AWS App Runner 를 사용하여 *소스 이미지* 또는 *소스 코드를* 기반으로 서비스를 생성하고 관리할 수 있습니다. 소스 이미지를 사용하는 경우 이미지 리포지토리에 저장된 퍼블릭 또는 프라이빗 컨테이너 이미지를 선택할 수 있습니다. App Runner는 다음 이미지 저장소 제공업체를 지원합니다.
+ Amazon Elastic Container Registry(Amazon ECR): AWS 계정에 프라이빗 이미지를 저장합니다.
+ Amazon Elastic Container Registry Public(Amazon ECR Public): 공개적으로 읽을 수 있는 이미지를 저장합니다.

소스 코드 옵션을 선택하면 지원되는 리포지토리 공급자가 유지 관리하는 소스 코드 리포지토리에서 배포할 수 있습니다. 현재 App Runner는 소스 코드 리포지토리 제공업체로 [GitHub](https://github.com/)를 지원합니다.

## 사전 조건
<a name="apprunner-prereqs"></a>

 AWS 도구 키트를 사용하여 App Runner와 상호 작용하려면 다음이 필요합니다.
+ 의 경우 AWS 계정
+ 를 지원하는 AWS 도구 키트 버전 AWS App Runner

이러한 핵심 요구 사항 외에도 모든 관련 IAM 사용자에게 App Runner 서비스와 상호 작용할 수 있는 권한이 있는지 확인하십시오. 또한 컨테이너 이미지 URI 및 GitHub 리포지토리에 대한 연결과 같은 서비스 소스에 대한 특정 정보를 얻어야 합니다. App Runner 서비스를 생성할 때 이 정보가 필요합니다.

### App Runner에 대한 IAM 권한 구성
<a name="app-runner-permissions"></a>

App Runner에 필요한 권한을 빠르게 부여하려면 기존 AWS 관리형 정책을 관련 AWS Identity and Access Management (IAM) 엔터티에 연결합니다. 특히 사용자 또는 그룹에 정책을 연결할 수 있습니다. App Runner는 IAM 사용자에게 연결할 수 있는 2개의 관리형 정책을 제공합니다.
+ `AWSAppRunnerFullAccess`: 사용자가 모든 App Runner 작업을 수행할 수 있도록 허용합니다.
+ `AWSAppRunnerReadOnlyAccess`: 사용자가 App Runner 리소스에 대한 세부 정보를 나열하고 볼 수 있도록 허용합니다.

또한 Amazon Elastic Container Registry(Amazon ECR)에서 프라이빗 리포지토리를 서비스 소스로 선택하는 경우 App Runner 서비스에 대해 다음 액세스 역할을 생성해야 합니다.
+ `AWSAppRunnerServicePolicyForECRAccess`: App Runner가 계정에서 Amazon Elastic Container Registry(Amazon ECR) 이미지에 액세스할 수 있도록 허용합니다.

 AWS 도구 키트의 명령 창을 사용하여 서비스 인스턴스를 구성할 때 이 역할을 자동으로 생성할 수 있습니다.

**참고**  
**AWSServiceRoleForAppRunner** 서비스 연결 역할을 사용하면가 다음 작업을 완료할 수 AWS App Runner 있습니다.  
Amazon CloudWatch Logs에 로그 그룹에 로그를 푸시합니다.
Amazon Elastic Container Registry(Amazon ECR) 이미지 푸시를 구독하는 Amazon CloudWatch Events 규칙을 생성합니다.
서비스 연동 역할을 수동으로 생성하지 않아도 됩니다. AWS App Runner 에서 AWS Management Console 또는 AWS Toolkit에서 호출하는 API 작업을 사용하여를 생성하면가이 서비스 연결 역할을 자동으로 AWS App Runner 생성합니다.

자세한 내용은AWS App Runner 개발자 안내서에서 [App Runner ID 및 액세스 관리](https://docs.aws.amazon.com/apprunner/latest/dg/security-iam.html)를 참조하세요.

### App Runner에 대한 서비스 소스 얻기
<a name="app-runner-sources"></a>

 AWS App Runner를 사용하여 소스 이미지 또는 소스 코드에서 서비스를 배포할 수 있습니다.

------
#### [ Source image ]

소스 이미지에서 배포하는 경우 프라이빗 또는 퍼블릭 이미지 레지스트리에서 해당 AWS 이미지의 리포지토리에 대한 링크를 가져옵니다.
+ Amazon ECR 프라이빗 레지스트리: [https://console.aws.amazon.com/ecr/repositories](https://console.aws.amazon.com/ecr/repositories)에서 Amazon ECR 콘솔을 사용하는 프라이빗 리포지토리의 URI를 복사합니다.
+ Amazon ECR 퍼블릭 레지스트리: [https://gallery.ecr.aws/](https://gallery.ecr.aws)에서 Amazon ECR 퍼블릭 갤러리를 사용하는 퍼블릭 리포지토리의 URI를 복사합니다.

**참고**  
 AWS 도구 키트의 **AWS 탐색**기에서 직접 프라이빗 Amazon ECR 리포지토리의 URI를 가져올 수도 있습니다.  
**AWS Explorer**를 열고 **ECR** 노드를 확장하여 AWS 리전에 대한 리포지토리 목록을 봅니다.
리포지토리의 컨텍스트(마우스 오른쪽 단추 클릭) 메뉴를 열고 **Copy Repository URI**(리포지토리 URI 복사)를 선택하여 링크를 클립보드에 복사합니다.

 AWS 도구 키트 명령 창을 사용하여 서비스 인스턴스를 구성할 때 이미지 리포지토리의 URI를 지정합니다.

자세한 내용은AWS App Runner 개발자 안내서의 [소스 이미지 기반의 App Runner 서비스](https://docs.aws.amazon.com/apprunner/latest/dg/service-source-image.html)를 참조하세요.

------
#### [ Source code ]

소스 코드를 AWS App Runner 서비스에 배포하려면 해당 코드를 Git 리포지토리에 저장해야 합니다. 이 Git 리포지토리는 지원되는 리포지토리 공급자가 유지 관리해야 합니다. App Runner는 하나의 소스 코드 리포지토리 공급자인 [GitHub](https://github.com/)를 지원합니다.

GitHub 리포지토리를 설정하는 방법에 대한 자세한 내용은 GitHub의 [시작하기 설명서](https://docs.github.com/en/github/getting-started-with-github)를 참조하세요.

GitHub 리포지토리에서 App Runner 서비스에 소스 코드를 배포하기 위해 App Runner는 GitHub에 대한 연결을 설정합니다. 리포지토리가 프라이빗인 경우(즉, GitHub에서 공개적으로 액세스할 수 없는 경우) App Runner에 연결 세부 정보를 제공해야 합니다.

**중요**  
GitHub 연결을 생성하려면 App Runner 콘솔([https://console.aws.amazon.com/apprunner](https://console.aws.amazon.com/apprunner))을 사용하여 GitHub를 AWS에 연결하는 링크를 생성하세요. AWS 도구 키트의 명령 창으로 서비스 인스턴스를 구성할 때 **GitHub 연결** 페이지에서 사용할 수 있는 연결을 선택할 수 있습니다.  
자세한 내용은AWS App Runner 개발자 안내서의 [App Runner 연결 관리](https://docs.aws.amazon.com/apprunner/latest/dg/manage-connections.html)를 참조하세요.

App Runner 서비스 인스턴스는 코드를 빌드하고 실행할 수 있는 관리형 런타임을 제공합니다. AWS App Runner 현재는 다음 런타임을 지원합니다.
+ Python 관리형 런타임 
+ Node.js 관리형 런타임

서비스 구성의 일부로 App Runner 서비스가 서비스를 빌드하고 시작하는 방법에 대한 정보를 제공합니다. **명령 팔레트**를 사용하여 이 정보를 입력하거나 YAML 형식의 [App Runner 구성 파일](https://docs.aws.amazon.com/apprunner/latest/dg/config-file.html)을 지정할 수 있습니다. 이 파일의 값은 App Runner에 서비스를 빌드 및 시작하고 런타임 컨텍스트를 제공하는 방법을 지시합니다. 여기에는 관련 네트워크 설정 및 환경 변수가 포함됩니다. 구성 파일의 이름이 `apprunner.yaml`로 지정되었습니다. 애플리케이션 리포지토리의 루트 디렉토리에 자동으로 추가됩니다.

 

------

## 가격 책정
<a name="app-runner-pricing"></a>

애플리케이션에서 사용하는 컴퓨팅 및 메모리 리소스에 대한 요금이 청구됩니다. 또한 배포를 자동화하는 경우 해당 월의 모든 자동화된 배포를 포함하는 각 애플리케이션에 대해 설정된 월별 요금도 지불합니다. 소스 코드에서 배포하기로 선택한 경우 App Runner가 소스 코드에서 컨테이너를 빌드하는 데 걸리는 시간만큼 빌드 비용을 지불합니다.

자세한 내용은 [AWS App Runner 요금](https://aws.amazon.com/apprunner/pricing/)을 참조하세요.

**Topics**
+ [사전 조건](#apprunner-prereqs)
+ [가격 책정](#app-runner-pricing)
+ [App Runner 서비스 생성](creating-service-apprunner.md)
+ [App Runner 서비스 관리](managing-service-apprunner.md)

# App Runner 서비스 생성
<a name="creating-service-apprunner"></a>

**AWS 탐색**기를 사용하여 AWS 도구 키트에서 App Runner 서비스를 생성할 수 있습니다. 특정에서 서비스를 생성하도록 선택한 후 AWS 리전 AWS 도구 키트의 명령 창에 애플리케이션이 실행되는 서비스 인스턴스를 구성하는 방법이 설명되어 있습니다.

App Runner 서비스를 생성하기 전에 [전제 조건](using-apprunner.md#apprunner-prereqs)을 완료했는지 확인합니다. 여기에는 관련 IAM 권한을 제공하고 배포하려는 특정 소스 리포지토리를 확인하는 작업이 포함됩니다.<a name="create-service"></a>

# App Runner 서비스 생성
<a name="create-service"></a>

1. 아직 열려 있지 않은 경우 AWS 탐색기를 엽니다.

1. **App Runner** 노드를 마우스 오른쪽 버튼으로 클릭하고 **Create Service**(서비스 생성)를 선택합니다.

    AWS Toolkit 명령 창이 표시됩니다.

1. **Select a source code location type**(소스 코드 위치 유형 선택)에서 **ECR** 또는 **리포지토리**를 선택합니다.

   **ECR**을 선택하는 경우 Amazon Elastic Container Registry에서 유지 관리하는 리포지토리의 컨테이너 이미지를 지정합니다. **리포지토리(Repository)**를 선택하는 경우 지원되는 리포지토리 공급자가 유지 관리하는 소스 코드 리포지토리를 지정합니다. 현재 App Runner는 [GitHub](https://github.com/)를 소스 코드 리포지토리 제공자로 지원합니다.

## ECR에서 배포
<a name="deploying-from-ECR"></a>

1. **이미지 리포지토리 선택 또는 입력(Select or enter an image repository)**에서 Amazon ECR 프라이빗 레지스트리 또는 Amazon ECR 퍼블릭 갤러리에서 유지 관리하는 이미지 리포지토리의 URL을 선택하거나 입력합니다.
**참고**  
Amazon ECR 퍼블릭 갤러리에서 리포지토리를 지정하는 경우 자동 배포가 꺼져 있는지 확인합니다. App Runner는 ECR 퍼블릭 리포지토리에 있는 이미지의 자동 배포를 지원하지 않습니다.  
자동 배포는 기본적으로 꺼짐 상태입니다. 명령 창 머리글의 아이콘에 대각선이 있다면 꺼짐 상태라는 뜻입니다. 자동 배포를 사용하기로 한 경우 추가 비용이 발생할 수 있다는 메시지가 표시됩니다.

1. 명령 창의 단계에서 **No tags found**(태그를 찾을 수 없음)을 보고하는 경우 태그가 지정된 컨테이너 이미지가 포함된 리포지토리를 선택하는 단계로 돌아갑니다.

1. **Port**(포트)에서 서비스에서 사용하는 IP 포트(예를 들어 포트 `8000`)를 입력합니다.

1. (선택 사항) **Configure environment variables**(환경 변수 구성)에서 서비스 인스턴스의 동작을 사용자 지정하는 데 사용하는 환경 변수가 포함된 파일을 지정합니다.

1. Amazon ECR 프라이빗 레지스트리를 사용하는 경우 **AppRrunneRecrAccessRole** ECR 액세스 역할이 필요합니다. 이 역할은 App Runner가 계정에서 Amazon Elastic Container Registry(Amazon ECR) 이미지에 액세스할 수 있도록 허용합니다. 명령 창 헤더에서 “\$1” 아이콘을 선택하여 이 역할을 만듭니다. 이미지가 공개적으로 제공되는 Amazon ECR 퍼블릭에 이미지가 저장되어 있다면 액세스 역할은 필요 없습니다.

1. **Name your service**(서비스 이름 지정)에서 고유한 이름을 입력하고 **Enter**를 누릅니다. 이름에는 공백이 있어서는 안 됩니다.

1. **Select instance configuration**(인스턴스 구성 선택)에서 서비스 인스턴스의 CPU 유닛과 메모리(두 항목 모두 GB 단위) 조합을 선택합니다.

   서비스가 생성되면 상태가 **생성(Creating)**에서 **실행(Running)**으로 변경됩니다.

1.  서비스 실행을 시작한 후 서비스의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 **Copy Service URL**(서비스 URL 복사)을 선택합니다.

1. 배포된 애플리케이션에 액세스하려면 복사한 URL을 웹 브라우저의 주소 표시줄에 붙여넣습니다.

## 원격 리포지토리에서 배포
<a name="deploying-from-repository"></a>

1.  **연결 선택에서** GitHub를 연결하는 연결을 선택합니다 AWS. 선택할 수 있는 연결은 App Runner 콘솔의 **GitHub 연결(GitHub connections)** 페이지에 나열됩니다.

1.  **원격 GitHub 리포지토리 선택(Select a remote GitHub repository)**에서 원격 리포지토리 URL을 선택하거나 입력합니다.

    AWS Cloud9 소스 제어 관리로 이미 구성된 원격 리포지토리를 선택할 수 있습니다. 리포지토리가 목록에 없는 경우 리포지토리에 대한 링크를 붙여넣을 수도 있습니다.

1. **분기 선택(Select a branch)**에서 배포할 소스 코드의 Git 분기를 선택합니다.

1. **구성 소스 선택(Choose configuration source)**에서 런타임 구성을 정의하는 방식을 지정합니다.

   **구성 파일 사용(Use configuration file)**을 선택한 경우 서비스 인스턴스는 `apprunner.yaml` 구성 파일에 의해 정의된 설정으로 구성됩니다. 이 파일은 애플리케이션 리포지토리의 루트 디렉터리에 있습니다.

   **여기서 모든 설정 구성(Configure all settings here)**을 선택한 경우 명령 창을 사용하여 다음을 지정합니다.
   + **런타임(Runtime)**: **Python 3** 또는 **Nodejs 12**를 선택합니다.
   + **빌드 명령(Build command)**: 서비스 인스턴스의 런타임 환경에서 애플리케이션을 빌드하는 명령을 입력합니다.
   + **시작 명령(Start command)**: 서비스 인스턴스의 런타임 환경에서 애플리케이션을 시작하는 명령을 입력합니다.

1. **Port**(포트)에서 서비스에서 사용하는 IP 포트(예를 들어 포트 `8000`)를 입력합니다.

1. (선택 사항) **Configure environment variables**(환경 변수 구성)에서 서비스 인스턴스의 동작을 사용자 지정하는 환경 변수가 포함된 파일을 지정합니다.

1. **Name your service**(서비스 이름 지정)에서 고유한 이름을 입력하고 **Enter**를 누릅니다. 이름에는 공백이 있어서는 안 됩니다.

1. **인스턴스 구성 선택(Select instance configuration)**에서 서비스 인스턴스의 CPU 유닛과 메모리(GB) 조합을 선택합니다.

   서비스가 생성 중일 때는 상태가 **Creating**(생성)에서 **Running**(실행)으로 변경됩니다.

1. 서비스 실행을 시작한 후 서비스의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 **Copy Service URL**(서비스 URL 복사)을 선택합니다.

1. 배포된 애플리케이션에 액세스하려면 복사한 URL을 웹 브라우저의 주소 표시줄에 붙여넣습니다.

**참고**  
App Runner 서비스를 만들지 못했다면 **AWS Explorer**에 서비스 **생성 실패(Create failed)** 상태가 표시됩니다. 문제 해결 정보는 *App Runner 개발자 안내서*에서 [서비스 생성이 실패하는 경우](https://docs.aws.amazon.com/apprunner/latest/dg/manage-create.html#manage-create.failure)를 참조하세요.

# App Runner 서비스 관리
<a name="managing-service-apprunner"></a>

App Runner 서비스를 생성한 후 AWS 탐색기 창을 사용하여 다음 활동을 수행하여 관리할 수 있습니다.
+ [App Runner 서비스 일시 중지 및 다시 시작](#pause-resume-apprunner)
+ [App Runner 서비스 배포](#deploying-apprunner)
+ [App Runner에 대한 로그 스트림 보기](#viewing-logs-apprunner)
+ [App Runner 서비스 삭제](#deleting-apprunner)

## App Runner 서비스 일시 중지 및 다시 시작
<a name="pause-resume-apprunner"></a>

웹 애플리케이션을 일시적으로 비활성화하고 코드 실행을 중지해야 하는 경우 AWS App Runner 서비스를 일시 중지할 수 있습니다. App Runner는 서비스에 대한 컴퓨팅 용량을 0으로 줄입니다. 애플리케이션을 다시 실행할 준비가 되면 App Runner 서비스를 다시 시작합니다. App Runner는 새로운 컴퓨팅 파워를 프로비저닝하고, 애플리케이션을 배포한 후 애플리케이션을 실행합니다.

**중요**  
App Runner가 실행 중일 때만 요금이 청구됩니다. 따라서 비용을 관리하는 데 필요한 경우 애플리케이션을 일시 중지했다가 다시 시작할 수 있습니다. 이는 개발 및 테스트 시나리오에서 특히 유용합니다.<a name="pause-app-runner"></a>

## App Runner 서비스 일시 중지
<a name="pause-app-runner"></a>

1. 아직 열려 있지 않은 경우 AWS 탐색기를 엽니다.

1. **App Runner**를 확장하여 서비스 목록을 봅니다.

1. 서비스를 마우스 오른쪽 버튼으로 클릭하고 **Pause(일시 중지)**를 선택합니다.

1. 표시되는 대화 상자에서 **확인(Confirm)**을 선택합니다.

   서비스가 일시 중지되는 동안 서비스 상태는 **실행 중(Running)**에서 **일시 중지 중(Pausing)**으로 변한 다음 **일시 중지됨(Paused)**으로 변경됩니다.<a name="pause-app-runner"></a>

## App Runner 서비스 다시 시작
<a name="pause-app-runner"></a>

1. 아직 열려 있지 않은 경우 AWS 탐색기를 엽니다.

1. **App Runner**를 확장하여 서비스 목록을 봅니다.

1. 서비스를 마우스 오른쪽 버튼으로 클릭하고 **다시 시작(Resume)**을 선택합니다.

   서비스가 다시 시작되는 동안 서비스 상태가 **다시 시작 중(Resuming)**에서 **실행 중(Running)**으로 변경됩니다.

## App Runner 서비스 배포
<a name="deploying-apprunner"></a>

서비스에 대한 수동 배포 옵션을 선택하는 경우 서비스에 대한 각 배포를 명시적으로 시작해야 합니다.<a name="deploy-app-runner"></a>

1. 아직 열려 있지 않은 경우 AWS 탐색기를 엽니다.

1. **App Runner**를 확장하여 서비스 목록을 봅니다.

1. 서비스를 마우스 오른쪽 버튼으로 클릭하고 **배포 시작(Start Deployment)**을 선택합니다.

1. 애플리케이션이 배포되는 동안 서비스 상태가 **배포 중(Deploying)**에서 **실행 중(Running)**으로 변경됩니다.

1. 애플리케이션이 성공적으로 배포되었는지 확인하려면 동일한 서비스를 마우스 오른쪽 버튼으로 클릭하고 **서비스 URL 복사(Copy Service URL)**를 선택합니다.

1. 배포한 웹 애플리케이션에 액세스하려면 복사한 URL을 웹 브라우저의 주소 표시줄에 붙여넣습니다.

## App Runner에 대한 로그 스트림 보기
<a name="viewing-logs-apprunner"></a>

CloudWatch Logs Logs를 사용하여 App Runner와 같은 서비스에 대한 로그 스트림을 모니터링, 저장 및 액세스할 수 있습니다. 로그 스트림은 동일한 소스를 공유하는 로그 이벤트 시퀀스입니다.<a name="view-logs-apprunner"></a>

1. **App Runner**를 확장하여 서비스 인스턴스 목록을 봅니다.

1. 특정 서비스 인스턴스를 확장하여 로그 그룹 목록을 봅니다. (로그 그룹은 동일한 보존, 모니터링 및 액세스 제어 설정을 공유하는 로그 스트림 그룹입니다.) 

1. 로그 그룹을 마우스 오른쪽 단추로 클릭하고 **로그 스트림 보기(View Log Streams)**를 선택합니다.

1. 명령 창에서 그룹의 로그 스트림을 선택합니다.

    AWS Cloud9 IDE에는 스트림을 구성하는 로그 이벤트 목록이 표시됩니다. 이전 이벤트 또는 최신 이벤트를 편집기에 로드할 수 있습니다.

## App Runner 서비스 삭제
<a name="deleting-apprunner"></a>

**중요**  
App Runner 서비스를 삭제하면 영구적으로 제거되고 저장된 데이터가 삭제됩니다. 서비스를 다시 생성해야 하는 경우 App Runner는 소스를 다시 가져와 코드 리포지토리인 경우 빌드해야 합니다. 웹 애플리케이션은 새로운 App Runner 도메인을 가져옵니다.<a name="delete-app-runner"></a>

1. 아직 열려 있지 않은 경우 AWS 탐색기를 엽니다.

1. **App Runner**를 확장하여 서비스 목록을 봅니다.

1. 서비스를 마우스 오른쪽 단추로 클릭하고 **서비스 삭제(Delete Service)**를 선택합니다.

1.  AWS 도구 키트 명령 창에서 *삭제*를 입력한 다음 **Enter** 키를 눌러 확인합니다.

   삭제된 서비스는 **삭제 중(Deleting)**상태로 표시된 후 목록에서 사라집니다.

# AWS 도구 키트를 사용하여 AWS CloudFormation 스택 작업
<a name="cloudformation-toolkit"></a>

 AWS 도구 키트는 [AWS CloudFormation](https://aws.amazon.com/cloudformation/) 스택에 대한 지원을 제공합니다. AWS 도구 키트를 사용하여 CloudFormation 스택을 삭제할 수 있습니다.

## CloudFormation 스택 삭제
<a name="cloudformation-delete"></a>

 AWS 도구 키트를 사용하여 CloudFormation 스택을 보고 삭제할 수 있습니다.

### 사전 조건
<a name="cloudformation-delete-prereq"></a>
+  AWS Cloud9 환경에서 사용 중인 자격 증명에 CloudFormation 서비스에 대한 적절한 읽기/쓰기 액세스 권한이 포함되어 있는지 확인합니다. **AWS 탐색기**의 **CloudFormation**에서 “Error loading CloudFormation resources(Cloud Formation 리소스를 로드하는 동안 오류가 발생했습니다)”와 유사한 메시지가 표시되면 해당 자격 증명에 연결된 권한을 확인합니다. 권한을 변경한 경우 **AWS 탐색기**에 적용되는 데 몇 분 정도 걸립니다.

## CloudFormation 스택을 삭제하려면


1. **AWS 탐색**기에서 삭제하려는 CloudFormation 스택의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 엽니다.

1. **CloudFormation 스택 삭제**를선택합니다.

1. 나타나는 메시지에서 **예**를 선택하여 삭제되었는지 확인합니다.

스택이 삭제되면 더 이상 **AWS Explorer**에 나열되지 않습니다.

# AWS 도구 키트를 사용하여 CloudWatch Logs 작업
<a name="cloudwatch-logs-toolkit"></a>

Amazon CloudWatch Logs를 사용하여 확장성 AWS 서비스 이 뛰어난 단일 서비스에서 모든 시스템 및 애플리케이션과 사용하는의 로그를 중앙 집중화할 수 있습니다. 그런 다음 로그를 쉽게 보고, 특정 오류 코드 또는 패턴이 있는지 검색하고, 특정 필드를 기반으로 필터링하거나, 향후 분석을 위해 안전하게 보관할 수 있습니다. 자세한 내용은 Amazon CloudWatch 사용 설명서에서 [Amazon CloudWatch Logs란 무엇입니까?](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatchLogs.html)를 참조하세요.

다음 주제에서는 AWS 도구 키트를 사용하여 AWS 계정에서 CloudWatch Logs를 사용하는 방법을 설명합니다.

**Topics**
+ [CloudWatch 로그 그룹 및 로그 스트림 보기](viewing-CloudWatch-logs.md)
+ [CloudWatch 로그 이벤트 작업](working-CloudWatch-log-events.md)

# AWS 도구 키트를 사용하여 CloudWatch 로그 그룹 및 로그 스트림 보기
<a name="viewing-CloudWatch-logs"></a>

로그 스트림은 동일한 소스를 공유하는 로그 이벤트 시퀀스입니다. CloudWatch Logs의 개별 로그 소스는 각각의 로그 스트림을 구성합니다.

로그 그룹은 동일한 보존 기간, 모니터링 및 액세스 제어 설정을 공유하는 로그 스트림 그룹입니다. 로그 그룹을 정의하고 각 그룹에 배치할 스트림을 지정할 수 있습니다. 하나의 로그 그룹에서 포함할 수 있는 로그 스트림의 수에는 제한이 없습니다.

자세한 내용은 Amazon CloudWatch 사용 설명서에서 [Log Groups 및 Log Streams 작업](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Working-with-log-groups-and-streams.html)을 참조하세요.

**Topics**
+ [**CloudWatch Logs** 노드를 사용하여 로그 그룹 및 로그 스트림 보기](#viewing-log-groups)

## **CloudWatch Logs** 노드를 사용하여 로그 그룹 및 로그 스트림 보기
<a name="viewing-log-groups"></a>

1. 아직 열려 있지 않은 경우 AWS 탐색기를 엽니다.

1. **CloudWatch Logs** 노드를 클릭하여 로그 그룹 목록을 확장합니다.

   현재의 로그 그룹은 **CloudWatch Logs** 노드 아래에 AWS 리전 표시됩니다.

1. 특정 로그 그룹의 로그 스트림을 보려면 로그 그룹 이름의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 **View Log Streams**(로그 스트림 보기)를 선택합니다.

1. 로그 그룹의 콘텐츠가 [**로그 스트림 선택(Select a log stream)**] 머리글 아래에 표시됩니다.

   목록에서 특정 스트림을 선택하거나 필드에 텍스트를 입력하여 스트림을 필터링할 수 있습니다.

   스트림을 선택하면 해당 스트림의 이벤트가 IDE의 **Log Streams**(로그 스트림) 창에 표시됩니다. 각 스트림의 로그 이벤트와 상호 작용하는 방법에 대한 자세한 내용은 [CloudWatch 로그 이벤트 작업](working-CloudWatch-log-events.md) 섹션을 참조하세요.

# 로그 스트림의 CloudWatch 로그 이벤트 작업
<a name="working-CloudWatch-log-events"></a>

**로그 스트림** 창을 열면 각 스트림의 로그 이벤트에 액세스할 수 있습니다. 로그 이벤트는 모니터링 중인 애플리케이션 또는 리소스에 의해 기록된 활동의 기록입니다.

**Topics**
+ [로그 스트림 정보 보기 및 복사](#viewing-log-events)
+ [로그 스트림 편집기의 콘텐츠를 로컬 파일에 저장](#saving-CW-logs)

## 로그 스트림 정보 보기 및 복사
<a name="viewing-log-events"></a>

로그 스트림을 열 때 [**로그 스트림(Log Stream)**] 창에 해당 스트림의 로그 이벤트 시퀀스가 표시됩니다.

1. 보려는 로그 스트림을 찾으려면 **Log Stream**(로그 스트림) 창을 엽니다. 자세한 내용은 [CloudWatch 로그 그룹 및 로그 스트림 보기](viewing-CloudWatch-logs.md) 단원을 참조하십시오.

   이벤트가 나열된 각 줄에는 기록된 시점을 알 수 있는 타임스탬프가 있습니다.

1. 다음 옵션을 사용하여 스트림 이벤트에 대한 정보를 보고 복사할 수 있습니다.
   + **View events by time(시간별 이벤트 보기): ****Load newer events**(더 새로운 이벤트 로드) 또는 **Load older events**(더 이전 이벤트 로드)를 선택하여 최신 및 이전 로그 이벤트를 표시합니다.
**참고**  
**Log Stream**(로그 스트림) 편집기는 처음에 가장 최근의 10,000개 줄의 로그 이벤트 또는 1MB의 로그 데이터 중 더 작은 항목의 배치를 로드합니다. **Load newer events**(최근 이벤트 로드)를 선택하면 편집기에 마지막 배치가 로드된 이후 기록된 이벤트가 표시됩니다. **Load older events**(이전 이벤트 로드)를 선택하면 편집기에 현재 표시된 이벤트보다 이전에 발생한 이벤트 배치가 표시됩니다.
   + **Copy log events(로그 이벤트 복사):** 복사할 이벤트를 선택한 다음 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 메뉴에서 **Copy**(복사)를 선택합니다.
   + **Copy the log stream's name(로그 스트림의 이름 복사):** **Log Stream**(로그 스트림) 창의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 **Copy Log Stream Name**(로그 스트림 이름 복사)을 선택합니다.

## 로그 스트림 편집기의 콘텐츠를 로컬 파일에 저장
<a name="saving-CW-logs"></a>

CloudWatch 로그 스트림 편집기의 콘텐츠를 로컬 시스템의 `log` 파일로 다운로드할 수 있습니다.

**참고**  
이 옵션을 사용하면 로그 스트림 편집기에 현재 표시된 로그 이벤트만 파일에 저장할 수 있습니다. 예를 들어 로그 스트림의 총 크기가 5MB이고 편집기에 2MB만 로드되었다고 가정해보겠습니다. 저장된 파일은 2MB의 로그 데이터만 포함합니다. 저장할 데이터를 더 표시하려면 편집기에서 [**더 새로운 이벤트 로드(Load newer events)**] 또는 [**더 이전 이벤트 로드(Load older events)**]를 선택합니다.

1. 복사할 로그 스트림을 찾으려면 [**로그 스트림(Log Streams)**] 창을 엽니다([CloudWatch 로그 그룹 및 로그 스트림 보기](viewing-CloudWatch-logs.md) 참조).

1. **Log Stream**(로그 스트림) 창 탭의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 **Save Current Log Content to File**(현재 로그 콘텐츠를 파일에 저장)을 선택합니다.

1. 이 대화 상자를 사용하여 로그 파일의 다운로드 폴더를 선택하거나 생성한 다음 **Save**(저장)를 선택합니다.

# AWS 도구 키트를 사용하여 AWS Lambda 함수 작업
<a name="lambda-toolkit"></a>

 AWS 도구 키트는 [AWS Lambda](https://aws.amazon.com/lambda/) 함수를 지원합니다. AWS 도구 키트는 이전에 Lambda 플러그인에서 제공한 기능을 대체합니다 AWS Cloud9. AWS 도구 키트를 사용하면 [서버리스 애플리케이션의](https://aws.amazon.com/serverless/) 일부인 Lambda 함수에 대한 코드를 작성할 수 있습니다. 또한 Lambda 함수를 로컬 또는 AWS에서 호출할 수 있습니다.

Lambda는 사용자 지정 코드로 생성하거나 다양한 AWS 서비스에서 생성된 이벤트에 대한 응답으로 코드를 실행하는 완벽하게 관리되는 컴퓨팅 서비스입니다. 대표적인 예는 Amazon Simple Storage Service(S3), Amazon DynamoDB, Amazon Kinesis, Amazon Simple Notification Service(SNS)와 Amazon Cognito입니다.

**중요**  
Serverless Application Model(SAM)에서 제공하는 리소스를 사용하는 Lambda 애플리케이션을 빌드하려면 [AWS 도구 키트 AWS SAM 사용 작업](serverless-apps-toolkit.md) 섹션을 참조하세요.

**Topics**
+ [원격 Lambda 함수 호출](#remote-lambda)
+ [Lambda 함수 다운로드, 업로드 및 삭제](#import-upload-delete-lambda)

## 원격 Lambda 함수 호출
<a name="remote-lambda"></a>

 AWS 도구 키트를 사용하면 다양한 방법으로 [AWS Lambda](https://aws.amazon.com/lambda/) 함수와 상호 작용할 수 있습니다.

Lambda에 대한 자세한 내용은 [AWS Lambda 개발자 안내서](https://docs.aws.amazon.com/lambda/latest/dg/)를 참조하세요.

**참고**  
 AWS Management Console 를 사용하거나 다른 방식으로 Lambda 함수를 이미 생성했다고 가정해 보겠습니다. AWS 도구 키트에서 호출할 수 있습니다. AWS 도구 키트를 사용하여 배포할 수 있는 새 함수를 생성하려면 먼저 [서버리스 애플리케이션을 생성](serverless-apps-toolkit.md#sam-create) AWS Lambda해야 합니다.

### 사전 조건
<a name="remote-lambda-prereq"></a>
+ 에서 구성한 자격 증명에 AWS Lambda 서비스에 대한 적절한 읽기/쓰기 액세스 권한이 포함되어 있는지 확인합니다. **AWS 탐색기**의 [**Lambda**] 아래에 “Error loading Lambda resources(Lambda 리소스를 로드하는 동안 오류가 발생했습니다)”와 유사한 메시지가 표시되면 해당 자격 증명에 연결된 권한을 확인합니다. 권한을 변경한 경우 AWS 도구 키트에서 **AWS 탐색기**에 적용되는 데 몇 분 정도 걸립니다.

### Lambda 함수 호출
<a name="invoke-lam-func"></a>

**중요**  
 AWS 도구 키트를 사용하여 API 메서드를 호출하면 실행 취소할 수 없는 리소스가 변경될 수 있습니다. 예를 들어 `POST` 메서드를 호출하면 호출이 성공할 경우 API의 리소스가 업데이트됩니다.

 AWS 도구 키트를 AWS 사용하여에서 Lambda 함수를 호출할 수 있습니다.

****

1. **AWS Explorer**에서 호출하려는 Lambda 함수의 이름을 선택한 다음 컨텍스트 메뉴를 엽니다.

1. **간접 호출 켜기를 AWS** 선택합니다.

1. [**함수 호출(Invoke function)**] 창이 열리면 Lambda 함수에 필요한 페이로드의 옵션을 선택합니다. (페이로드는 Lambda 함수에 입력으로 제공하려는 JSON입니다.) **Browse**(찾아보기)를 선택하여 페이로드로 사용할 파일을 선택하거나 드롭다운 필드를 사용하여 페이로드에 대한 템플릿을 선택합니다. 이 경우 Lambda 함수는 텍스트 상자에 표시된 것처럼 문자열인 입력으로 표시될 있습니다.

**Invoke)**(호출)을 선택하여 Lambda를 호출하고 페이로드를 전달합니다.

 AWS Lambda 탭에 Lambda 함수의 출력이 표시됩니다.

## Lambda 함수 다운로드, 업로드 및 삭제
<a name="import-upload-delete-lambda"></a>

 AWS 도구 키트는 AWS Cloud9 IDE에서 Lambda 함수를 가져오고 업로드하는 옵션을 제공합니다.

### Lambda 함수 다운로드
<a name="w2aac28c32c13b5"></a>

Lambda 함수를 다운로드하면 AWS 클라우드에서 함수를 설명하는 프로젝트 파일도 다운로드하여 AWS Cloud9 IDE에서 작업할 수 있습니다.

### Lambda 함수를 다운로드하려면


1. **AWS 탐색기**의 Lambda 노드에서 함수의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 **Download**(다운로드)를 선택합니다.

1. **새 프로젝트의 WorkSpace 폴더를 선택**하라는 메시지가 나타나면 다음 중 하나를 수행할 수 있습니다.
   + 제안된 폴더를 선택하여 Lambda 프로젝트와 같은 이름의 하위 폴더를 만듭니다.
   + [**다른 폴더 선택(Select a different folder)**]을 선택하여 프로젝트 하위 폴더의 다른 상위 폴더를 찾아 선택하는 대화 상자를 엽니다.

   IDE가 새 편집기 창을 엽니다.

### 실행 및 디버깅을 위해 다운로드한 Lambda 함수 구성
<a name="w2aac28c32c13b7"></a>

다운로드한 Lambda 함수를 서버리스 애플리케이션으로 실행하고 디버그하려면 시작 구성을 `launch.json` 파일에 정의해야 합니다. 에서 생성된 Lambda 함수는 시작 구성에 포함되지 않을 AWS Management Console 수 있습니다. 따라서 수동으로 추가해야 할 수 있습니다.

### 시작 구성에 Lambda 함수를 추가하려면


1. Lambda 함수를 다운로드한 후 **Environment**(환경) 창을 열어 해당 폴더와 파일을 봅니다.

1. 그런 다음 Lambda 함수가 `/home/ec2-user/.c9/launch.json` 파일에 포함되어 있는지 확인합니다. 없는 경우 다음을 수행하여 함수 코드에 CodeLens 링크를 추가합니다.

   1. Lambda 함수를 정의하는 소스 코드 파일(예:`.js` 또는 `.py` 파일)을 엽니다. 그런 다음 Lambda 함수를 `launch.json` 파일에 추가하는 데 사용할 수 있는 CodeLens 링크가 있는지 확인합니다. CodeLens는 함수 위에 나타나며 `Add Debug Config` 링크를 포함합니다.

   1. IDE 왼쪽에서 **Go**(이동)(돋보기 아이콘)을 선택하고 'sam hint'를 입력하여 `AWS: Toggle SAM hints in source files` 명령을 표시합니다. 명령을 선택하여 실행합니다.

   1. Lambda 소스 코드 파일을 닫은 다음 다시 엽니다.

   1. 파일을 다시 연 후 소스 코드에서 CodeLens를 사용할 수 있는 경우 `Add Debug Config`를 선택하여 시작 구성을 추가합니다.

1. SAM 힌트 옵션을 전환한 후에도 CodeLens를 추가할 수 없는 경우 다음을 수행하여 시작 구성을 추가합니다.

   1. IDE 왼쪽에서 **이동(Go)**(돋보기 아이콘)을 선택하고 'config'를 입력하여 `AWS: SAM Debug Configuration Editor` 명령을 표시합니다. 명령을 선택하여 실행합니다.

   1. **SAM Debug Configuration Editor**(SAM 디버그 구성 편집기)가 표시됩니다. 이 편집기를 사용하여 시작 구성 속성을 정의할 수 있습니다. 자세한 내용은 [SAM 템플릿을 사용하여 서버리스 애플리케이션 실행 및 디버깅](serverless-apps-toolkit.md#sam-run-debug-template)의 [configuring launch properties](serverless-apps-toolkit.md#properties) 단계를 참조하세요.
**참고**  
Lambda 함수에 SAM 애플리케이션용 `template.yaml`이 없다면 이를 추가해야 합니다. 자세한 내용은 [AWS SAM 템플릿 생성](https://docs.aws.amazon.com/codedeploy/latest/userguide/tutorial-lambda-sam-template.html)을 참조하세요.

   1. 편집기에서 필수 구성 정보의 입력을 마치면 시작 구성이 **launch.json** 파일에 추가됩니다.

Lambda 함수에 대한 시작 구성을 정의한 후 다음을 수행하여 해당 시작 구성을 실행할 수 있습니다.

1. IDE 상단에서 **자동(Auto)** 옆에 있는 화살표를 선택하고 해당 시작 구성을 선택합니다.

1. 그런 다음 **실행(Run)**을 선택합니다

### Lambda 함수 업로드
<a name="w2aac28c32c13b9"></a>

로컬 코드로 기존 Lambda 함수를 업데이트할 수 있습니다. 이러한 방식으로 코드를 업데이트하면 배포에 AWS Serverless Application Model CLI를 사용하지 않으며 AWS CloudFormation 스택을 생성하지 않습니다. 이렇게 하면 Lambda에서 지원하는 모든 런타임을 사용하여 Lambda 함수를 업로드할 수 있습니다.

 AWS 도구 키트를 사용하여 Lambda 함수를 업로드하는 몇 가지 인터페이스 옵션이 있습니다.

#### **환경(Environment)** 창 또는 **명령(Command)** 창에서 업로드
<a name="upload-lambda-from-environment"></a>

1. 프로젝트 파일의 **Environment**(환경) 창에서 업로드하려는 Lambda 애플리케이션용 `template.yaml`의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 **Upload Lambda**(Lambda 업로드)를 선택합니다.

   또는 **Ctrl\$1P**를 눌러 **바로 가기(Go to Anything)** 창을 열고 'lambda'를 입력하여 **AWS Upload Lambda** 명령에 액세스합니다. 그런 다음 이를 선택하여 업로드 프로세스를 시작합니다.

1. 그런 다음 업로드할 AWS 리전 을 선택합니다.

1. 이제 Lambda 함수를 업로드하기 위한 옵션을 선택합니다.

   **.zip 아카이브 업로드**

   1. 메뉴에서 [**ZIP 아카이브(ZIP Archive)**]를 선택합니다.

   1. 파일 시스템에서 .zip AWS Cloud9 파일을 선택하고 **열기**를 선택합니다.

   **디렉터리를 있는 그대로 업로드**

   1. 메뉴에서 [**디렉터리(Directory)**]를 선택합니다.

   1.  AWS Cloud9 파일 시스템에서 디렉터리를 선택하고 **열기**를 선택합니다.

1. 이벤트를 처리하는 Lambda 함수 핸들러를 지정합니다. 함수가 호출되면 Lambda가 이 핸들러 메서드를 실행합니다.
**참고**  
Lambda 함수를 선택할 때는 표시된 목록에서 선택할 수 있습니다. 어떤 함수를 선택해야 할지 모르는 경우 도구 키트에서 사용할 수 있는 Lambda 함수의 Amazon 리소스 번호(ARN)를 입력할 수 있습니다.

   이 코드를 Lambda 함수의 최신 버전으로 게시할지 여부를 묻는 대화 상자가 표시됩니다. **예(Yes)**를 선택하여 게시를 확인합니다.
**참고**  
상위 폴더의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 **Upload Lambda**(Lambda 업로드)를 선택하여 Lambda 애플리케이션을 업로드할 수도 있습니다. 업로드 시 상위 폴더는 자동으로 선택됩니다.

#### **AWS 탐색기**에서 업로드
<a name="upload-lambda-from-explorer"></a>

1. **AWS 탐색기**에서 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고(마우스 오른쪽 버튼 클릭), 가져올 Lambda 함수의 이름을 선택합니다.

1. **Lambda 업로드(Upload Lambda)**를 선택합니다.

1. Lambda 함수를 업로드하는 세 가지 옵션 중에서 선택합니다.

   **미리 만든 .zip 아카이브 업로드**

   1. 메뉴에서 [**ZIP 아카이브(ZIP Archive)**]를 선택합니다.

   1. 파일 시스템에서 .zip AWS Cloud9 파일을 선택하고 **열기**를 선택합니다.

   1. 모달 대화 상자로 업로드를 확인합니다. 이렇게 하면 .zip 파일이 업로드되고 배포 후 Lambda가 즉시 업데이트됩니다.

   **디렉터리를 있는 그대로 업로드**

   1. 메뉴에서 [**디렉터리(Directory)**]를 선택합니다.

   1.  AWS Cloud9 파일 시스템에서 디렉터리를 선택하고 **열기**를 선택합니다.

   1. 디렉터리를 빌드할지 묻는 메시지가 나타나면 [**아니요(No)**]를 선택합니다.

   1. 모달 대화 상자로 업로드를 확인합니다. 이렇게 하면 디렉터리가 있는 그대로 업로드되고 배포 후 Lambda가 즉시 업데이트됩니다.

   **디렉터리 구축 및 업로드**

   1. 메뉴에서 [**디렉터리(Directory)**]를 선택합니다.

   1.  AWS Cloud9 파일 시스템에서 디렉터리를 선택하고 **열기**를 선택합니다.

   1. 디렉터리를 빌드할지 묻는 메시지가 나타나면 [**예(Yes)**]를 선택합니다.

   1. 모달 대화 상자로 업로드를 확인합니다. 이렇게 하면 AWS SAM CLI `sam build` 명령을 사용하여 디렉터리에 코드를 빌드하고 배포 후 Lambda를 즉시 업데이트합니다.

### 원격 액세스를 위한 Lambda 함수 배포
<a name="w2aac28c32c13c11"></a>

로컬 함수를 서버리스 SAM 애플리케이션으로 배포하여 원격으로 사용 가능하게 할 수 있습니다.

### Lambda 함수를 SAM 애플리케이션으로 배포하려면


1. **AWS 탐색기** 창에서 **Lambda** 노드의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 **Deploy SAM Application**(SAM 애플리케이션 배포)를 선택합니다.

1. 명령 창에서 함수를 서버리스 애플리케이션으로 정의하는 [YAML 템플릿](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-specification-template-anatomy.html)을 선택합니다.

1. 그런 다음 Lambda 배포에 사용할 Amazon S3 버킷을 선택합니다. 배포용 버킷을 생성하도록 선택할 수도 있습니다.

1. 이제 배포하려는 CloudFormation 스택의 이름을 입력합니다. 기존 스택을 지정하면 명령이 스택을 업데이트합니다. 새 스택을 지정하면 명령이 스택을 생성합니다.

   스택 이름을 입력하면 Lambda 함수가 SAM 애플리케이션으로 배포되기 시작합니다. 배포에 성공하면 SAM Lambda 애플리케이션을 원격으로 사용할 수 있습니다. 이렇게 하면 다른 AWS Cloud9 개발 환경에서 다운로드하거나 호출할 수 있습니다.

처음부터 Lambda 함수를 생성하려면 [AWS 도구 키트를 사용하여 서버리스 애플리케이션 생성](serverless-apps-toolkit.md#create-serverless-app) 단계를 따르는 것이 좋습니다.

### Lambda 함수 삭제
<a name="delete-lambda"></a>

동일한 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 사용하여 Lambda 함수를 삭제할 수도 있습니다.

**주의**  
이 절차를 사용하여 [CloudFormation](https://docs.aws.amazon.com/cloudformation/)과 연결된 Lambda 함수를 삭제해선 안 됩니다. 예를 들어 이 설명서 앞부분에서 [서버리스 애플리케이션을 만들 때](serverless-apps-toolkit.md#sam-create) 생성한 Lambda 함수를 삭제해선 안 됩니다. 이러한 함수는 CloudFormation 스택을 통해 삭제해야 합니다.

****

1. **AWS 탐색기**에서 삭제할 Lambda 함수의 이름을 선택한 다음 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 엽니다.

1. **Delete**를 선택합니다.

1. 보고 있는 메시지에서 **Yes**를 선택하여 삭제합니다.

함수가 삭제되면 더 이상 **AWS 탐색기** 보기에 나열되지 않습니다.

# 리소스 작업
<a name="more-resources"></a>

 AWS 탐색기에 기본적으로 AWS 서비스 나열된에 액세스하는 것 외에도 **리소스**로 이동하여 수백 개의 리소스 중에서 선택하여 인터페이스에 추가할 수 있습니다. 에서 AWS**리소스**는 작업할 수 있는 엔터티입니다. 추가된 일부 리소스에는 Amazon AppFlow, Amazon Kinesis Data Streams, AWS IAM 역할, Amazon VPC 및 Amazon CloudFront 배포가 포함됩니다.

사용 가능한 리소스를 보려면 **리소스(Resources)**로 이동하고 리소스 유형을 확장하여 해당 유형에 사용 가능한 리소스를 나열합니다. 예를 들어 `AWS::Lambda::Function` 리소스 유형을 선택하면 다양한 기능, 해당 속성 및 특성을 정의하는 리소스에 액세스할 수 있습니다.

리소스 유형을 **리소스**에 추가한 후 다음과 같은 방법으로 해당 리소스와 상호 작용할 수 있습니다.
+ 이 리소스 유형에 AWS 리전 대해 현재에서 사용할 수 있는 기존 리소스 목록을 봅니다.
+ 리소스를 설명하는 JSON 파일의 읽기 전용 버전을 봅니다.
+ 리소스의 리소스 식별자를 복사합니다.
+ 리소스 유형 및 리소스 모델링을 위한 스키마( JSON 및 YAML 형식)의 용도를 설명하는 AWS 설명서를 봅니다.

## 리소스 액세스를 위한 IAM 권한
<a name="cloud-api-permissions"></a>

와 연결된 리소스에 액세스하려면 특정 AWS Identity and Access Management 권한이 필요합니다 AWS 서비스. 예를 들어 사용자 또는 역할과 같은 IAM 엔터티는 Lambda 권한이 있어야 `AWS::Lambda::Function` 리소스에 액세스할 수 있습니다.

서비스 리소스에 대한 권한 외에도 IAM 엔터티에는 AWS 도구 키트가 AWS Cloud Control API 작업을 호출하도록 허용하는 권한이 필요합니다. Cloud Control API 작업을 통해 IAM 사용자 또는 역할이 원격 리소스에 액세스하고 업데이트할 수 있습니다.

도구 키트 인터페이스를 사용하여 이러한 API 작업을 호출하는 IAM 엔터티에 AWS 관리형 정책인 **PowerUserAccess**를 연결하여 권한을 빠르게 부여할 수 있습니다. 이 관리형 정책은 API 작업 호출을 포함하여 애플리케이션 개발 작업을 수행할 수 있는 다양한 권한을 부여합니다.

원격 리소스에서 허용 가능한 API 작업을 정의하는 특정 권한은 [AWS Cloud Control API 사용 설명서를 참조하세요.](https://docs.aws.amazon.com//cloudcontrolapi/latest/userguide/security.html)

## 기존 리소스와 상호 작용
<a name="configure-resources"></a>

1. **AWS Explorer**에서 **리소스(Resources)**를 선택합니다.

   리소스 유형 목록이 **리소스(Resources)** 노드에 표시됩니다.

1. 리소스 유형에 대한 템플릿을 정의하는 구문을 설명하는 설명서가 있습니다. 이 설명서에 액세스하려면 해당 리소스 유형의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 **설명서 보기**를 선택합니다.
**참고**  
설명서 페이지에 액세스할 수 있도록 브라우저의 팝업 차단기를 해제하는 메시지가 표시될 수 있습니다.

1. 리소스 유형에 속한 리소스를 보려면 해당 유형의 항목을 확장합니다.

   사용 가능한 리소스 목록이 해당 리소스 유형 아래에 표시됩니다.

1. 특정 리소스와 상호 작용하려면 리소스 이름의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 다음 옵션 중 하나를 선택합니다.
   + **식별자 복사**: 특정 리소스의 식별자를 클립보드에 복사합니다. 예를 들어 `TableName` 속성을 사용하여 `AWS::DynamoDB::Table` 리소스를 식별할 수 있습니다.
   + **미리 보기**: 리소스를 설명하는 JSON 형식 템플릿의 읽기 전용 버전을 봅니다.

# AWS 도구 키트를 사용하여 Amazon S3 작업
<a name="s3-toolkit"></a>

다음 주제에서는 AWS 도구 키트를 사용하여에서 [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/) 버킷 및 객체를 사용하는 방법을 설명합니다 AWS 계정.

**Topics**
+ [Amazon S3 버킷 작업](work-with-S3-buckets.md)
+ [Amazon S3 객체 작업](work-with-S3-objects.md)

# Amazon S3 버킷 작업
<a name="work-with-S3-buckets"></a>

Amazon S3에 저장한 모든 객체는 버킷에 존재합니다. 디렉토리로 파일 시스템 내 파일을 그룹화하듯 버킷으로 관련 객체를 그룹화할 수 있습니다.

**Topics**
+ [Amazon S3 버킷 생성](#creating-s3-bucket)
+ [Amazon S3 버킷에 폴더 추가](#adding-folders)
+ [Amazon S3 버킷 삭제](#deleting-s3-buckets)
+ [Amazon S3 항목의 표시 구성](#configuring-items-display)

## Amazon S3 버킷 생성
<a name="creating-s3-bucket"></a>

1. **AWS 탐색기**에서 **S3** 노드의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 연 다음 **Create Bucket**(버킷 생성)을 선택합니다.

1. [**버킷 이름(Bucket Name)**] 필드에 버킷의 유효한 이름을 입력합니다. **Enter** 키를 눌러 확인합니다.

   새 버킷이 **S3** 노드 아래에 표시됩니다.
**Note**  
S3 버킷은 공개적으로 액세스할 수 URL로 사용할 수 있으므로, 선택하는 버킷 이름은 전세계적으로 고유해야 합니다. 다른 계정이 이미 선택한 이름을 가진 버킷을 생성한 경우 다른 이름을 사용해야 합니다.  
버킷을 만들 수 없다면 **Output**(출력) 탭에서 **AWS Toolkit Logs**(도구 키트 로그)를 확인하세요. 예를 들어 이미 사용 중인 버킷 이름을 사용하면 `BucketAlreadyExists` 오류가 발생합니다. 자세한 내용은 *Amazon Simple Storage Service 사용 설명서*의 [Bucket restrictions and limitations](https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html)을 참조하세요.

   버킷이 생성된 후에는 버킷의 이름과 Amazon 리소스 이름(ARN)을 클립보드로 복사할 수 있습니다. 버킷 항목에 대한 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 관련 옵션을 선택합니다.

## Amazon S3 버킷에 폴더 추가
<a name="adding-folders"></a>

객체를 폴더에 그룹화하여 버킷의 콘텐츠를 구성합니다. 다른 폴더 내에 폴더를 만들 수도 있습니다.

1. **AWS 탐색기**에서 [**S3**] 노드를 선택하여 버킷 목록을 봅니다.

1. 버킷 또는 폴더에 대한 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 연 다음 **Create Folder**(폴더 생성)를 선택합니다.

1. [**폴더 이름(Folder Name)**]을 입력한 다음 **Enter** 키를 누릅니다.

   이제 새 폴더가 **AWS 탐색기** 창의 선택한 버킷 및 폴더 아래에 표시됩니다.

## Amazon S3 버킷 삭제
<a name="deleting-s3-buckets"></a>

버킷을 삭제하면 버킷에 포함된 폴더와 객체도 삭제됩니다. 버킷을 삭제하기 전에 이 작업을 정말로 수행할지 묻는 메시지가 나타납니다.

**참고**  
전체 버킷이 아니라 [폴더만 삭제하려면](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-folders.html) AWS Management Console을 사용합니다.

1. **AWS 탐색기**에서 [**S3**] 노드를 선택하여 버킷 목록을 확장합니다.

1. 삭제할 버킷의 컨텍스트 메뉴를 연 다음 [**삭제(Delete)**]를 선택합니다.

1. 버킷의 이름을 입력하여 삭제 의사를 확인한 다음 **Enter** 키를 누릅니다.
**참고**  
버킷에 객체가 포함되어 있으면 삭제하기 전에 버킷이 비워집니다. 수천 개 객체의 모든 버전을 삭제해야 하는 경우 다소 시간이 걸릴 수 있습니다. 삭제 프로세스가 완료되면 알림이 표시됩니다.

## Amazon S3 항목의 표시 구성
<a name="configuring-items-display"></a>

많은 수의 Amazon S3 객체 또는 폴더로 작업하는 경우 한 번에 표시되는 수를 지정하는 것이 도움이 됩니다. 최대 개수의 객체 또는 폴더가 표시되어 있는 경우 [**추가로 로드(Load More)**]를 선택하여 다음 배치를 표시할 수 있습니다.

1. 메뉴 모음에서 [**AWS Cloud9**], [**기본 설정(Preferences)**]을 선택합니다.

1. **기본 설정(Preferences)** 창에서 **프로젝트 설정(Project Settings)**을 확장하고 **확장(EXTENSIONS)** 섹션으로 이동하여 **AWS 구성(AWS Configuration)**을 선택합니다.

1. **AWS 구성(AWS Configuration)** 창에서 **AWS > S3: 페이지당 최대 항목 수(AWS > S3: Max Items Per Page)** 설정으로 이동합니다.

1. 추가 항목을 로드하도록 선택하기 전에, 표시하려는 S3 항목 수로 기본값을 변경합니다.
**참고**  
허용되는 값의 범위는 3에서 1,000 사이입니다. 이 설정은 한 번에 표시되는 객체 또는 폴더 수에만 적용됩니다. 생성한 모든 버킷이 한 번에 표시됩니다. 기본적으로 AWS 계정각각에 대해 최대 100개의 버킷을 만들 수 있습니다.

# Amazon S3 객체 작업
<a name="work-with-S3-objects"></a>

객체는 Amazon S3에 저장된 기본 엔터티입니다. 객체는 객체 데이터와 메타데이터로 구성됩니다.

**Topics**
+ [Amazon S3 버킷에 파일 업로드](#uploading-s3-object-to-bucket)
+ [Amazon S3 객체 다운로드](#downloading-s3-object)
+ [Amazon S3 객체 삭제](#deleting-s3-object)
+ [Amazon S3 객체에 대해 미리 서명된 URL 생성](#presigned-s3-object)

## Amazon S3 버킷에 파일 업로드
<a name="uploading-s3-object-to-bucket"></a>

도구 키트 인터페이스 또는 명령을 사용하여 버킷에 파일을 업로드할 수 있습니다.

두 방법 모두 사용자의 환경에서 파일을 업로드하여 AWS 클라우드에 S3 객체로 저장할 수 있습니다. 버킷이나, 버킷의 콘텐츠를 구성하는 폴더에 파일을 업로드할 수 있습니다.

## 인터페이스를 사용하여 S3 버킷에 파일 업로드


1. **AWS 탐색기**에서 [**S3**] 노드를 선택하여 버킷 목록을 봅니다.

1. 버킷 또는 해당 버킷의 폴더에 대한 컨텍스트 메뉴를 연(마우스 오른쪽 버튼 클릭) 다음 [**파일 업로드(Upload File)**]를 선택합니다.
**Note**  
S3 객체의 컨텍스트 메뉴를 연(마우스 오른쪽 버튼 클릭) 경우 [**상위에 업로드(Upload to Parent)**]를 선택할 수 있습니다. 이렇게 하면 선택한 파일이 들어 있는 폴더나 버킷에 파일을 추가할 수 있습니다.

1. 환경의 파일 관리자를 사용하여 파일을 선택한 다음 [**업로드(Upload)**]를 선택합니다.

   선택한 파일이 S3 객체로 버킷 또는 폴더에 업로드됩니다. 각 객체의 항목은 저장된 객체의 크기와 업로드 기간을 설명합니다. 객체의 목록을 일시 중지하여 마지막으로 수정한 경로, 크기 및 시간을 볼 수 있습니다.

## 명령을 사용하여 S3 버킷에 현재 파일 업로드


1. 업로드할 파일을 선택하려면 해당 파일의 탭을 선택합니다.

1. **Ctrl\$1P**를 눌러 [**명령(Commands)**] 창을 표시합니다.

1. [**바로 가기(Go To Anything)**] `upload file`이라는 문구를 입력하기 시작하여 `AWS: Upload File` 명령을 표시합니다. 명령이 표시되면 선택합니다.

1. [**1단계: 업로드할 파일 선택(Step 1: Select a file to upload)**]에서 선택한 파일을 선택하거나 다른 파일을 찾아볼 수 있습니다.

1. [**2단계: 업로드할 S3 버킷 선택(Step 2: Select an S3 bucket to upload to)**의 목록에서 버킷을 선택합니다.

   선택한 파일이 S3 객체로 버킷 또는 폴더에 업로드됩니다. 각 객체의 항목은 저장된 객체의 크기와 업로드 기간을 설명합니다. 객체의 목록을 일시 중지하여 마지막으로 수정한 경로, 크기 및 시간을 볼 수 있습니다.

## Amazon S3 객체 다운로드
<a name="downloading-s3-object"></a>

Amazon S3 버킷의 객체를 AWS 클라우드에서 AWS Cloud9 환경의 폴더로 다운로드할 수 있습니다.

1. **AWS 탐색기**에서 [**S3**] 노드를 선택하여 버킷 목록을 봅니다.

1. 버킷이나 버킷의 폴더에서 객체의 컨텍스트 메뉴를 연(마우스 오른쪽 버튼 클릭) 다음 [**다른 이름으로 다운로드(Download As)**]를 선택합니다.

1. 환경의 파일 관리자를 사용하여 대상 폴더를 선택하고 파일 이름을 입력한 다음 [**다운로드(Download)**]를 선택합니다.

파일을 다운로드한 후에는 AWS Cloud9에서 열 수 있습니다.

## Amazon S3 객체 삭제
<a name="deleting-s3-object"></a>

버전이 지정되지 않은 버킷에 있는 객체를 영구적으로 삭제할 수 있습니다. 하지만 버전 관리를 사용하는 버킷의 경우 삭제 요청이 해당 객체를 영구적으로 삭제하지 않습니다. 대신 Amazon S3가 버킷에 삭제 마커를 삽입합니다. 자세한 내용은 *Amazon Simple Storage Service 사용 설명서*에서 [객체 버전 삭제](https://docs.aws.amazon.com/AmazonS3/latest/userguide/DeletingObjectVersions.html)를 참조하세요.

1. **AWS 탐색기**에서 [**S3**] 노드를 선택하여 버킷 목록을 봅니다.

1. 버킷이나 버킷의 폴더에서 객체의 컨텍스트 메뉴를 연(마우스 오른쪽 버튼 클릭) 다음 [**삭제(Delete)**]를 선택합니다.

1. [**삭제(Delete)**]를 선택하여 삭제를 확인합니다.

## Amazon S3 객체에 대해 미리 서명된 URL 생성
<a name="presigned-s3-object"></a>

미리 서명된 URL을 통해 객체 소유자는 객체를 다운로드할 수 있는 제한된 시간 권한을 부여하여 프라이빗 Amazon S3 객체를 다른 사용자와 공유할 수 있습니다. 자세한 내용은 *Amazon S3 사용 설명서*의 [미리 서명된 URL로 객체 공유](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ShareObjectPreSignedURL.html)를 참조하세요.

1. **AWS 탐색기**에서 [**S3**] 노드를 선택하여 버킷 목록을 봅니다.

1. 버킷이나 버킷의 폴더에서 객체를 마우스 오른쪽 버튼으로 클릭한 다음 **미리 서명된 URL 생성**을 선택합니다.

1.  AWS 도구 키트 명령 창에서 URL을 사용하여 객체에 액세스할 수 있는 분 수를 입력합니다. **Enter** 키를 눌러 확인합니다.

   IDE 하단의 상태는 객체에 대해 미리 서명된 URL이 클립보드에 복사되었음을 확인합니다.

# AWS 도구 키트 AWS SAM 사용 작업
<a name="serverless-apps-toolkit"></a>

도구 AWS 키트는 [서버리스 애플리케이션을](https://aws.amazon.com/serverless/) 지원합니다. AWS 도구 키트를 사용하여 [AWS Lambda](https://aws.amazon.com/lambda/) 함수가 포함된 서버리스 애플리케이션을 생성한 다음 애플리케이션을 AWS CloudFormation 스택에 배포할 수 있습니다.

## 서버리스 애플리케이션 만들기
<a name="sam-create"></a>

이 예제에서는 AWS 도구 키트를 사용하여 서버리스 애플리케이션을 생성하는 방법을 보여줍니다. 서버리스 애플리케이션을 실행하고 디버깅하는 방법에 대한 자세한 내용은 [서버리스 애플리케이션 실행 및 디버깅](#sam-run-debug) 섹션을 참조하세요.

서버리스 애플리케이션을 만드는 데 필요한 사전 조건에는 **AWS SAM CLI** 및 **AWS CLI**가 포함됩니다. 이들은에 포함되어 있습니다 AWS Cloud9. AWS SAM CLI가 설치되지 않았거나 오래된 경우 설치 또는 업그레이드를 실행해야 할 수 있습니다. AWS SAM CLI 설치 방법에 대한 지침은 [AWS SAM CLI 설치를](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html#install-sam-cli-instructions) 참조하고 CLI 업그레이드 방법에 대한 지침은 CLI 업그레이드를 AWS SAM 참조하세요. [AWS SAM](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/manage-sam-cli-versions.html#manage-sam-cli-versions-upgrade) 

### AWS 도구 키트를 사용하여 서버리스 애플리케이션 생성
<a name="create-serverless-app"></a>

이 예제에서는 [AWS Serverless Application Model (AWS SAM)](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html)를 사용하여 AWS 도구 키트를 사용하여 서버리스 애플리케이션을 생성하는 방법을 보여줍니다.

1. **AWS 탐색기**에서 **Lambda** 노드의 컨텍스트(마우스 오른쪽 버튼 클릭) 노드를 열고 **Create Lambda SAM Application**(Lambda SAM 애플리케이션 생성)을 선택합니다.
**참고**  
또는 **AWS: 탐색기** 머리글의 맞은편에 있는 메뉴 아이콘을 선택하고 **Create Lambda SAM Application**(Lambda SAM 애플리케이션 생성)을 선택합니다.

1. SAM 애플리케이션의 런타임을 선택합니다. 이 예에서는 **nodejs12.x**를 선택합니다.
**참고**  
“(Image)”라는 표시가 있는 런타임 중 하나를 선택하면 애플리케이션의 패키지 유형이 `Image`가 됩니다. “(Image)”라는 표시가 없는 런타임 중 하나를 선택하면 애플리케이션의 유형이 `Zip`이 됩니다. `Image` 패키지 유형과 `Zip` 패키지 유형의 차이점에 대한 자세한 내용은AWS Lambda 개발자 가이드에서 [Lambda 배포 패키지](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)를 참조하세요.

1. 서버리스 앱에 대해 다음 템플릿 중 하나를 선택합니다.
   + **AWS SAM Hello World**: 클래식 "Hello World" 메시지를 반환하는 Lambda 함수가 있는 기본 템플릿입니다.
   + **AWS Step Functions 샘플 앱**: 주식 거래 워크플로를 실행하는 샘플 애플리케이션입니다. Step Functions는 관련된 Lambda 함수의 상호 작용을 오케스트레이션합니다.

1. 새 프로젝트의 위치를 선택합니다. 사용 가능한 기존 workspace 폴더가 있다면 폴더를 선택합니다. 그렇지 않다면 다른 폴더를 찾아봅니다. **Select a different folder**(다른 폴더 선택)를 선택하면 폴더 위치를 선택할 수 있는 대화 상자가 표시됩니다.

1. 새 애플리케이션의 이름을 입력합니다. `my-sam-app-nodejs`를 입력하세요. **Enter** 키를 누르면 도구 AWS 키트가 프로젝트를 생성하는 데 몇 분 정도 걸립니다.

프로젝트가 생성되면 [환경(Environment)] 창에서 애플리케이션의 파일을 볼 수 있습니다. **Explorer**(탐색기) 창에서 파일을 찾습니다.

![\[SAM 애플리케이션에 사용 가능한 런타임을 보여주는 스크린샷입니다.\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/images/sam-create-app-explorer.png)


## 서버리스 애플리케이션 실행 및 디버깅
<a name="sam-run-debug"></a>

 AWS 도구 키트를 사용하여 서버리스 애플리케이션을 디버깅하고 개발 환경에서 로컬로 실행하는 방법을 구성할 수 있습니다. AWS Serverless Application Model (AWS SAM) 템플릿으로 정의된 서버리스 애플리케이션을 디버깅할 수 있습니다. 이 템플릿은 간단한 YAML 구문을 사용하여 함수, API, 데이터베이스, 서버리스 애플리케이션을 구성하는 이벤트 소스 매핑 등의 리소스를 설명합니다.

 AWS SAM 템플릿을 자세히 알아보려면 개발자 안내서의 [AWS SAM 템플릿 구조를](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-specification-template-anatomy.html) 참조하세요. *AWS Serverless Application Model * 

또는 SAM 템플릿에 커밋되지 않은 서버리스 애플리케이션을 빠르게 디버그할 수 있습니다.

인라인 작업을 사용하여 적합한 AWS Lambda 함수를 식별하여 디버그 동작을 구성하기 시작합니다. SAM 템플릿에 의해 정의된 인프라를 사용하려면, 관련 YAML 형식 파일에서 인라인 작업을 사용합니다. 템플릿 없이 함수를 직접 테스트하려면 애플리케이션 파일의 Lambda 핸들러에 대한 컨텍스트 인식 링크를 사용합니다.

**참고**  
이 예에서는 JavaScript를 사용하는 애플리케이션을 디버그합니다. 하지만 AWS 도구 키트에서 사용할 수 있는 디버깅 기능을 다음 언어 및 런타임과 함께 사용할 수 있습니다.  
JavaScript – Node.js 10.*x*, 12.*x*, 14.*x*
Python – 3.7, 3.8, 3.9, 3.10(Python 2.7 및 3.6 서버리스 애플리케이션은 AWS Toolkit에서 실행 가능하지만 디버깅할 수 없습니다.)
선택하는 언어는 컨텍스트 인식 링크에서 적합한 Lambda 핸들러를 나타내는 방법에도 영향을 미칩니다. 자세한 내용은 [코드에서 직접 서버리스 함수 실행 및 디버깅](#run-debug-no-template) 단원을 참조하십시오.

### SAM 템플릿을 사용하여 서버리스 애플리케이션 실행 및 디버깅
<a name="sam-run-debug-template"></a>

SAM 템플릿을 사용하여 실행 및 디버그되는 애플리케이션의 경우, YAML 형식의 파일은 애플리케이션의 동작 및 애플리케이션에서 사용하는 리소스를 설명합니다. AWS 도구 키트를 사용하여 서버리스 애플리케이션을 생성하면 프로젝트에 대해 라는 파일이 `template.yaml` 자동으로 생성됩니다.

이 절차에서는 [서버리스 애플리케이션 만들기](#sam-create)에서 생성된 예제 애플리케이션을 사용합니다.

### SAM 템플릿을 사용하여 서버리스 애플리케이션을 실행하고 디버그하려면


1. 서버리스 애플리케이션을 구성하는 애플리케이션 파일을 보려면 [**환경(Environment)**] 창으로 이동합니다.

1. 애플리케이션 폴더(예: *my-sample-app*)에서 `template.yaml` 파일을 엽니다.

1. `template.yaml`의 경우 **Edit Launch Configuration**(실행 구성 편집)을 선택합니다.

   새 편집기에 기본 속성의 디버깅 구성을 제공하는 `launch.json` 파일이 표시됩니다.

1. <a name="properties"></a>다음 구성 속성의 값을 편집하거나 확인합니다.
   + `"name"` – **Run**(실행) 보기의 **Configuration**(구성) 드롭다운 필드에 표시할 알아보기 쉬운 이름을 입력합니다.
   + `"target"` – 값이 `"template"`인지 확인합니다. 이렇게 하면 SAM 템플릿이 디버그 세션의 진입점이 됩니다.
   + `"templatePath"` - `template.yaml` 파일의 상대 경로 또는 절대 경로를 입력합니다.
   + `"logicalId"` - 이 이름이 SAM 템플릿의 **Resources**(리소스) 섹션에 지정된 이름과 일치하는지 확인합니다. 이 예에서는 `AWS::Serverless::Function` 유형의 `HelloWorldFunction`입니다.

   `launch.json` 파일의 이들 항목과 기타 항목에 대한 자세한 내용은 [서버리스 애플리케이션 디버깅을 위한 구성 옵션](sam-debug-config-ref.md) 섹션을 참조하세요.

1. 디버그 구성이 만족스럽다면 `launch.json`을 저장합니다. 그런 다음 **RUN**(실행) 옆에 있는 녹색 ‘재생’ 버튼을 선택하여 디버깅을 시작합니다.
**참고**  
SAM 애플리케이션이 실행되지 않는 경우 [**출력(Output)**] 창에서 빌드되지 않은 Docker 이미지로 인해 오류가 발생했는지 확인합니다. 환경에서 디스크 공간을 확보해야 할 수 있습니다.  
자세한 내용은 [AWS Cloud9 환경에 디스크 공간이 충분하지 않아 AWS Toolkit에서 로컬로 SAM 애플리케이션을 실행하는 동안 오류가 발생했습니다.](troubleshooting.md#troubleshooting-dockerimage-toolkit) 단원을 참조하십시오.

   디버깅 세션이 시작되면 **DEBUG CONSOLE**(콘솔 디버그) 패널에 디버깅 출력이 표시되고 Lambda 함수에서 반환된 모든 값이 표시됩니다. SAM 애플리케이션을 디버그하는 경우 **Output**(출력) 패널의 **Output**(출력) 채널로 **AWS Toolkit**(도구 키트)이 선택됩니다.<a name="docker-problem"></a>
**참고**  
Windows 사용자의 경우 이 프로세스 중에 Docker 탑재 오류가 발생하면 **Docker Settings**(Docker 설정)에서 공유 드라이브의 자격 증명을 새로 고쳐야 할 수 있습니다. Docker 탑재 오류는 다음과 유사합니다.  

   ```
   Fetching lambci/lambda:nodejs10.x Docker container image......
   2019-07-12 13:36:58 Mounting C:\Users\<username>\AppData\Local\Temp\ ... as /var/task:ro,delegated inside runtime container
   Traceback (most recent call last):
   ...requests.exceptions.HTTPError: 500 Server Error: Internal Server Error ...
   ```

### 코드에서 직접 서버리스 함수 실행 및 디버깅
<a name="run-debug-no-template"></a>

 AWS SAM 애플리케이션을 테스트할 때 Lambda 함수만 실행하고 디버깅하도록 선택할 수 있습니다. SAM 템플릿으로 정의된 다른 리소스는 제외합니다. 이 방법에서는 인라인 작업을 사용하여 직접 호출할 수 있는 소스 코드에서 Lambda 함수 핸들러를 식별해야 합니다.

컨텍스트 인식 링크로 감지되는 Lambda 핸들러는 애플리케이션에 사용 중인 언어와 런타임에 따라 다릅니다.


|  언어/런타임  | 컨텍스트 인식 링크로 식별되는 Lambda 함수에 대한 조건 | 
| --- | --- | 
|  JavaScript(Node.js 10.x, 12.x 및 14.x)  |  이 함수에는 다음 기능도 포함됩니다.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/serverless-apps-toolkit.html)  | 
|  Python (3.7, 3.8, 3.9, 3.10)  |  이 함수에는 다음 기능도 포함합니다.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/serverless-apps-toolkit.html)  | 

### 애플리케이션 코드에서 직접 서버리스 애플리케이션을 실행하고 디버그하려면




1. 서버리스 애플리케이션 파일을 보려면 편집기 옆의 폴더 아이콘을 선택하여 애플리케이션 폴더로 이동합니다.

1. 애플리케이션 폴더(예: *my-sample-app*)에서 함수 폴더(이 예의 경우 *hello-world*)를 확장하고 `app.js` 파일을 엽니다.

1. 적합한 Lambda 핸들러 함수를 식별하는 인라인 작업에서 `Add Debug Configuration`을 선택합니다. 디버그 구성 추가 옵션이 나타나지 않으면 코드 렌즈를 활성화해야 합니다. 코드 렌즈를 활성화하려면 [AWS 도구 키트 코드 렌즈 활성화](enable-code-lenses.md) 섹션을 참조하세요.  
![\[Lambda 함수 핸들러에 대한 인라인 작업에서 디버그 구성 추가 옵션에 액세스합니다.\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/images/direct_invoke_config.png)

1. SAM 애플리케이션을 실행하는 런타임을 선택합니다.

1. `launch.json` 파일의 편집기에서 다음 구성 속성의 값을 편집하거나 확인합니다.
   + `"name"` - 알아보기 쉬운 이름을 입력합니다.
   + `"target"` - Lambda 함수 핸들러가 직접 호출되도록 값이 `"code"`인지 확인합니다.
   + `"lambdaHandler"` – Lambda가 함수를 호출하는 코드 내에 메서드 이름을 입력합니다. 예를 들어 JavaScript로 작성된 애플리케이션의 경우 기본값은 `app.lambdaHandler`입니다.
   + `"projectRoot"` - Lambda 함수가 포함된 애플리케이션 파일의 경로를 입력합니다.
   + `"runtime"` - Lambda 실행 환경에 유효한 런타임을 입력하거나 확인합니다(예: `"nodejs.12x"`).
   + `"payload"` - 다음 옵션 중 하나를 선택하여 Lambda 함수에 입력으로 제공할 이벤트 페이로드를 정의합니다.
     + `"json"`: 이벤트 페이로드를 정의하는 JSON 형식의 키 값 페어를 정의합니다.
     + `"path"`: 이벤트 페이로드로 사용되는 파일의 경로입니다.

1. 

   디버그 구성에 만족하면 [**실행(RUN)**] 옆에 있는 녹색 재생 화살표를 선택하여 디버깅을 시작합니다.

   디버깅 세션이 시작되면 **DEBUG CONSOLE**(콘솔 디버그) 패널에 디버깅 출력이 표시되고 Lambda 함수에서 반환된 모든 값이 표시됩니다. SAM 애플리케이션을 디버그할 때는 **Output**(출력) 패널의 **Output**(출력) 채널로 **AWS Toolkit**(도구 키트)이 선택됩니다.
**참고**  
오류 메시지에 Docker가 언급된 경우 이 [참고](#docker-problem)를 참조하세요.

### 로컬 Amazon API Gateway 리소스 실행 및 디버깅
<a name="run-debug-api-gateway"></a>

에 지정된 AWS SAM API Gateway 로컬 리소스를 실행하거나 디버깅할 수 있습니다`template.yaml`. 를 `type=aws-sam` 사용하여의 AWS Cloud9 시작 구성을 실행하면 됩니다`invokeTarget.target=api`.

**참고**  
API Gateway는 두 가지 유형의 API를 지원합니다. 바로 REST와 HTTP API입니다. 하지만 AWS 도구 키트가 포함된 API Gateway 기능은 REST APIs만 지원합니다. HTTP API를 ‘API Gateway V2 API’라고 부르기도 합니다.

**로컬 API Gateway 리소스 실행 및 디버깅하기**

1. 다음 방법 중 하나를 선택하여 AWS SAM API Gateway 리소스의 시작 구성을 생성하세요.
   + **옵션 1**: AWS SAM 프로젝트에 있는 핸들러 소스 코드(특히 .js, .cs 또는 .py 파일)로 이동하여 Lambda 핸들러를 마우스 포인터로 가리킨 다음 **Add Debug Configuration**(디버그 구성 추가)를 선택합니다. 디버그 구성 추가 옵션이 나타나지 않는다면 코드 렌즈를 활성화합니다. 코드 렌즈를 활성화하려면 [AWS 도구 키트 코드 렌즈 활성화](enable-code-lenses.md) 섹션을 참조하세요. 그런 다음 메뉴에서 API 이벤트로 표시된 항목을 선택합니다.
   + **옵션 2**: `launch.json`을 편집하고 다음 구문을 사용하여 새 시작 구성을 생성합니다.

     ```
     {
         "type": "aws-sam",
         "request": "direct-invoke",
         "name": "myConfig",
         "invokeTarget": {
             "target": "api",
             "templatePath": "n12/template.yaml",
             "logicalId": "HelloWorldFunction"
         },
         "api": {
             "path": "/hello",
             "httpMethod": "post",
             "payload": {
                 "json": {}
             }
         }, 
         "sam": {},
         "aws": {}
     }
     ```

1. **Run**(실행) 버튼 옆에 있는 드롭다운 메뉴에서 시작 구성(위의 예에서는 `myConfig`)을 선택합니다.

1. (선택 사항) Lambda 프로젝트 코드에 중단점을 추가합니다.

1. [**실행(Run)**] 버튼 옆에 있는 녹색 **‘재생’ 버튼**을 선택합니다.

1. 출력 창에 결과가 나타납니다.

#### 구성
<a name="run-debug-api-gateway-configuration"></a>

`invokeTarget.target` 속성 값 `api`를 사용하면 도구 키트로 `api` 필드를 지원하는 시작 구성 검증 및 동작을 변경할 수 있습니다.

```
{
    "type": "aws-sam",
    "request": "direct-invoke",
    "name": "myConfig",
    "invokeTarget": {
        "target": "api",
        "templatePath": "n12/template.yaml",
        "logicalId": "HelloWorldFunction"
    },
    "api": {
        "path": "/hello",
        "httpMethod": "post",
        "payload": {
            "json": {}
        },
        "querystring": "abc=def&qrs=tuv",
        "headers": {
            "cookie": "name=value; name2=value2; name3=value3"
        }
    },
    "sam": {},
    "aws": {}
}
```

예시의 값을 다음과 같이 변경하세요.

**invokeTarget.logicalId**  
API 리소스.

**경로**  
시작 구성이 요청하는 API 경로입니다(예: `"path": "/hello"`).  
`invokeTarget.templatePath`에 의해 지정된 `template.yaml`에서 확인된 유효한 API 경로여야 합니다.

**httpMethod**  
"delete," "get," "head," "options," "patch," "post 및 "put" 동사 중 하나를 사용합니다.

**payload**  
요청에서 보낼 JSON 페이로드(HTTP 본문)로, lambda.payload 필드와 구조와 규칙이 같습니다.  
`payload.path`는 JSON 페이로드가 포함된 파일을 가리킵니다.  
`payload.json`은 JSON 페이로드를 인라인으로 지정합니다.

**헤더**  
이름-값 페어의 선택적 맵입니다. 요청에 포함할 HTTP 헤더를 지정하는 데 사용합니다.  

```
"headers": {
     "accept-encoding": "deflate, gzip;q=1.0, *;q=0.5",
     "accept-language": "fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5",
     "cookie": "name=value; name2=value2; name3=value3",
     "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36",
}
```

**querystring**  
(선택 사항) 이 문자열을 사용하여 요청의 `querystring`을 설정합니다(예: `"querystring": "abc=def&ghi=jkl"`).

**aws**  
 AWS 연결 정보가 제공되는 방법. 자세한 내용은 [서버리스 애플리케이션 디버깅을 위한 구성 옵션](sam-debug-config-ref.md)에서 **AWS 연결(`aws`) 속성** 표를 참조하세요.

**sam**  
 AWS SAM CLI가 애플리케이션을 빌드하는 방법. 자세한 내용은 [서버리스 애플리케이션 디버깅을 위한 구성 옵션](sam-debug-config-ref.md)에서 **AWS SAM CLI(‘`sam`‘) 속성**을 참조하세요.

## 서버리스 애플리케이션 동기화
<a name="deploy-serverless-app"></a>

이 예에서는 이전 주제([서버리스 애플리케이션 만들기](#sam-create))에서 생성한 서버리스 애플리케이션을 AWS Toolkit for Visual Studio Code를 사용하여 AWS 에 동기화하는 방법을 보여 줍니다.

### 사전 조건
<a name="deploy-sam-prereq"></a>
+ 전역적으로 고유한 Amazon S3 버킷 이름을 선택했는지 확인합니다.
+ 에서 구성한 자격 증명에 Amazon S3 CloudFormation AWS Lambda, 및 Amazon API Gateway 서비스에 대한 적절한 읽기/쓰기 액세스 권한이 포함되어 있는지 확인합니다.
+ 배포 유형이 `Image`인 애플리케이션의 경우 배포에 사용할 전역적으로 고유한 Amazon S3 버킷 이름과 Amazon ECR 리포지토리 URI가 모두 있는지 확인합니다.

### 서버리스 애플리케이션 동기화
<a name="deploy-sam-proc"></a>

1. **AWS Explorer** 창에서 **Lambda** 노드의 컨텍스트 메뉴(마우스 오른쪽 버튼 클릭)를 열고 **SAM 애플리케이션 동기화**를 선택합니다.

1. 배포할 AWS 리전 를 선택합니다.

1. 배포에 사용할 `template.yaml` 파일을 선택합니다.

1. 이 배포에서 사용할 수 있는 Amazon S3 버킷의 이름을 입력합니다. 버킷은 배포하려는 리전에 있어야 합니다.
**주의**  
Amazon S3 버킷 이름은 Amazon S3의 모든 기존 버킷 이름에서 전역적으로 고유해야 합니다. 다음 예에 제공된 이름에 고유 식별자를 추가하거나 다른 이름을 선택해야 합니다.

1. 서버리스 애플리케이션에 패키지 유형이 `Image`인 함수가 포함되어 있는 경우, 이 배포에서 사용할 수 있는 Amazon ECR 리포지토리 이름을 입력합니다. 이 리포지토리는 배포하려는 리전에 있어야 합니다.

1. 배포된 스택의 이름(새 스택 이름 또는 기존 스택 이름)을 입력합니다.

1. **콘솔**의 **AWS 도구 키트(Toolkit)** 탭에서 배포의 성공을 확인합니다.

   오류가 발생하면 메시지가 오른쪽 하단에 팝업됩니다.

   이러한 경우 자세한 내용은 **AWS 도구 키트(AWS Toolkit)** 탭의 텍스트를 확인하세요. 다음은 오류 세부 정보의 예입니다.

   ```
   Error with child process: Unable to upload artifact HelloWorldFunction referenced by CodeUri parameter of HelloWorldFunction resource.
   S3 Bucket does not exist. Execute the command to create a new bucket
   aws s3 mb s3://pbart-my-sam-app-bucket
   An error occurred while deploying a SAM Application. Check the logs for more information by running the "View AWS Toolkit Logs" command from the Command Palette.
   ```

   이 예에서는 Amazon S3 버킷이 없기 때문에 오류가 발생했습니다.

배포가 완료되면 **AWS 탐색기**에 해당 애플리케이션이 나열됩니다. 애플리케이션의 일부로 생성된 Lambda 함수를 호출하는 방법을 알아보려면 [원격 Lambda 함수 호출](lambda-toolkit.md#remote-lambda) 섹션을 참조하세요.

## AWS 클라우드에서 서버리스 애플리케이션 삭제
<a name="delete-serverless-app"></a>

서버리스 애플리케이션을 삭제하려면 이전에 AWS 클라우드에 배포한 CloudFormation 스택을 삭제해야 합니다. 이 절차는 로컬 호스트에서 애플리케이션 디렉터리를 삭제하지 않습니다.

1. **AWS 탐색기**를 엽니다.

1. **AWS 탐색기** 창에서 삭제하려는 배포된 애플리케이션이 포함된 리전을 확장한 다음 **CloudFormation**을 확장합니다.

1. 삭제하려는 서버리스 애플리케이션에 해당하는 CloudFormation 스택의 이름에 대한 컨텍스트 메뉴(마우스 오른쪽 버튼 클릭)를 엽니다. 그런 다음 **Delete CloudFormation Stack**(CloudFormation 스택 삭제)을 선택합니다.

1. 선택한 스택을 삭제하겠다는 의사를 확인하고 [**삭제(Delete)**]를 선택합니다.

스택 삭제에 성공하면 AWS 도구 키트가 **AWS 탐색**기의 목록에서 스택 이름을 CloudFormation 제거합니다.

# AWS 도구 키트 코드 렌즈 활성화
<a name="enable-code-lenses"></a>

이 단계에서는 AWS 도구 키트 코드 렌즈를 활성화하는 방법을 보여줍니다.

1. 메뉴 모음에서 **AWS Cloud9**, **기본 설정(Preferences)**을 선택합니다.

1. **기본 설정(Preferences)** 탭에서 사이드바에 있는 **AWS Toolkit**을 선택합니다.

1. 코드 렌즈를 활성화하려면 **코드 렌즈 활성화(Enable Code Lenses)**를 선택합니다.

# 서버리스 애플리케이션 디버깅을 위한 구성 옵션
<a name="sam-debug-config-ref"></a>

인라인 작업을 사용하면 직접 또는 SAM 템플릿을 사용하여 Lambda 함수를 호출하기 위한 속성을 손쉽게 찾고 정의할 수 있습니다. (함수 실행 방법), `"lambda"` ( AWS SAM CLI가 애플리케이션을 빌드하는 `"sam"` 방법) 및 `"aws"` ( AWS 연결 정보가 제공되는 방법)에 대한 속성을 정의할 수도 있습니다.


**AWS SAM: 직접 Lambda 핸들러 간접 호출/템플릿 기반 Lambda 간접 호출**  

| 속성 | 설명 | 
| --- | --- | 
|  `type`  |  시작 구성을 관리하는 확장 프로그램을 지정합니다. AWS SAM CLI를 사용하여 로컬`aws-sam`에서 빌드하고 디버깅하려면 항상를 로 설정합니다.  | 
|  `name`  |  **Debug launch configuration** 목록에 표시할 알아보기 쉬운 이름을 정합니다.  | 
| `request` |  지정된 확장 프로그램(`aws-sam`)으로 실행할 구성의 유형을 정합니다. 항상 Lambda 함수를 시작하도록 `direct-invoke`로 설정합니다.  | 
|  `invokeTarget`  |  리소스를 호출하기 위한 진입점을 지정합니다. Lambda 함수를 직접 호출하려면 다음 `invokeTarget` 필드의 값을 설정합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/sam-debug-config-ref.html) SAM 템플릿을 사용하여 Lambda 리소스를 호출하려면 다음 `invokeTarget` 필드의 값을 설정합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/sam-debug-config-ref.html)  | 


**Lambda(`"lambda"`) 속성**  

|  속성 | 설명 | 
| --- | --- | 
|  `environmentVariables`  |  작업 파라미터를 함수에 전달합니다. 예를 들어 Amazon S3 버킷에 기록하는 경우 버킷 이름을 환경 변수로 구성합니다. 작성하는 버킷 이름을 하드코딩하지 마십시오.  | 
| `payload` |  Lambda 함수에 입력으로 제공할 이벤트 페이로드에 두 가지 옵션이 있습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/sam-debug-config-ref.html)  | 
|  `memoryMB`  |  호출된 Lambda 함수의 실행을 위해 제공되는 메모리의 용량(메가바이트)를 지정합니다.  | 
| `runtime` |  Lambda 함수에서 사용하는 런타임을 지정합니다. 자세한 내용은 [AWS Lambda 런타임](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html)을 참조하세요.  | 
|  `timeoutSec`  |  디버그 세션이 시간 초과 전까지 허용되는 시간(초)을 설정합니다.  | 

 AWS 도구 키트 확장은 AWS SAM CLI를 사용하여 서버리스 애플리케이션을 로컬로 빌드하고 디버깅합니다. `launch.json` 파일에서 구성의 속성을 사용하여 AWS SAM CLI 명령의 동작을 구성할 수 `"sam"` 있습니다.


**AWS SAM CLI(`"sam"`) 속성**  

| 속성 |  설명  |  기본값  | 
| --- | --- | --- | 
|  `buildArguments`  | `sam build` 명령으로 Lambda 소스 코드를 빌드하는 방법을 알아보세요. 빌드 옵션을 보려면AWS Serverless Application Model 개발자 가이드에서 [sam build](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-cli-command-reference-sam-build.html)를 참조하세요. |  빈 문자열  | 
|  `containerBuild`  |   AWS Lambda유사 Docker 컨테이너 내에서 함수를 빌드할지 여부를 나타냅니다.  |  `false`  | 
|  `dockerNetwork`  |  Lambda Docker 컨테이너가 연결해야 하는 기존 Docker 네트워크의 이름 또는 ID와 기본 브리지 네트워크를 지정합니다. 지정하지 않으면 Lambda 컨테이너는 기본 브리지 Docker 네트워크에만 연결됩니다.  |  빈 문자열  | 
|  `localArguments`  |  추가 로컬 호출 인수.  |  빈 문자열  | 
|  `skipNewImageCheck`  |  명령이 Lambda 런타임에 대한 최신 Docker 이미지를 가져오는 단계를 건너뛸지 여부를 지정합니다.  |  `false`  | 
|  `template`  |  파라미터를 사용하여 고객 값을 입력함으로써 SAM 템플릿을 사용자 정의합니다. 자세한 내용은 *AWS CloudFormation 사용 설명서*의 [파라미터](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html)를 참조하세요.  |  `"parameters":{}`  | 


**AWS 연결(`"aws"`) 속성**  

| 속성 | 설명 | 기본값  | 
| --- | --- | --- | 
| `credentials` |  자격 증명을 가져올 자격 증명 파일에서 특정 프로필(예: `profile:default`)을 선택합니다 AWS .  | 기존 공유 AWS 구성 파일 또는 공유 AWS AWS 자격 증명 파일에서 제공하는 자격 증명입니다. | 
| `Region` |  서비스의 AWS 리전을 설정합니다(예: us-east-1).  | 활성 자격 증명 프로필과 연결된 기본 AWS 리전입니다. | 

# AWS 도구 키트 AWS Step Functions 사용 작업
<a name="bulding-stepfunctions"></a>

도구 AWS 키트는에 대한 지원을 제공합니다[AWS Step Functions](https://aws.amazon.com/step-functions/). Step Functions를 사용하면 비즈니스 크리티컬 애플리케이션을 지원하는 AWS Lambda 함수 및 기타 AWS 서비스에 대한 워크플로를 정의하는 상태 시스템을 생성할 수 있습니다.

 AWS 도구 키트를 사용하여 Step Functions에서 다음을 수행할 수 있습니다.
+ 개별 단계로 구성된 워크플로인 상태 머신 생성 및 게시
+ 상태 머신 워크플로를 정의하는 파일 다운로드
+ 입력하거나 선택한 입력으로 상태 머신 워크플로 실행 

**Topics**
+ [사전 조건](#bulding-stepfunctions-pre)
+ [상태 머신 생성 및 게시](#state-machine-create)
+ [AWS 도구 키트에서 상태 시스템 실행](#starting-stepfunctions)
+ [상태 머신 정의 파일 다운로드 및 워크플로 시각화](#sfn-download)

## 사전 조건
<a name="bulding-stepfunctions-pre"></a>

Step Functions는 코드를 실행하고 AWS 리소스(예: Lambda 함수 호출)에 액세스할 수 있습니다. 보안 유지를 위해 사용자는 IAM 역할을 사용하여 이러한 리소스에 대한 Step Functions 액세스 권한을 부여해야 합니다.

 AWS 도구 키트를 사용하면 상태 시스템을 생성하는 AWS 리전에 유효한 자동으로 생성된 IAM 역할을 활용할 수 있습니다. 상태 시스템에 대한 자체 IAM 역할을 생성하려면 *AWS Step Functions 개발자 안내서*의 [IAM AWS Step Functions 으로 작업하는 방법을](https://docs.aws.amazon.com/step-functions/latest/dg/procedure-create-iam-role.html) 참조하세요.

## 상태 머신 생성 및 게시
<a name="state-machine-create"></a>

 AWS 도구 키트를 사용하여 상태 시스템을 생성할 때 비즈니스 사례에 대한 워크플로를 정의하는 스타터 템플릿을 선택합니다. 그런 다음 특정 요구 사항에 맞게 해당 템플릿을 편집하거나 바꿀 수 있습니다. 구조를 나타내는 파일에서 상태 머신을 정의하는 방법에 대한 자세한 내용은 *AWS Step Functions 개발자 가이드*의 [Amazon States Language](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-amazon-states-language.html)를 참조하세요.

1. **AWS Explorer** 창에서 **Step Functions**에 대한 컨텍스트 메뉴(마우스 오른쪽 버튼 클릭)를 연 다음 **Step Function 상태 머신 새로 생성**을 선택합니다.

1. 명령 패널에서 상태 머신의 워크플로에 대한 스타터 템플릿을 선택합니다.

1. 그런 다음 상태 머신을 정의하는 ASL(Amazon States Language) 파일의 형식을 선택합니다.

   편집기가 열리고 상태 머신의 워크플로를 정의하는 ASL 파일이 표시됩니다.
**참고**  
ASL 파일을 편집하여 워크플로를 사용자 지정하는 방법에 대한 자세한 내용은 [상태 머신 구조](https://docs.aws.amazon.com/step-functions/latest/dg/amazon-states-language-state-machine-structure.html)를 참조하세요.

1. ASL 파일에서 **Step Functions에 게시**를 선택하여 상태 시스템을 AWS 클라우드에 추가합니다.
**참고**  
ASL 파일에서 **그래프 렌더링(Render graph)**을 선택하여 상태 머신의 워크플로를 시각적으로 표시할 수도 있습니다.  
![\[Step Functions에 게시를 선택하는 방법을 보여주는 다이어그램\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/images/publish-stepfunction.png)

1. 명령 패널에서 단계 함수를 호스팅할 AWS 리전을 선택합니다.

1. 다음으로, 새 Step Function을 생성하거나 기존 Step Function을 업데이트하도록 선택할 수 있습니다.

------
#### [ Quick Create  ]

   이 옵션을 사용하면 [step-functions/latest/dg/concepts-standard-vs-express.html](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-standard-vs-express.html)로 ASL 파일에서 새 Step Function을 생성할 수 있습니다. 다음을 지정하라는 메시지가 나타납니다.
   + 단계 함수가 코드를 실행하고 AWS 리소스에 액세스할 수 있도록 허용하는 IAM 역할입니다. (상태 시스템을 생성하는 AWS 리전에 유효한 자동으로 생성된 IAM 역할을 선택할 수 있습니다.)
   + 새 함수의 이름.

    AWS 도구 키트 출력 탭에서 상태 시스템이 성공적으로 생성되었는지 확인하고 ARN을 가져올 수 있습니다.

------
#### [ Quick Update ]

    AWS 리전에 상태 시스템이 이미 있는 경우 현재 ASL 파일로 업데이트할 상태 시스템을 선택할 수 있습니다.

    AWS 도구 키트 출력 탭에서 상태 시스템이 성공적으로 업데이트되었는지 확인하고 ARN을 가져올 수 있습니다.

------

   상태 머신을 생성하면 **AWS Explorer** 창의 **Step Functions** 아래에 해당 상태 머신이 나타납니다. 즉시 나타나지 않으면 **도구 키트(Toolkit)** 메뉴, **탐색기 새로 고침(Refresh Explorer)**을 선택합니다.

## AWS 도구 키트에서 상태 시스템 실행
<a name="starting-stepfunctions"></a>

 AWS 도구 키트를 사용하여 원격 상태 시스템을 실행할 수 있습니다. 실행 중인 상태 시스템은 JSON 텍스트를 입력으로 수신하고 해당 입력을 워크플로의 첫 번째 상태에 전달합니다. 개별 상태는 JSON을 입력으로 수신하고 일반적으로 다음 상태에서 JSON을 출력으로 넘겨줍니다. 자세한 내용은 [Step Functions 입/출력 처리](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-input-output-filtering.html)를 참조하세요.

1. **AWS Explorer** 창에서 **Step Functions**를 선택합니다. 그런 다음 특정 상태 머신에 대한 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 **실행 시작(Start Execution)**을 선택합니다.

1. **실행 시작(Start Execution)** 창에서 아래 필드에 직접 텍스트를 입력하거나 로컬 디바이스에서 파일을 업로드하여 상태 머신의 워크플로에 대한 JSON 형식 입력을 추가합니다.

1. **실행(Execute)**을 선택합니다.

    AWS 도구 키트 출력 탭에는 워크플로가 시작되었다는 확인과 프로세스 ID의 ARN이 표시됩니다. 해당 프로세스 ID를 사용하여 AWS Step Functions 콘솔에서 워크플로가 성공적으로 실행되었는지 확인할 수 있습니다. 워크플로가 시작되고 종료된 시간에 대한 타임스탬프도 볼 수 있습니다.

## 상태 머신 정의 파일 다운로드 및 워크플로 시각화
<a name="sfn-download"></a>

상태 머신을 다운로드한다는 것은 해당 상태 머신의 구조를 나타내는 JSON 텍스트가 포함된 파일을 다운로드한다는 의미입니다. 그런 다음 이 파일을 편집하여 새 상태 머신을 생성하거나 기존 상태 머신을 업데이트할 수 있습니다. 자세한 내용은 *AWS Step Functions Developer Guide*의 [Amazon States Language](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-amazon-states-language.html)를 참조하세요.

1. **AWS Explorer** 창에서 **Step Functions**를 선택합니다. 그런 다음 특정 상태 시스템에 대한 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 **정의 다운로드(Download Definition)**를 선택합니다.
**참고**  
컨텍스트 메뉴는 **이름 복사(Copy Name)** 및 **ARN 복사(Copy ARN)** 옵션도 제공합니다.

1. **저장(Save)** 대화 상자에서 다운로드한 상태 머신 파일을 저장할 환경의 폴더를 선택한 다음 **저장(Save)**을 선택합니다.

   상태 머신의 워크플로를 정의하는 JSON 형식의 파일이 편집기에 표시됩니다.

1. 워크플로의 시각적 표현을 표시하려면 **그래프 렌더링(Render graph)**을 선택합니다.

   상태 머신 워크플로의 상태 시퀀스를 보여주는 순서도가 창에 표시됩니다.  
![\[상태 머신의 워크플로 시각적 표현\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/images/render-graph.png)

# Systems Manager 자동화 문서로 작업
<a name="systems-manager-automation-docs"></a>

를 사용하면 인프라를 AWS Systems Manager파악하고 제어할 수 있습니다 AWS. Systems Manager는 여러의 운영 데이터를 보고 AWS 리소스 전반의 운영 작업을 AWS 서비스 자동화하는 데 사용할 수 있는 통합 사용자 인터페이스를 제공합니다.

[Systems Manager 문서](https://docs.aws.amazon.com//systems-manager/latest/userguide/sysman-systems-manager-docs.html)는 Systems Manager가 관리형 인스턴스에서 실행하는 작업을 정의합니다. 자동화 문서는 일반적인 유지 관리 및 배포 작업을 수행하는 데 사용하는 Systems Manager 문서 유형입니다. Amazon Machine Image(AMI) 생성이나 업데이트도 여기에 포함됩니다. 이 주제에서는 AWS Toolkit을 사용하여 자동화 문서를 생성, 편집, 게시 및 삭제하는 방법을 간략하게 설명합니다.

**Topics**
+ [전제 조건 및 필수 조건](#systems-manager-assumptions)
+ [Systems Manager Automation 문서에 대한 IAM 권한](#systems-manager-permissions)
+ [새 Systems Manager 자동화 문서 생성](#systems-manager-create)
+ [Systems Manager 자동화 문서 게시](#systems-manager-publish)
+ [기존 Systems Manager 자동화 문서 편집](#systems-manager-open)
+ [버전 작업](#systems-manager-edit-default-version)
+ [Systems Manager 자동화 문서 삭제](#systems-manager-delete)
+ [Systems Manager 자동화 문서 실행](#systems-manager-run)
+ [AWS 도구 키트의 Systems Manager 자동화 문서 문제 해결](systems-manager-troubleshoot.md)

## 전제 조건 및 필수 조건
<a name="systems-manager-assumptions"></a>

시작하기 전에 다음 조건을 충족하는지 확인하세요.
+ Systems Manager에 대해 잘 알고 있어야 합니다. 자세한 내용은 [https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html)를 참조하십시오.
+ Systems Manager 자동화 사용 사례에 대해 잘 알고 있습니다. 자세한 내용은 *AWS Systems Manager 사용 설명서*의 [AWS Systems Manager 자동화](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-automation.html)를 참조하세요.

## Systems Manager Automation 문서에 대한 IAM 권한
<a name="systems-manager-permissions"></a>

Systems Manager 자동화 문서를 생성, 편집, 게시 및 삭제하려면 필요한 AWS Identity and Access Management (IAM) 권한이 포함된 자격 증명 프로필이 있어야 합니다. 다음 정책 문서는 보안 주체 정책에서 사용할 수 있는 필요한 IAM 권한을 정의합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:ListDocuments",
                "ssm:ListDocumentVersions",
                "ssm:DescribeDocument",
                "ssm:GetDocument",
                "ssm:CreateDocument",
                "ssm:UpdateDocument",
                "ssm:UpdateDocumentDefaultVersion",
                "ssm:DeleteDocument"
            ],
            "Resource": "*"
        }
    ]
}
```

------

IAM 정책을 업데이트하는 방법에 대한 자세한 내용은 *IAM 사용 설명서*의 [IAM 정책 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)을 참조하세요.

## 새 Systems Manager 자동화 문서 생성
<a name="systems-manager-create"></a>

 AWS 도구 키트를 사용하여 `JSON` 또는 `YAML` 형식의 자동화 문서를 생성할 수 있습니다. 자동화 문서를 생성하면 제목 없는 파일로 표시됩니다. 파일 이름을 지정하고 저장할 수 있습니다. 그러나 게시할 AWS 때까지 파일은에 업로드되지 않습니다.

**자동화 문서를 새로 생성하려면**

1. 왼쪽 탐색 창에서 검색 아이콘을 선택하거나 **Ctrl\$1P**를 눌러 검색 창을 엽니다.

1. 검색 창에서 "systems manager"라는 용어를 입력하기 시작하고 **AWS: Create a new Systems Manager Document Locally**(AWS: 로컬로 새 Systems Manager 문서 생성) 명령이 표시되면 해당 명령을 선택합니다.

1. “Hello World” 예제의 스타터 템플릿 중 하나를 선택합니다.

1. 문서 형식으로 `JSON` 또는 `YAML`을 선택합니다.

   편집기에 새 자동화 문서가 표시됩니다.

**참고**  
로컬 자동화 문서를 처음 생성하면 AWS에 자동으로 표시되지 않습니다. 실행하려면 먼저에 게시해야 합니다 AWS.

## Systems Manager 자동화 문서 게시
<a name="systems-manager-publish"></a>

 AWS 도구 키트에서 자동화 문서를 생성하거나 편집한 후에 게시할 수 있습니다 AWS.

**자동화 문서를 게시하려면**

1. [기존 Systems Manager 자동화 문서 편집](#systems-manager-open)에 약술된 절차를 사용하여 게시하려는 자동화 문서를 엽니다.

1. 왼쪽 탐색 창에서 검색 아이콘을 선택하거나 **Ctrl\$1P**를 눌러 검색(Search) 창을 엽니다.

1. 검색 창에서 "systems manager"라는 용어를 입력하기 시작하고 **AWS: Publish a new Systems Manager Document**(AWS: 새 Systems Manager 문서 게시) 명령이 표시되면 해당 명령을 선택합니다.

1. **3단계 중 1단계**에서 문서를 게시 AWS 리전 할을 선택합니다.

1. **2/3단계(Step 2 of 3)**에서 **빠른 생성(Quick Create)**을 선택하여 자동화 문서를 생성합니다. 또는 **Quick Update**(빠른 업데이트)를 선택하여 해당 리전의 기존 자동화 문서를 업데이트합니다.
**참고**  
소유한 자동화 문서만 업데이트할 수 있습니다. **빠른 업데이트(Quick Update)**를 선택하고 해당 리전에 문서를 소유하고 있지 않은 경우 문서를 업데이트하기 전에 게시하라는 메시지가 나타납니다.

1. **3/3단계(Step 3 of 3)**에서 이전 단계에서 선택한 항목에 따라 새 자동화 문서의 이름을 입력하거나 업데이트할 기존 문서를 선택합니다.
**참고**  
에서 기존 자동화 문서에 업데이트를 게시하면 문서에 AWS새 버전이 추가됩니다. 문서에 여러 버전이 있는 경우 [기본 버전](#systems-manager-edit-default-version)을 설정할 수 있습니다.

## 기존 Systems Manager 자동화 문서 편집
<a name="systems-manager-open"></a>

 AWS 탐색기를 사용하여 기존 Systems Manager 자동화 문서를 찾습니다. 기존 문서를 열면 AWS Cloud9 편집기에 제목이 없는 파일로 표시됩니다. 다운로드하는 자동화 문서에는 세 가지 유형이 있습니다.
+ **Amazon 소유(Owned by Amazon)**: 런타임에 파라미터를 지정하여 사용할 수 있는 미리 구성된 SSM 문서입니다.
+ **내 소유**: 내가 생성하고 게시한 문서 AWS.
+ **나와 공유**: AWS 계정 ID에 따라 소유자가 나와 공유한 문서입니다.

업데이트할 수 있는 유일한 문서 유형은 *내가 소유*한 문서 AWS 입니다. Amazon에서 공유하거나 소유한 자동화 문서를 다운로드하고 AWS Cloud9에서 편집할 수도 있습니다. 그러나에 게시 AWS할 때는 새 문서를 생성하거나 소유한 기존 문서를 업데이트해야 합니다. 다른 소유자가 있거나 Amazon에서 소유한 문서의 새 버전을 생성할 수 없습니다.

자세한 내용은 *AWS Systems Manager 사용 설명서*의 [AWS Systems Manager 문서](https://docs.aws.amazon.com/systems-manager/latest/userguide/documents.html)를 참조하세요.

1.  AWS 탐색기의 **Systems Manager**에서 Amazon 소유, **내** **소유** 또는 **나와 공유 중에서** 다운로드할 SSM 문서 범주를 선택합니다.

1. 특정 문서에 대해 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 **YAML로 다운로드(Download as YAML)** 또는 **JSON으로 다운로드(Download as JSON)**를 선택합니다.

   형식이 지정된 SSM 문서가 새 편집기 탭에 표시됩니다.

편집을 완료한 후 **AWS: 새 Systems Manager 문서 게시 ** 명령을 사용하여 AWS 클라우드에서 새 문서를 생성하거나 소유한 기존 문서를 업데이트할 수 있습니다.

## 버전 작업
<a name="systems-manager-edit-default-version"></a>

Systems Manager 자동화 문서는 변경 관리를 위해 버전을 사용합니다. AWS 도구 키트를 사용하면 문서의 기본 버전인 문서를 실행할 때 사용되는 버전을 설정할 수 있습니다.

**기본 버전 설정**
+  AWS 탐색기에서 기본 버전을 설정하려는 문서로 이동하여 문서의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 **기본 버전 설정을** 선택합니다.
**참고**  
선택한 문서에 버전이 하나만 있는 경우 기본값을 변경할 수 없습니다.

## Systems Manager 자동화 문서 삭제
<a name="systems-manager-delete"></a>

 AWS 도구 키트에서 소유한 자동화 문서를 삭제할 수 있습니다. 자동화 문서를 삭제하면 문서와 문서의 모든 버전이 삭제됩니다.

**중요**  
삭제는 실행 취소할 수 없습니다.
이미 시작된 자동화 문서를 삭제해도 실행 시 생성되거나 수정된 AWS 리소스는 삭제되지 않습니다.
문서를 소유하는 경우에만 삭제가 허용됩니다.

**자동화 문서를 삭제하려면**

1.  AWS 탐색기 창의 **Systems Manager**에서 **내 소유를** 확장하여 문서를 나열합니다.

1. 삭제할 문서의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 **문서 삭제(Delete document)**를 선택합니다.

1. 나타나는 경고 대화 상자에서 **삭제(Delete)**를 선택하여 확인합니다.

## Systems Manager 자동화 문서 실행
<a name="systems-manager-run"></a>

자동화 문서가에 게시된 후 이를 실행하여에서 사용자를 대신하여 작업을 수행할 AWS수 있습니다 AWS 계정. 자동화 문서를 실행하려면 AWS Management Console, Systems Manager APIs, AWS CLI또는를 사용합니다 AWS Tools for PowerShell. 자동화 문서를 실행하는 방법에 대한 지침은 *AWS Systems Manager 사용 설명서*의 [단순한 자동화 실행](https://docs.aws.amazon.com/systems-manager/latest/userguide/running-simple-automations.html)을 참조하세요.

또는 Systems Manager APIs와 함께 AWS SDKs 중 하나를 사용하여 자동화 문서를 실행하려면 [AWS SDK 참조를](https://aws.amazon.com/developer/tools/) 참조하세요.

**중요**  
자동화 문서를 실행하면에서 새 리소스가 생성 AWS 되고 청구 비용이 발생할 수 있습니다. 자동화 문서를 실행하기 전에 계정에서 생성할 자동화 문서를 이해하는 것이 좋습니다.

# AWS 도구 키트의 Systems Manager 자동화 문서 문제 해결
<a name="systems-manager-troubleshoot"></a>

**자동화 문서를 AWS 도구 키트에 저장했지만에 표시되지 않습니다 AWS Management Console.**  
도구 AWS 키트에 자동화 문서를 저장해도 자동화 문서는에 게시되지 않습니다 AWS. 자동화 문서를 게시하는 방법에 대한 자세한 내용은 [Systems Manager 자동화 문서 게시](systems-manager-automation-docs.md#systems-manager-publish) 섹션을 참조하세요.

**권한 오류로 인해 자동화 문서를 게시하지 못함**  
자격 AWS 증명 프로필에 자동화 문서를 게시하는 데 필요한 권한이 있는지 확인합니다. 권한 정책 예시는 [Systems Manager Automation 문서에 대한 IAM 권한](systems-manager-automation-docs.md#systems-manager-permissions) 단원을 참조하십시오.

**자동화 문서를에 게시 AWS했지만 AWS 탐색기 창에 표시되지 않습니다.**  
 AWS 탐색기 창에서 탐색 중인 리전과 동일한 AWS 리전에 문서를 게시했는지 확인합니다.

**자동화 문서를 삭제했지만 생성된 리소스에 대한 요금이 계속 청구됨**  
자동화 문서를 삭제해도 생성되거나 수정된 리소스는 삭제되지 않습니다. [AWS Billing Management Console](https://console.aws.amazon.com/billing/home)에서 생성한 AWS 리소스를 식별하고, 요금을 탐색하고, 여기에서 삭제할 리소스를 선택할 수 있습니다.

# AWS Cloud9 IDE에서 Amazon ECR 작업
<a name="ecr"></a>

Amazon Elastic Container Registry(Amazon ECR)는 안전하고 확장 가능한 AWS 관리형 컨테이너 레지스트리 서비스입니다. AWS Toolkit Explorer에서 여러 Amazon ECR 서비스 함수에 액세스할 수 있습니다.
+ 리포지토리 생성
+ 리포지토리 또는 태그가 지정된 이미지에 대한 AWS App Runner 서비스 생성.
+ 이미지 태그 및 리포지토리 URI 또는 ARN에 액세스
+ 이미지 태그 및 리포지토리 삭제

 AWS CLI 및 기타 플랫폼을 설치하여 AWS Cloud9 콘솔을 통해 전체 범위의 Amazon ECR 함수에 액세스할 수도 있습니다.

Amazon ECR에 대한 자세한 내용은 Amazon Elastic Container Registry 사용 설명서의 [Amazon ECR이란?](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)을 참조하세요.

## 사전 조건
<a name="prereqs-awstoolkit-vscode-ecr"></a>

다음은 AWS Cloud9 IDE for AWS Cloud9 Amazon EC2 환경에 사전 설치되어 있습니다. AWS Cloud9 IDE에서 Amazon ECR 서비스에 액세스해야 합니다.

### IAM 보안 인증
<a name="create-an-iam-user"></a>

 AWS 콘솔에서 생성하여 인증에 사용한 IAM 역할입니다. IAM에 대한 자세한 내용은 [AWS Identity and Access Management 사용 설명서](https://docs.aws.amazon.com/IAM/latest/UserGuide/)를 참조하십시오.

### Docker 구성
<a name="create-an-iam-user"></a>

Docker는 AWS Cloud9 IDE for AWS Cloud9 Amazon EC2 환경에 사전 설치되어 있습니다. Docker에 대한 자세한 내용은 [Docker Engine 설치](https://docs.docker.com/engine/install/)를 참조하세요.

### AWS CLI 버전 2 구성
<a name="create-an-iam-user"></a>

AWS CLI 버전 2는 AWS Cloud9 IDE for AWS Cloud9 Amazon EC2 환경에 사전 설치되어 있습니다. AWS CLI 버전 2에 대한 자세한 내용은 [AWS CLI 버전 2 설치, 업데이트 및 제거를 참조하세요](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

**Topics**
+ [사전 조건](#prereqs-awstoolkit-vscode-ecr)
+ [AWS Cloud9 IDE에서 Amazon ECR 사용](ecr-working.md)

# 에서 Amazon ECR 서비스 작업 AWS Cloud9
<a name="ecr-working"></a>

 AWS Cloud9 IDE의 AWS 탐색기에서 직접 Amazon Elastic Container Registry(Amazon ECR) 서비스에 액세스할 수 있습니다. Amazon ECR을 사용하여 Amazon ECR 리포지토리에 프로그램 이미지를 푸시할 수 있습니다. 시작하려면 다음 단계를 따릅니다.

1. 이미지를 빌드하는 데 필요한 정보가 포함된 Dockerfile을 생성합니다.

1. 해당 Dockerfile에서 이미지를 빌드하고 처리할 이미지에 태그를 지정합니다.

1. Amazon ECR 인스턴스 내부에 리포지토리를 생성합니다.

1. 리포지토리에 태그가 지정된 이미지를 푸시합니다.

**Topics**
+ [사전 조건](#prereqs-vscode-ecr)
+ [1. Dockerfile 생성](#dockerfile-ecr-cloud9toolkit)
+ [2. Dockerfile에서 이미지 빌드](#build-docker-image)
+ [3. 새 리포지토리 생성](#create-repository)
+ [4. 이미지 푸시, 가져오기, 삭제](#push-image)

## 사전 조건
<a name="prereqs-vscode-ecr"></a>

 AWS 도구 키트의 Amazon ECR 기능을 사용하려면 먼저 이러한 사전 조건을 AWS Cloud9충족해야 합니다. [사전 조건](ecr.md#prereqs-awstoolkit-vscode-ecr) 이러한 사전 조건은 AWS Cloud9 IDE for AWS Cloud9 Amazon EC2 환경에 사전 설치되어 있으며 Amazon ECR에 액세스하는 데 필요합니다.

## 1. Dockerfile 생성
<a name="dockerfile-ecr-cloud9toolkit"></a>

Docker는 Dockerfile이라는 파일을 사용하여 원격 리포지토리에 푸시하고 저장할 수 있는 이미지를 정의합니다. 이미지를 ECR 리포지토리에 업로드하려면 먼저 Dockerfile을 생성한 다음 해당 Dockerfile에서 이미지를 빌드해야 합니다.

**Dockerfile 생성**

1. Dockerfile을 저장할 디렉터리로 이동하려면 AWS Cloud9 IDE의 왼쪽 탐색 표시줄에서 **Toggle Tree**(트리 전환) 옵션을 선택합니다.

1. **Dockerfile**이라는 새 파일을 생성합니다.
**참고**  
AWS Cloud9 IDE에서 파일 유형 또는 파일 확장명을 선택하라는 메시지가 표시될 수 있습니다. 이 경우 **plaintext**. AWS Cloud9 IDE에는 "dockerfile" 확장자가 있습니다를 선택합니다. 그러나 사용하지 않는 것이 좋습니다. 이 확장자가 특정 버전의 Docker 또는 기타 관련 애플리케이션과 충돌을 일으킬 수 있기 때문입니다.

**AWS Cloud9 IDE를 사용하여 Dockerfile 편집**

Dockerfile에 파일 확장자가 있는 경우 파일에 대한 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 해당 파일 확장자를 제거합니다. 확장자가 있는 Dockerfile은 특정 버전의 Docker 또는 기타 관련 애플리케이션과 충돌을 일으킬 수 있기 때문입니다.

Dockerfile에서 파일 확장자를 제거한 후 다음을 수행합니다.

1.  AWS Cloud9 IDE에서 빈 Dockerfile을 직접 엽니다.

1. 다음 예제의 내용을 Dockerfile에 복사합니다.  
**Example Dockerfile 이미지 템플릿**  

   ```
   FROM ubuntu:22.04
   
   # Install dependencies
   RUN apt-get update && \
    apt-get -y install apache2
   
   # Install apache and write hello world message
   RUN echo 'Hello World!' > /var/www/html/index.html
   
   # Configure apache
   RUN echo '. /etc/apache2/envvars' > /root/run_apache.sh && \
    echo 'mkdir -p /var/run/apache2' >> /root/run_apache.sh && \
    echo 'mkdir -p /var/lock/apache2' >> /root/run_apache.sh && \ 
    echo '/usr/sbin/apache2 -D FOREGROUND' >> /root/run_apache.sh && \ 
    chmod 755 /root/run_apache.sh
   
   EXPOSE 80
   
   CMD /root/run_apache.sh
   ```

   이것은 Ubuntu 22.04 이미지를 사용하는 Dockerfile입니다. **RUN** 명령은 패키지 캐시를 업데이트합니다. 웹 서버용 소프트웨어 패키지를 설치하고 'Hello World\$1'를 웹 서버의 문서 루트에 작성합니다. **EXPOSE** 명령은 컨테이너에 포트 80을 노출하고 **CMD** 명령은 웹 서버를 시작합니다.

1. Dockerfile을 저장합니다.

## 2. Dockerfile에서 이미지 빌드
<a name="build-docker-image"></a>

생성한 Dockerfile에는 프로그램의 이미지를 빌드하는 데 필요한 정보가 포함되어 있습니다. 해당 이미지를 Amazon ECR 인스턴스로 푸시하려면 먼저 이미지를 빌드해야 합니다.

**Dockerfile에서 이미지 빌드**

1. Dockerfile이 포함된 디렉터리로 이동하려면 Docker CLI 또는 Docker 인스턴스와 통합된 CLI를 사용합니다.

1. Dockerfile에 정의된 이미지를 빌드하려면 Dockerfile과 동일한 디렉터리에서 **Docker build** 명령을 실행합니다.

   ```
             docker build -t hello-world .
   ```

1. 이미지가 올바르게 생성되었는지 확인하려면 **Docker images** 명령을 실행합니다.

   ```
   docker images --filter reference=hello-world
   ```  
**Example**  

   출력값은 다음과 같습니다.

   ```
   REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
   hello-world         latest              e9ffedc8c286        4 minutes ago       241MB
   ```

1. Ubuntu 22.04를 기반으로 새로 빌드된 이미지를 실행하려면 **echo** 명령을 사용합니다.
**참고**  
이 단계는 이미지를 생성하거나 푸시하는 데 필요하지 않습니다. 그러나 프로그램 이미지가 실행되면 어떻게 작동하는지 확인할 수 있습니다.

   ```
   FROM ubuntu:22.04
   CMD ["echo", "Hello from Docker in Cloud9"]
   ```

   그런 다음 Dockerfile을 실행하고 빌드합니다. Dockerfile과 동일한 디렉터리에서 이 명령을 실행해야 합니다.

   ```
   docker build -t hello-world .
   docker run --rm hello-world
   ```  
**Example**  

   출력값은 다음과 같습니다.

   ```
   Hello from Docker in Cloud9
   ```

   **Docker run** 명령에 대한 자세한 내용은 Docker 웹 사이트에서 [Docker run reference](https://docs.docker.com/engine/reference/run/)(Docker 실행 참조)를 참조하세요.

## 3. 새 리포지토리 생성
<a name="create-repository"></a>

이미지를 Amazon ECR 인스턴스에 업로드하려면 이미지를 저장할 수 있는 새 리포지토리를 생성합니다.

**새 Amazon ECT 리포지토리 생성**

1.  AWS Cloud9 IDE 탐색 모음에서 **AWS 도구 키트 아이콘을** 선택합니다.

1.  AWS Explorer 메뉴를 확장합니다.

1. 와 연결된 기본 AWS 리전 값을 찾습니다 AWS 계정. 그런 다음 AWS Cloud9 IDE를 통해 제공되는 서비스 목록을 보려면 선택합니다.

1. **ECR** 옵션의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 **Create new repository**(새 리포지토리 생성) 프로세스를 시작합니다. 그런 다음 **Create Repository**(리포지토리 생성)를 선택합니다.

1. 프롬프트의 메시지를 따라 프로세스를 완료합니다.

1. 프로세스가 완료되면 AWS 탐색기 메뉴의 **ECR** 섹션에서 새 리포지토리에 액세스할 수 있습니다.

## 4. 이미지 푸시, 가져오기, 삭제
<a name="push-image"></a>

Dockerfile에서 이미지를 빌드하고 리포지토리를 생성한 후에는 Amazon ECR 리포지토리로 이미지를 푸시할 수 있습니다. 또한 Docker 및 AWS CLI와 함께 AWS Explorer를 사용하여 다음을 수행할 수 있습니다.
+ 리포지토리에서 이미지를 가져옵니다.
+ 리포지토리에 저장된 이미지를 삭제합니다.
+ 리포지토리를 삭제합니다.

**기본 레지스트리에 대해 Docker 인증**

Amazon ECR과 Docker 인스턴스 간에 데이터를 교환하려면 인증이 필요합니다. 레지스트리에 대해 Docker를 인증하려면 다음을 수행합니다.

1.  AWS Cloud9 IDE 내에서 터미널을 엽니다.

1. **get-login-password** 메서드를 사용하여 프라이빗 ECR 레지스트리에 인증하고 리전과 AWS 계정 ID를 입력합니다.

   ```
   aws ecr get-login-password \
       --region <region> \
   | docker login \
       --username AWS \
       --password-stdin <aws_account_id>.dkr.ecr.<region>.amazonaws.com
   ```
**중요**  
앞의 명령에서 **region** 및 **AWS\$1account\$1id**를 AWS 계정과 관련된 정보로 바꿉니다. 유효한 **region** 값은 *us-east-1*입니다.

**이미지 태그 지정 및 리포지토리에 푸시**

의 인스턴스로 Docker를 인증한 후 이미지를 리포지토리에 AWS푸시합니다.

1. **docker images** 명령을 사용하여 로컬에 저장한 이미지를 보고 태그를 지정할 이미지를 식별합니다. 

   ```
   docker images
   ```  
**Example**  

   출력값은 다음과 같습니다.

   ```
   REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
   hello-world         latest              e9ffedc8c286        4 minutes ago       241MB
   ```

1. **Docker tag** 명령을 사용하여 이미지에 태그를 지정합니다.

   ```
   docker tag hello-world:latest AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest
   ```

1. **Docker push** 명령을 사용하여 태그가 지정된 이미지를 리포지토리에 푸시합니다.
**중요**  
로컬 리포지토리의 이름이 AWS Amazon EC2 리포지토리와 동일한지 확인합니다. 이 예에서는 두 리포지토리의 이름이 모두 `hello-world`여야 합니다. Docker를 사용하여 이미지를 푸시하는 방법에 대한 자세한 내용은 [도커 이미지 푸시](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html)를 참조하세요.

   ```
   docker push AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest
   ```  
**Example**  

   출력값은 다음과 같습니다.

   ```
   The push refers to a repository [AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world] (len: 1)
   e9ae3c220b23: Pushed
   a6785352b25c: Pushed
   0998bf8fb9e9: Pushed
   0a85502c06c9: Pushed
   latest: digest: sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b size: 6774
   ```

태그가 지정된 이미지가 리포지토리에 성공적으로 업로드되면 탐색기 탭에서 AWS 탐색기 새로 고침을 선택하여 AWS 도구 키트를 새로 고칩니다. **** 그러면 AWS Cloud9 IDE의 AWS 탐색기 메뉴에 표시됩니다.

**Amazon ECR에서 이미지 가져오기**
+ **Docker tag** 명령의 로컬 인스턴스로 이미지를 가져올 수 있습니다.

  ```
  docker pull AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest
  ```  
**Example**  

  출력값은 다음과 같습니다.

  ```
  azonaws.com/hello-world:latest
  latest: Pulling from hello-world
  Digest: sha256:e02c521fd65eae4ef1acb746883df48de85d55fc85a4172a09a124b11b339f5e
  Status: Image is up to date for 922327013870.dkr.ecr.us-west-2.amazonaws.com/hello-world.latest
  ```

**Amazon ECR 리포지토리에서 이미지 삭제**

 AWS Cloud9 IDE에서 이미지를 삭제하는 방법에는 두 가지가 있습니다. 첫 번째 방법은 AWS 탐색기를 사용하는 것입니다.

1.  AWS 탐색기에서 **ECR** 메뉴를 확장합니다.

1. 이미지를 삭제할 리포지토리를 확장합니다.

1. 삭제할 이미지와 연결된 이미지 태그의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 엽니다.

1. 해당 태그와 연결된 저장된 이미지를 모두 삭제하려면 **Delete Tag...**(태그 삭제)를 선택합니다.

**AWS CLI를 사용하여 이미지 삭제**
+ **AWS ecr batch-delete-image** 명령을 사용하여 리포지토리에서 이미지를 삭제할 수도 있습니다.

  ```
  aws ecr batch-delete-image \
        --repository-name hello-world \
        --image-ids imageTag=latest
  ```  
**Example**  

  출력값은 다음과 같습니다.

  ```
  {
      "failures": [],
      "imageIds": [
          {
              "imageTag": "latest",
              "imageDigest": "sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b"
          }
      ]
  }
  ```

**Amazon ECR 인스턴스에서 리포지토리 삭제**

IDE에서 AWS Cloud9 리포지토리를 삭제하는 방법에는 두 가지가 있습니다. 첫 번째 방법은 AWS 탐색기를 사용하는 것입니다.

1.  AWS 탐색기에서 **ECR** 메뉴를 확장합니다.

1. 삭제할 리포지토리에 대한 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 엽니다.

1. **Delete Repository...**(리포지토리 삭제...)를 선택합니다.

**AWS CLI에서 Amazon ECR 리포지토리 삭제**
+ **AWS ecr delete-repository** 명령을 사용하여 리포지토리를 삭제할 수 있습니다.
**참고**  
일반적으로 리포지토리에 포함된 이미지를 먼저 삭제하지 않으면 리포지토리를 삭제할 수 없습니다. 하지만 **--force** 플래그를 추가하면 리포지토리와 모든 해당 이미지를 한 번에 삭제할 수 있습니다.

  ```
          aws ecr delete-repository \
        --repository-name hello-world \
        --force
  ```  
**Example**  

  출력값은 다음과 같습니다.

  ```
  --repository-name hello-world --force
  {
      "repository": {
          "repositoryUri": "922327013870.dkr.ecr.us-west-2.amazonaws.com/hello-world", 
          "registryId": "922327013870", 
          "imageTagMutability": "MUTABLE", 
          "repositoryArn": "arn:aws:ecr:us-west-2:922327013870:repository/hello-world", 
          "repositoryName": "hello-world", 
          "createdAt": 1664469874.0
      }
  }
  ```

# AWS Cloud9 IDE AWS IoT 에서 작업
<a name="iot-start"></a>

IDE AWS IoT 의 AWS Cloud9 를 사용하면 들어오는 워크플로의 중단을 최소화하면서 AWS IoT 서비스와 상호 작용할 수 있습니다 AWS Cloud9. 이 가이드에서는 AWS Cloud9 IDE에서 사용할 수 있는 AWS IoT 서비스 기능을 사용하여 시작하는 방법을 설명합니다. 자세한 정보는 *AWS IoT 개발자 설명서*의 [AWS IoT란 무엇입니까?](https://docs.aws.amazon.com/iot/latest/developerguide/what-is-aws-iot.html)를 참조하세요.

## AWS IoT 사전 조건
<a name="iot-cloud9-prereq"></a>

 AWS Cloud9 IDE AWS IoT 에서 사용을 시작하려면 AWS 계정 및 AWS Cloud9 설정이 모든 요구 사항을 충족하는지 확인합니다. AWS IoT 서비스와 관련된 AWS 계정 요구 사항 및 AWS 사용자 권한에 대한 자세한 내용은 *AWS IoT 개발자 안내서*의 [AWS IoT 코어 시작하기](https://docs.aws.amazon.com/iot/latest/developerguide/setting-up.html)를 참조하세요.

## AWS IoT 사물
<a name="iot-cloud9-things"></a>

AWS IoT 는 디바이스를 AWS 서비스 및 AWS 리소스에 연결합니다. **사물**이라는 객체를 사용하여 디바이스를 AWS IoT 에 연결할 수 있습니다. 사물이란 특정 장치 또는 논리적 엔터티를 의미합니다. 사물은 물리적 장치 또는 센서일 수 있습니다(예: 전구 또는 벽면 스위치). AWS IoT 사물에 대한 자세한 내용은 *AWS IoT 개발자 안내서*의 [를 사용하여 디바이스 관리를 AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-thing-management.html) 참조하세요.

### AWS IoT 사물 관리
<a name="iot-cloud9-things-actions"></a>

 AWS Cloud9 IDE에는 사물 관리를 효율적으로 만드는 여러 기능이 있습니다. AWS IoT 사물을 관리하려면 다음 단계를 따르세요.
+ [Create a thing](#thing-create)
+ [Attach a certificate to a thing](#thing-certificate-attach)
+ [Detach a certificate from a thing](#thing-certificate-detach)
+ [Delete a thing](#thing-delete)<a name="thing-create"></a>

**사물 생성**

1.  AWS 탐색기에서 **IoT** 서비스 섹션을 확장합니다.

1. **thing**(사물)의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 **Create Thing**(사물 생성)을 선택합니다.

1. **Thing Name**(사물 이름) 필드에 **사물**의 이름을 입력하고 지시에 따릅니다.

1. 이 단계가 완료되면 **사물 아이콘**과 사용자가 지정한 이름이 **Thing**(사물) 섹션에 표시됩니다.<a name="thing-certificate-attach"></a>

**사물에 인증서를 첨부하려면**

1.  AWS 탐색기에서 **IoT** 서비스 섹션을 확장합니다.

1. **Things**(사물) 하위 섹션에서 인증서를 첨부할 **사물**을 찾습니다.

1. **사물**에 대한 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 컨텍스트 메뉴에서 **Attach Certificate**(인증서 첨부)를 선택하여 인증서 목록이 포함된 입력 선택기를 엽니다.

1. 목록에서 사물에 첨부할 인증서에 해당하는 **certificate ID**(인증서 ID)를 선택합니다.

1. 이 단계가 완료되면 AWS 탐색기에서 인증서를 (사용자가 사물에 첨부한 항목으로) 액세스할 수 있습니다.<a name="thing-certificate-detach"></a>

**사물에서 인증서를 분리하려면**

1.  AWS 탐색기에서 **IoT** 서비스 섹션을 확장합니다.

1. **Things**(사물) 하위 섹션에서 인증서를 분리할 **사물**을 찾습니다.

1. **thing**(사물)의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 **Attach Certificate**(인증서 첨부)를 선택합니다.

1. 이 단계가 완료되면 분리된 인증서가 AWS Explorer의 사물 아래에 더 이상 표시되지 않습니다. 하지만 **Certificates**(인증서) 하위 섹션에서는 여전히 액세스할 수 있습니다.<a name="thing-delete"></a>

**사물을 삭제하려면**

1.  AWS 탐색기에서 **IoT** 서비스 섹션을 확장합니다.

1. **Things**(사물) 하위 섹션에서 삭제할 **사물**을 찾습니다.

1. **thing**(사물)의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 **Delete Thing**(사물 삭제)을 선택합니다.

1. 이 단계가 완료되면 삭제된 **사물**은 **Things**(사물) 하위 섹션에서 더 이상 사용할 수 없습니다.
**참고**  
인증서가 첨부되지 않은 항목만 삭제할 수 있습니다.

## AWS IoT 인증서
<a name="iot-cloud9-cert"></a>

인증서는 AWS IoT 서비스와 장치 간 보안 연결을 만드는 일반적인 방법입니다. X.509 인증서는 X.509 퍼블릭 키 인프라 표준을 사용하여 퍼블릭 키를 인증서에 포함된 ID와 연결하는 디지털 인증서입니다. AWS IoT 인증서에 대한 자세한 내용은 *AWS IoT 개발자 안내서*의 [인증(IoT)](https://docs.aws.amazon.com/iot/latest/developerguide/authentication.html)을 참조하세요.

### 인증서 관리
<a name="iot-cloud9-cert-actions"></a>

 AWS 도구 키트는 AWS Explorer에서 직접 인증서를 관리할 AWS IoT 수 있는 다양한 방법을 제공합니다. 이러한 내용은 다음 단계에 나와 있습니다.
+ [Create a certificate](#cert-create)
+ [Change a certificate status](#cert-status)
+ [Attach a policy to a certificate](#cert-attach-policy)
+ [Delete a certificate](#cert-delete)<a name="cert-create"></a>

**AWS IoT 인증서를 생성하려면**

X.509 인증서는의 인스턴스와 연결하는 데 사용됩니다 AWS IoT.

1.  AWS 탐색기에서 **IoT** 서비스 섹션을 확장하고 **인증서를** 엽니다(마우스 오른쪽 버튼 클릭).

1. 대화 상자를 열려면 컨텍스트 메뉴에서 **Create Certificate**(인증서 생성)를 선택합니다.

1. RSA 키 페어와 X.509 인증서를 저장하려면, 로컬 파일 시스템에서 디렉터리를 선택합니다.
**참고**  
기본 파일 이름에는 인증서 ID가 접두사로 포함됩니다.
X.509 인증서만 서비스를 AWS 계정통해 AWS IoT 에 저장됩니다.
RSA 키 페어는 한 번만 발급할 수 있습니다. 메시지가 표시되면 파일 시스템 내 안전한 위치에 저장하세요.
인증서 또는 키 페어를 파일 시스템에 저장할 수 없는 경우 AWS 도구 키트는에서 인증서를 삭제합니다 AWS 계정.<a name="cert-status"></a>

**인증서 상태 수정**

개별 인증서의 상태는 AWS 탐색기의 인증서 ID 옆에 표시되며 **활성**, **비활성** 또는 **취소됨**으로 설정할 수 있습니다.
**참고**  
인증서를 사용하여 디바이스를 AWS IoT 서비스에 연결하려면 먼저 인증서가 **활성** 상태여야 합니다.
이전에 비활성화했거나 기본적으로 비활성 상태인 **inactive**(비활성) 인증서를 활성화할 수 있습니다.
**revoked**(해지됨) 상태인 인증서는 활성화할 수 없습니다.

1.  AWS 탐색기에서 **IoT** 서비스 섹션을 확장합니다.

1. **Certificates**(인증서) 하위 섹션에서 수정할 인증서를 찾습니다.

1. 인증서에 사용할 수 있는 상태 변경 옵션을 표시하는 인증서의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 엽니다.
+ 인증서의 상태가 **inactive**(비활성)인 경우 **activate**(활성)를 선택하여 상태를 **activate**(활성)으로 변경합니다.
+ 인증서의 상태가 **active**(활성)인 경우 **deactive**(비활성)를 선택하여 **inactivate**(비활성)로 상태를 변경합니다.
+ 인증서의 상태가 **active(활성)** 또는 **inactive(비활성)**인 경우 **revoke(해지)**를 선택하여 상태를 **revoked(취소됨)**로 변경합니다.

**참고**  
이러한 상태 변경 작업은 **Things(사물)** 하위 섹션에 표시되는 사물에 첨부된 인증서를 선택하면 수행할 수 있습니다.<a name="cert-attach-policy"></a>

**인증서에 IoT 정책을 연결하려면**

1.  AWS 탐색기에서 **IoT** 서비스 섹션을 확장합니다.

1. **Certificates**(인증서) 하위 섹션에서 수정할 인증서를 찾습니다.

1. 인증서의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 **Attach Policy**(정책 연결)를 선택하여 사용 가능한 정책 목록이 포함된 입력 선택기를 엽니다.

1. 인증서에 연결할 정책을 선택합니다.

1. 이 단계가 완료되면 선택한 정책이 인증서에 하위 메뉴 항목으로 추가됩니다.<a name="cert-detach-policy"></a>

**인증서에서 IoT 정책을 분리하려면**

1.  AWS 탐색기에서 **IoT** 서비스 섹션을 확장합니다.

1. **Certificates**(인증서) 하위 섹션에서 수정할 인증서를 찾습니다.

1. 인증서를 확장하고 분리할 정책을 찾습니다.

1. 정책의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 컨텍스트 메뉴에서 **Detach**(분리)를 선택합니다.

1. 이 단계가 완료되면 인증서에서 더 이상 정책에 액세스할 수 없으며, **Policy**(정책) 하위 섹션에서 사용할 수 있습니다.<a name="cert-delete"></a>

**인증서 삭제**

1.  AWS 탐색기에서 **IoT** 서비스 제목을 확장합니다.

1. **Certificates**(인증서) 하위 섹션에서 삭제할 인증서를 찾습니다.

1. 인증서의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 컨텍스트 메뉴에서 **Delete Certificate**(인증서 삭제)를 선택합니다.
**참고**  
사물에 첨부되거나 활성 상태인 인증서는 삭제할 수 없습니다. 정책에 첨부된 인증서는 삭제할 수 있습니다.

## AWS IoT 정책
<a name="iot-vsctoolkit-policy"></a>

AWS IoT 코어 정책은 JSON 문서를 통해 정의됩니다. 각 정책은 하나 이상의 정책 문을 포함해야 합니다. 정책은 AWS IoT AWS및 디바이스가 서로 상호 작용하는 방법을 정의합니다. 정책 문서를 만드는 방법에 대한 자세한 내용은AWS IoT 개발자 안내서의 [IoT 정책](https://docs.aws.amazon.com/iot/latest/developerguide/iot-policies.html)을 참조하세요.**

**참고**  
이름이 지정된 정책은 롤백할 수 있도록 버전이 지정됩니다. AWS 탐색기에서 IoT 정책은 AWS IoT 서비스의 **정책** 하위 섹션에 나열됩니다. 정책을 확장하면 정책 버전을 볼 수 있습니다. 기본 버전은 별표(\$1)로 표시됩니다.

### 정책 관리
<a name="iot-vsctoolkit-policy-actions"></a>

 AWS Cloud9 IDE는 AWS IoT 서비스 정책을 관리할 수 있는 몇 가지 방법을 제공합니다. VS Code의 AWS 탐색기에서 직접 정책을 관리하거나 수정할 수 있는 방법은 다음과 같습니다.
+ [Create a policy](#policy-create)
+ [Upload a new policy version](#policy-version-upload)
+ [Edit a policy version](#policy-version-edit)
+ [Change the policy version defualt](#policy-version-default)
+ [Change the policy version defualt](#policy-delete)<a name="policy-create"></a>

**AWS IoT 정책을 생성하려면**
**참고**  
 AWS 탐색기에서 새 정책을 생성할 수 있습니다. 하지만 정책을 정의하는 JSON 문서가 파일 시스템에 있어야 합니다.

1.  AWS 탐색기에서 **IoT** 서비스 섹션을 확장합니다.

1. **Policies**(정책) 하위 섹션의 컨텍스트 메뉴(마우스 오른쪽 버튼 클릭)를 열고 **Policy Name**(정책 이름) 입력 필드를 연 다음 **Create Policy from Document**(문서에서 정책 만들기)를 선택합니다.

1. 이름을 입력하고 지시에 따라 파일 시스템에서 JSON 문서를 선택하라는 대화 상자를 엽니다.

1. 정책 정의가 포함된 JSON 파일을 선택합니다. 이 작업이 완료되면 AWS 탐색기에서 정책을 사용할 수 있습니다.<a name="policy-version-upload"></a>

**새 AWS IoT 정책 버전을 업로드하려면**

JSON 문서를 정책에 업로드하면 새 버전의 정책을 만들 수 있습니다.
**참고**  
 AWS Explorer를 사용하여 새 버전을 생성하려면 파일 시스템에 새 JSON 문서가 있어야 합니다.

1.  AWS 탐색기에서 **IoT** 서비스 섹션을 확장합니다.

1.  **Policies(정책)** 하위 섹션을 확장하여 AWS IoT 정책을 봅니다.

1. 업데이트할 정책의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 **Create new version from Document**(문서에서 새 버전 생성)를 선택합니다.

1. 대화 상자가 열리면 정책 정의에 대한 업데이트가 포함된 JSON 파일을 선택합니다.

   새 버전은 AWS 탐색기의 정책에서 액세스할 수 있습니다.<a name="policy-version-edit"></a>

**AWS IoT 정책 버전을 편집하려면**

를 사용하여 정책 문서를 열고 편집할 수 있습니다 AWS Cloud9. 문서 편집이 끝나면 문서를 파일 시스템에 저장합니다. 그런 다음 AWS 탐색기에서 AWS IoT 서비스에 업로드합니다.

1.  AWS 탐색기에서 **IoT** 서비스 섹션을 확장합니다.

1. **Policies**(정책) 하위 섹션을 펼치고 업데이트할 정책을 찾습니다.

1. **Policy Name**(정책 이름)을 열려면 **Document**(문서)에서 **Create Policy**(정책 생성)를 선택합니다.

1. 업데이트할 정책을 확장한 후 편집할 정책 버전의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 엽니다.

1. 에서 정책 버전을 열려면 context-menu에서 **보기를** AWS Cloud9선택하여 정책 버전을 엽니다.

1. 정책 문서가 열리면 변경 사항을 편집하고 저장합니다.
**참고**  
이 시점에서 정책에 적용한 변경 사항은 로컬 파일 시스템에만 저장됩니다. Explorer를 사용하여 버전을 업데이트하고 추적하려면의 단계를 AWS 반복합니다[Upload a new policy version](#policy-version-upload).<a name="policy-version-default"></a>

**새 정책 기본 버전 선택**

1.  AWS 탐색기에서 **IoT** 서비스 섹션을 확장합니다.

1. **Policies**(정책) 하위 섹션을 펼치고 업데이트할 정책을 찾습니다.

1. 업데이트할 정책을 확장한 후 설정할 정책 버전의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 연 다음 **Set as Default**(기본값으로 설정)를 선택합니다.

   이 작업이 완료되면 선택한 새 기본 버전 옆에 별표가 표시됩니다.<a name="policy-delete"></a>

**정책을 삭제하려면**
**참고**  
정책 또는 정책 버전을 삭제하기 전에 다음 조건이 충족되는지 확인하세요.  
정책이 인증서에 연결된 경우 정책을 삭제할 수 없습니다.
기본 버전이 아닌 버전이 있는 정책은 삭제할 수 없습니다.
새 기본 버전을 선택하거나 전체 정책을 삭제했다면 정책의 기본 버전만 삭제할 수 있습니다.
전체 정책을 삭제하기 전에 동일한 정책의 기본이 아닌 버전을 모두 삭제해야 합니다.

1.  AWS 탐색기에서 **IoT** 서비스 섹션을 확장합니다.

1. **Policies**(정책) 하위 섹션을 펼치고 업데이트할 정책을 찾습니다.

1. 업데이트할 정책을 확장한 후 삭제할 정책 버전의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 연 다음 **Delete**(삭제)를 선택합니다.

1. 버전이 삭제되면 AWS Explorer에서 더 이상 표시되지 않습니다.

1. 정책 기본 버전만 남아 있는 경우 상위 정책의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 **삭제**(Delete)를 선택합니다.

# Amazon Elastic Container Service 작업
<a name="ecs"></a>

 AWS Cloud9 IDE는 [Amazon Elastic Container Service(Amazon ECS)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/)에 대한 몇 가지 지원을 제공합니다. AWS Cloud9 IDE를 사용하여 Amazon ECS 리소스를 관리할 수 있습니다. 예를 들어, 태스크 정의를 만들 수 있습니다.

**Topics**
+ [AWS Toolkit for의 Amazon ECS Exec AWS Cloud9](ecs-cloud9-exec.md)

# AWS Toolkit for의 Amazon ECS Exec AWS Cloud9
<a name="ecs-cloud9-exec"></a>

 AWS 도구 키트를 사용하여 Amazon Elastic Container Service(Amazon ECS) 컨테이너에서 단일 명령을 실행할 수 있습니다 AWS Cloud9. Amazon ECS Exec 기능을 사용하여 이 작업을 수행할 수 있습니다.

**중요**  
Amazon ECS Exec을 활성화 및 비활성화하면 AWS 계정에서 ECS 리소스의 상태가 변경됩니다. 변경 사항에는 서비스 중지 및 재시작이 포함됩니다. 또한 Amazon ECS Exec이 활성화된 상태에서 리소스 상태를 변경하면 예상치 못한 결과가 발생할 수 있습니다. Amazon ECS에 대한 자세한 내용은 *Amazon ECS 개발자 안내서*의 [디버깅에 Amazon ECS Exec 사용](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-exec.html#ecs-exec-considerations)을 참조하세요.

## Amazon ECS Exec 사전 조건
<a name="ecs-exec-prereq"></a>

Amazon ECS Exec 기능을 사용하려면 먼저 충족해야 하는 몇 가지 사전 조건이 있습니다.

### Amazon ECS 사전 조건
<a name="ecs-requirements"></a>

작업이 Amazon EC2에서 호스팅되는지 아니면 호스팅되는지에 따라 AWS Fargate Amazon ECS Exec의 버전 요구 사항은 다릅니다.
+ Amazon EC2를 사용하는 경우 2021년 1월 20일 이후에 출시된 Amazon ECS 최적화 AMI를 에이전트 버전 1.50.2 이상으로 사용해야 합니다. 자세한 내용은 *Amazon ECS 개발자 안내서*의 [Amazon ECS 최적화 AMI](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html)를 참조하세요.
+ 를 사용하는 경우 플랫폼 버전 1.4.0 이상을 사용해야 AWS Fargate합니다. 자세한 내용은 *Amazon ECS 개발자 안내서*의 [AWS Fargate 플랫폼 버전](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html)을 참조하세요.

### AWS 계정 구성 및 IAM 권한
<a name="ecs-configuration"></a>

Amazon ECS Exec 기능을 사용하려면 AWS 계정과 연결된 기존 Amazon ECS 클러스터가 있어야 합니다. Amazon ECS Exec은 Systems Manager를 사용하여 클러스터의 컨테이너와 연결을 설정합니다. Amazon ECS에서는 SSM 서비스와 통신하기 위해 특정 작업 IAM 역할 권한이 필요합니다.

Amazon ECS Exec와 관련된 IAM 역할 및 정책에 대한 자세한 내용은 *Amazon ECS* *개발자 안내서*의 [ECS Exec에 필요한 IAM 권한](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-exec.html#ecs-exec-enabling-and-using)을 참조하세요.

## Amazon ECS Exec 작업
<a name="working-with-ecs-exec"></a>

 AWS 도구 키트의 AWS 탐색기에서 직접 Amazon ECS Exec을 활성화하거나 비활성화할 수 있습니다 AWS Cloud9. Amazon ECS Exec을 활성화한 후에는 Amazon ECS 메뉴에서 컨테이너를 선택하고 해당 컨테이너에 대해 명령을 실행합니다.

### Amazon ECS Exec 활성화
<a name="enabling-exec"></a>

1.  AWS 탐색기에서 Amazon ECS 메뉴를 찾아 확장합니다.

1. 수정할 서비스가 포함된 클러스터를 확장합니다.

1. 서비스의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 **Enable Command Execution**(명령 실행 활성화)을 선택합니다.

**중요**  
이 단계는 서비스의 새 배포를 시작하며 몇 분 정도 걸릴 수 있습니다. 자세한 내용은 이 섹션의 시작 부분에 나오는 참고를 참조하세요.

### Amazon ECS Exec 끄기
<a name="disabling-ecs-exec"></a>

1.  AWS 탐색기에서 Amazon ECS 메뉴를 찾아 확장합니다.

1. 원하는 서비스가 포함된 클러스터를 확장합니다.

1. 서비스의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 **Disable Command Execution**(명령 실행 비활성화)을 선택합니다.

**중요**  
이 단계는 서비스의 새 배포를 시작하며 몇 분 정도 걸릴 수 있습니다. 자세한 내용은 이 섹션의 시작 부분에 나오는 참고를 참조하세요.

### 컨테이너에 대한 명령 실행
<a name="run-commands-container"></a>

 AWS Explorer를 사용하여 컨테이너에 대해 명령을 실행하려면 Amazon ECS Exec을 활성화해야 합니다. 활성화되지 않은 경우 이 섹션의 [Amazon ECS Exec 활성화](#enabling-exec) 절차를 참조하세요.

1.  AWS 탐색기에서 Amazon ECS 메뉴를 찾아 확장합니다.

1. 원하는 서비스가 포함된 클러스터를 확장합니다.

1. 서비스를 확장하여 연결된 컨테이너를 나열합니다.

1. 컨테이너에 대한 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 **Run Command in Container**(컨테이너에서 명령 실행)를 선택합니다.

1. 실행 중인 태스크 목록과 함께 **프롬프트**가 열립니다. 원하는 **태스크 ARN**을 선택합니다.
**참고**  
실행 중인 작업이 하나뿐이면 프롬프트가 열리지 않습니다. 대신 태스크가 자동으로 선택됩니다.

1. 프롬프트가 표시되면 실행할 명령을 입력하고 **Enter** 키를 눌러 계속 진행합니다.

# Amazon EventBridge 작업
<a name="eventbridge"></a>

용 AWS 도구 키트는 [Amazon EventBridge](https://aws.amazon.com/eventbridge/)에 대한 지원을 AWS Cloud9 제공합니다. 도구 AWS 키트를 사용하면 스키마와 같은 EventBridge의 특정 측면을 사용할 AWS Cloud9수 있습니다.

**Topics**
+ [Amazon EventBridge 스키마 사용](eventbridge-schemas.md)

# Amazon EventBridge 스키마 사용
<a name="eventbridge-schemas"></a>

 AWS Toolkit for를 사용하여 Amazon EventBridge 스키마에서 다양한 작업을 AWS Cloud9 수행할 수 있습니다. [ EventBridge ](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-schemas.html)

## 사전 조건
<a name="eventbridge-schemas-prereq"></a>

작업할 EventBridge 스키마를 AWS 계정에서 사용할 수 있어야 합니다. 사용할 수 없다면 스키마를 만들거나 업로드해야 합니다. 자세한 정보는 [Amazon EventBridge 사용 설명서](https://docs.aws.amazon.com/eventbridge/latest/userguide/)의 [Amazon EventBridge 스키마](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-schemas.html)를 참조하세요.

## 사용 가능한 스키마 보기
<a name="eventbridge-schemas-view"></a>

1. **AWS Explorer**에서 **스키마**를 확장합니다.

1. 확인할 스키마가 포함된 레지스트리의 이름을 확장합니다. 예를 들어에서 AWS 제공하는 많은 스키마는 **aws.events** 레지스트리에 있습니다.

1. 편집기에서 스키마를 보려면 스키마의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 연 다음 **View Schema**(스키마 보기)를 선택합니다.  
![\[EventBridge 스키마를 확인하세요.\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/images/schema-eventbridge.png)

## 사용 가능한 스키마 찾기
<a name="eventbridge-schemas-find"></a>

**AWS Explorer**에서 다음 중 하나 이상을 수행합니다.
+ 찾으려는 스키마의 제목을 입력합니다. **AWS Explorer**에서 일치되는 스키마 제목이 강조 표시됩니다. (강조 표시된 제목을 보려면 레지스트리를 확장하세요.)
+ **Schemas**(스키마)에 대한 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 연 다음 **Search Schemas**(스키마 검색)를 선택합니다. 또는 **Schemas**(스키마)를 확장하고 찾을 스키마가 포함된 레지스트리의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 연 다음 **Search Schemas in Registry**(레지스트리에서 스키마 검색)를 선택합니다. **EventBridge Schemas Search**(EventBridge 스키마 검색) 대화 상자에서 찾으려는 스키마의 제목 입력을 시작합니다. 대화 상자에 일치하는 스키마 제목이 표시됩니다.

  스키마의 제목을 선택하면 대화 상자에 스키마가 표시됩니다.

## 사용 가능한 스키마에 대한 코드 생성
<a name="eventbridge-schemas-generate-code"></a>

1. **AWS Explorer**에서 **스키마**를 확장합니다.

1. 코드를 생성할 스키마가 포함된 레지스트리의 이름을 확장합니다.

1. 스키마의 제목에 대한 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 **Download code bindings**(코드 바인딩 다운로드)를 선택합니다.

1. 결과 마법사 페이지에서 다음을 선택합니다.
   + 스키마 **버전**
   + 코드 바인딩 언어
   + 로컬 개발 시스템에 생성된 코드를 저장할 작업 영역 폴더