

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

# Amazon EC2를 사용하여 가상 디바이스 생성
<a name="creating-a-virtual-thing"></a>

이 자습서에서는 클라우드에서 가상 디바이스로 사용할 Amazon EC2 인스턴스를 생성합니다.

이 자습서를 완료하려면이 필요합니다 AWS 계정. 없는 경우 계속하기 전에 [설정 AWS 계정](setting-up.md)에서 설명하는 단계를 완료하세요.

**Topics**
+ [Amazon EC2 인스턴스 설정](#set-up-ec2)
+ [Git, Node.js 설치 및 구성 AWS CLI](#install-git-node)
+ [가상 디바이스에 대한 AWS IoT 리소스 생성](#ec2-create-certificate)
+ [AWS IoT Device SDK for JavaScript 설치](#ec2-sdk)
+ [샘플 애플리케이션 실행](#ec2-run-app)
+ [AWS IoT 콘솔에서 샘플 앱의 메시지 보기](#ec2-view-msg)

## Amazon EC2 인스턴스 설정
<a name="set-up-ec2"></a>

다음 단계에서는 물리적 디바이스 대신 가상 디바이스 역할을 할 Amazon EC2 인스턴스를 생성하는 방법을 보여 줍니다.

Amazon EC2 인스턴스를 처음 생성하는 경우 [Amazon EC2Linux 인스턴스 시작하기](https://docs.aws.amazon.com//AWSEC2/latest/UserGuide/EC2_GetStarted.html)가 더 도움이 될 것입니다.

**인스턴스 시작**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 왼쪽의 콘솔 메뉴에서 **Instances**(인스턴스) 섹션을 펼치고 **Instances**(인스턴스)를 선택합니다. **Instances**(인스턴스) 대시보드에서 오른쪽의 **Launch Instance**(인스턴스 시작)를 선택하면 기본 구성 목록이 표시됩니다.

1. **Name and tags**(이름 및 태그) 섹션에서 인스턴스의 이름을 입력하고 선택적으로 태그를 추가합니다.

1. **Application and OS Images(Amazon Machine Image)**(애플리케이션 및 OS 이미지(Amazon Machine Image)) 섹션에서 *Amazon Linux 2 AMI(HVM)*와 같이 인스턴스에 대한 AMI 템플릿을 선택합니다. 해당되는 AMI는 "프리 티어 사용 가능"으로 표시됩니다.

1. **Instance type**(인스턴스 유형) 섹션에서 인스턴스의 하드웨어 구성을 선택할 수 있습니다. 기본으로 선택된 `t2.micro` 유형을 선택합니다. 프리 티어에 적격인 인스턴스 유형입니다.

1. **Key pair (login)**(키 페어(로그인)) 섹션의 드롭다운 목록에서 키 페어 이름을 선택하거나 **Create a new key pair**(새 키 페어 생성)를 선택하여 새 키 페어를 생성합니다. 새 키 페어를 생성할 때는 프라이빗 키 파일을 다운로드하여 안전한 곳에 저장해야 합니다. 이때만 다운로드하고 저장할 수 있기 때문입니다. 인스턴스를 시작할 때 키 페어의 이름을 제공하고, 인스턴스에 연결할 때마다 해당 프라이빗 키를 제공해야 합니다.
**주의**  
**Proceed without a key pair**(키 페어 없이 계속) 옵션을 선택하지 마세요. 키 페어 없이 인스턴스를 시작하면 인스턴스에 연결할 수 없습니다.

1. **Network settings**(네트워크 설정) 섹션 및 **Configure storage**(스토리지 구성) 섹션에서 기본 설정을 유지할 수 있습니다. 준비가 완료되면 **Launch instances**(인스턴스 시작)를 선택합니다.

1. 확인 페이지에서 인스턴스가 실행 중인지 확인할 수 있습니다. **인스턴스 보기**를 선택하여 확인 페이지를 닫고 콘솔로 돌아갑니다.

1. **인스턴스** 화면에서 시작 상태를 볼 수 있습니다. 인스턴스를 시작하는 데 약간 시간이 걸립니다. 인스턴스를 시작할 때 초기 상태는 `pending`입니다. 인스턴스가 시작된 후에는 상태가 `running`으로 바뀌고 퍼블릭 DNS 이름을 받습니다. (**퍼블릭 DNS(IPv4)** 열이 숨겨져 있는 경우 페이지 오른쪽 상단 모서리에 있는 **열 표시/숨기기**(기어 모양 아이콘)를 선택한 다음 **퍼블릭 DNS(IPv4)**를 선택합니다.)

1. 연결할 수 있도록 인스턴스가 준비될 때까지 몇 분 정도 걸릴 수 있습니다. 인스턴스가 상태 확인을 통과했는지 확인하세요. **상태 검사** 열에서 이 정보를 볼 수 있습니다.

   새 인스턴스가 상태 확인을 통과한 후 다음 절차를 계속하여 인스턴스에 연결합니다.

**인스턴스에 연결하려면**

Amazon EC2 콘솔에서 인스턴스를 선택하고 Amazon EC2 Instance Connect를 사용하여 연결하도록 선택하면 브라우저 기반 클라이언트를 사용하여 인스턴스에 연결할 수 있습니다. Instance Connect는 권한을 처리하여 성공적인 연결을 제공합니다.

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 왼쪽 메뉴에서 **Instances**(인스턴스)를 선택합니다.

1. 인스턴스를 선택한 다음 **연결**을 선택합니다.

1. **Amazon EC2 Instance Connect**, **Connect**(연결)를 선택합니다.

이제 새 Amazon EC2 인스턴스에 로그인된 **Amazon EC2 Instance Connect** 창이 있어야 합니다.

## Git, Node.js 설치 및 구성 AWS CLI
<a name="install-git-node"></a>

이 섹션에서는 Linux 인스턴스에 Git과 Node.js를 설치합니다.

**Git를 설치하려면**

1. **Amazon EC2 Instance Connect** 창에서 다음 명령을 사용하여 인스턴스를 업데이트합니다.

   ```
   sudo yum update -y
   ```

1. **Amazon EC2 Instance Connect** 창에서 다음 명령을 사용하여 Git를 설치합니다.

   ```
   sudo yum install git -y
   ```

1. Git이 설치되어 있고 현재 버전의 Git이 설치되어 있는지 확인하려면 다음 명령을 실행합니다.

   ```
   git --version
   ```

**Node.js를 설치하려면**

1. **Amazon EC2 Instance Connect** 창에서 다음 명령을 사용하여 nvm(노드 버전 관리자)를 설치합니다.

   ```
   curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
   ```

   nvm을 사용하면 여러 버전의 Node.js를 설치할 수 있고 여러 버전 간을 전환할 수 있기 때문에 여기서는 nvm을 사용하여 Node.js를 설치합니다.

1. **Amazon EC2 Instance Connect** 창에서 다음 명령을 사용하여 nvm을 활성화합니다.

   ```
   . ~/.nvm/nvm.sh
   ```

1. **Amazon EC2 Instance Connect** 창에서 다음 명령을 사용하여 최신 버전의 Node.js를 설치하기 위해 nvm을 사용합니다.

   ```
   nvm install 16
   ```
**참고**  
이 명령어를 실행하면 Node.js의 최신 LTS 릴리스를 설치합니다.

   Node.js를 설치하면 npm(노드 패키지 관리자)도 설치되므로 필요에 따라 추가 모듈을 설치할 수 있습니다.

1. **Amazon EC2 Instance Connect** 창에서 다음 명령을 사용하여 Node.js가 설치되었고 올바르게 실행되는지 테스트합니다.

   ```
   node -e "console.log('Running Node.js ' + process.version)"
   ```

    이 자습서에서는 Node v10.0 이상이 필요합니다. 자세한 정보는 [자습서: Amazon EC2 인스턴스에서 Node.js 설정(Tutorial: Setting Up Node.js on an Amazon EC2 Instance)](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/setting-up-node-on-ec2-instance.html)을 참조하세요.

**를 구성하려면 AWS CLI**

Amazon EC2 인스턴스에는 AWS CLI이(가) 미리 로드됩니다. 그러나 AWS CLI 프로필을 작성해야 합니다. CLI를 구성하는 방법에 대한 자세한 정보는 [AWS CLI구성](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)을 참조하세요.

1. 다음 예제는 샘플 값을 보여줍니다. 이들을 사용자의 고유한 값으로 교체합니다. 이 값은 [AWS 콘솔의 계정 정보에 있는 **보안 자격 증명(Security credentials)**](https://console.aws.amazon.com//iam/home#/security_credentials)에서 찾을 수 있습니다.

   **Amazon EC2 Instance Connect** 창에서 다음 명령을 입력합니다.

   ```
   aws configure
   ```

   그런 다음 표시된 프롬프트에 계정의 값을 입력합니다.

   ```
   AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
   AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
   Default region name [None]: us-west-2
   Default output format [None]: json
   ```

1. 다음 명령을 사용하여 AWS CLI 구성을 테스트할 수 있습니다.

   ```
   aws iot describe-endpoint --endpoint-type iot:Data-ATS
   ```

    AWS CLI 이 올바르게 구성된 경우 명령은에서 엔드포인트 주소를 반환해야 합니다 AWS 계정.

## 가상 디바이스에 대한 AWS IoT 리소스 생성
<a name="ec2-create-certificate"></a>

이 섹션에서는 AWS CLI 를 사용하여 가상 디바이스에서 사물 객체와 해당 인증서 파일을 직접 생성하는 방법을 설명합니다. 이 작업은 다른 컴퓨터에서 디바이스로 복사할 때 발생할 수 있는 잠재적인 복합 문제를 피하기 위해 디바이스에서 직접 수행됩니다. 이 섹션에서는 가상 디바이스를 위한 다음과 같은 리소스를 생성합니다.
+ 가상 디바이스를 나타낼 사물 객체입니다 AWS IoT.
+ 가상 디바이스를 인증하기 위한 인증서.
+ 가상 디바이스가 AWS IoT에 연결하고 메시지를 게시, 수신 및 구독할 수 있는 권한을 부여하는 정책 문서.

**Linux 인스턴스에서 AWS IoT 사물 객체를 생성하려면**

에 연결된 디바이스는 AWS IoT 레지스트리의 *사물 객체*로 AWS IoT 표시됩니다. *사물 객체*는 특정 디바이스 또는 논리적 엔터티를 나타냅니다. 이 경우 *사물 객체*는 가상 디바이스인 이 Amazon EC2 인스턴스를 나타냅니다.

1. **Amazon EC2 Instance Connect** 창에서 다음 명령을 실행하여 사물 객체를 만듭니다.

   ```
   aws iot create-thing --thing-name "MyIotThing"
   ```

1. JSON 응답은 다음과 같아야 합니다.

   ```
   {
       "thingArn": "arn:aws:iot:your-region:your-aws-account:thing/MyIotThing", 
       "thingName": "MyIotThing",
       "thingId": "6cf922a8-d8ea-4136-f3401EXAMPLE"
   }
   ```

**Linux 인스턴스에서 AWS IoT 키와 인증서를 생성하고 연결하려면**

**[create-keys-and-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/create-keys-and-certificate.html)** 명령은 Amazon Root 인증 기관에서 서명한 클라이언트 인증서를 생성합니다. 이 인증서는 가상 디바이스의 자격 증명을 인증하는 데 사용됩니다.

1. **Amazon EC2 Instance Connect** 창에서 인증서 및 키 파일을 저장할 디렉터리를 생성합니다.

   ```
   mkdir ~/certs
   ```

1. **Amazon EC2 Instance Connect** 창에서 다음 명령을 사용하여 Amazon CA(인증 기관) 인증서의 사본을 다운로드합니다.

   ```
   curl -o ~/certs/Amazon-root-CA-1.pem \
       https://www.amazontrust.com/repository/AmazonRootCA1.pem
   ```

1. **Amazon EC2 Instance Connect** 창에서 다음 명령을 실행하여 프라이빗 키, 퍼블릭 키 및 X.509 인증서 파일을 생성합니다. 또한이 명령은 인증서를 등록하고 활성화합니다 AWS IoT.

   ```
   aws iot create-keys-and-certificate \
       --set-as-active \
       --certificate-pem-outfile "~/certs/device.pem.crt" \
       --public-key-outfile "~/certs/public.pem.key" \
       --private-key-outfile "~/certs/private.pem.key"
   ```

   그 응답은 다음과 같습니다. 후속 명령에서 사용할 수 있도록 `certificateArn`을 저장해 둡니다. 이것은 이후 단계에서 인증서를 사물에 연결하고 정책을 인증서에 연결하는 데 필요합니다.

   ```
   {
       "certificateArn": "arn:aws:iot:us-west-2:123456789012:cert/9894ba17925e663f1d29c23af4582b8e3b7619c31f3fbd93adcb51ae54b83dc2",
       "certificateId": "9894ba17925e663f1d29c23af4582b8e3b7619c31f3fbd93adcb51ae54b83dc2",
       "certificatePem": "
   -----BEGIN CERTIFICATE-----
   MIICiTCCEXAMPLE6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC
   VVMxCzAJBgNVBAgEXAMPLEAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6
   b24xFDASBgNVBAsTC0lBTSEXAMPLE2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd
   BgkqhkiG9w0BCQEWEG5vb25lQGFtYEXAMPLEb20wHhcNMTEwNDI1MjA0NTIxWhcN
   MTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCEXAMPLEJBgNVBAgTAldBMRAwDgYD
   VQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDAEXAMPLEsTC0lBTSBDb25z
   b2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEXAMPLE25lQGFt
   YXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+aEXAMPLE
   EXAMPLEfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T
   rDHudUZEXAMPLELG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE
   Ibb3OhjZnzcvQAEXAMPLEWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4
   nUhVVxYUntneD9+h8Mg9qEXAMPLEyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb
   FFBjvSfpJIlJ00zbhNYS5f6GuoEDEXAMPLEBHjJnyp378OD8uTs7fLvjx79LjSTb
   NYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE=
   -----END CERTIFICATE-----\n",
       "keyPair": {
           "PublicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkEXAMPLEQEFAAOCAQ8AMIIBCgKCAQEAEXAMPLE1nnyJwKSMHw4h\nMMEXAMPLEuuN/dMAS3fyce8DW/4+EXAMPLEyjmoF/YVF/gHr99VEEXAMPLE5VF13\n59VK7cEXAMPLE67GK+y+jikqXOgHh/xJTwo+sGpWEXAMPLEDz18xOd2ka4tCzuWEXAMPLEahJbYkCPUBSU8opVkR7qkEXAMPLE1DR6sx2HocliOOLtu6Fkw91swQWEXAMPLE\GB3ZPrNh0PzQYvjUStZeccyNCx2EXAMPLEvp9mQOUXP6plfgxwKRX2fEXAMPLEDa\nhJLXkX3rHU2xbxJSq7D+XEXAMPLEcw+LyFhI5mgFRl88eGdsAEXAMPLElnI9EesG\nFQIDAQAB\n-----END PUBLIC KEY-----\n",
           "PrivateKey": "-----BEGIN RSA PRIVATE KEY-----\nkey omitted for security reasons\n-----END RSA PRIVATE KEY-----\n"
       }
   }
   ```

1. **Amazon EC2 Instance Connect** 창에서 다음 명령과, 앞의 명령의 응답으로 얻은 *certificateArn*을 사용하여 방금 만든 인증서에 사물 객체를 연결합니다.

   ```
   aws iot attach-thing-principal \
       --thing-name "MyIotThing" \
       --principal "certificateArn"
   ```

   이 명령이 제대로 실행되면 어떤 출력도 표시하지 않습니다.

**정책을 생성하여 연결하려면**

1. **Amazon EC2 Instance Connect** 창에서 이 정책 문서를 복사하여 이름이 **\$1/policy.json**인 파일에 붙여 넣어서 정책 파일을 생성합니다.

   자주 사용하는 Linux 편집기가 없는 경우 다음 명령을 사용하여 **nano**를 열 수 있습니다.

   ```
   nano ~/policy.json
   ```

   `policy.json`에 대한 정책 문서를 붙여넣습니다. **nano** 편집기를 종료(Ctrl-X)하고 파일을 저장합니다.

   `policy.json`용 정책 문서의 내용.  
****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "iot:Publish",
                   "iot:Subscribe",
                   "iot:Receive",
                   "iot:Connect"
               ],
               "Resource": [
                   "*"
               ]
           }
       ]
   }
   ```

1. **Amazon EC2 Instance Connect** 창에서 다음 명령을 사용하여 정책을 생성합니다.

   ```
   aws iot create-policy \
       --policy-name "MyIotThingPolicy" \
       --policy-document "file://~/policy.json"
   ```

   출력:  
****  

   ```
   {
       "policyName": "MyIotThingPolicy",
       "policyArn": "arn:aws:iot:us-east-1:your-aws-account:policy/MyIotThingPolicy",
       "policyDocument": "{
           \"Version\": \"2012-10-17\",
           \"Statement\": [
               {
                   \"Effect\": \"Allow\",
                   \"Action\": [
                       \"iot:Publish\",
                       \"iot:Receive\",
                       \"iot:Subscribe\",
                       \"iot:Connect\"
                   ],
                   \"Resource\": [
                       \"*\"
                   ]
           }
           ]
       }",
       "policyVersionId": "1"
   }
   ```

1. **Amazon EC2 Instance Connect** 창에서 다음 명령을 사용하여 정책을 가상 디바이스의 인증서에 연결합니다.

   ```
   aws iot attach-policy \
       --policy-name "MyIotThingPolicy" \
       --target "certificateArn"
   ```

   이 명령이 제대로 실행되면 어떤 출력도 표시하지 않습니다.

## AWS IoT Device SDK for JavaScript 설치
<a name="ec2-sdk"></a>

이 단원에서는 애플리케이션이 AWS IoT 및 샘플 프로그램과 통신하는 데 사용할 수 있는 코드가 포함된 AWS IoT Device SDK for JavaScript를 설치합니다. 자세한 내용은 [JavaScript GitHub 리포지토리용AWS IoT 디바이스 SDK](https://github.com/aws/aws-iot-device-sdk-js-v2)를 참조하세요.

**Linux 인스턴스에 AWS IoT Device SDK for JavaScript를 설치하려면**

1. **Amazon EC2 Instance Connect** 창에서이 명령을 사용하여 AWS IoT Device SDK for JavaScript 리포지토리를 홈 `aws-iot-device-sdk-js-v2` 디렉터리의 디렉터리에 복제합니다.

   ```
   cd ~
   git clone https://github.com/aws/aws-iot-device-sdk-js-v2.git
   ```

1. 이전 단계에서 생성한 `aws-iot-device-sdk-js-v2` 디렉터리로 이동합니다.

   ```
   cd aws-iot-device-sdk-js-v2
   ```

1. npm을 사용하여 SKD를 설치합니다.

   ```
   npm install
   ```

## 샘플 애플리케이션 실행
<a name="ec2-run-app"></a>

 다음 섹션의 명령은 이 표에 표시된 대로 키 및 인증서 파일이 가상 디바이스에 저장되어 있다고 가정합니다.


**인증서 파일 이름**  

|  파일  |  파일 경로  | 
| --- | --- | 
|  프라이빗 키  |  `~/certs/private.pem.key`  | 
|  디바이스 인증서  |  `~/certs/device.pem.crt`  | 
|  루트 CA 인증서  |  `~/certs/Amazon-root-CA-1.pem`  | 

이 섹션에서는 AWS IoT Device SDK for JavaScript의 `aws-iot-device-sdk-js-v2/samples/node` 디렉터리에 있는 `pub-sub.js` 샘플 앱을 설치하고 실행합니다. 이 앱은 디바이스인 Amazon EC2 인스턴스가 MQTT 라이브러리를 사용하여 MQTT 메시지를 게시하고 구독하는 방법을 보여줍니다. `pub-sub.js` 샘플 앱은 `topic_1` 주제를 구독하고 해당 주제에 10개의 메시지를 게시하고 메시지 브로커로부터 받은 메시지를 표시합니다.

**샘플 앱을 설치하고 실행하려면**

1. **Amazon EC2 Instance Connect**에서 다음 명령을 사용하여 SDK가 생성한 `aws-iot-device-sdk-js-v2/samples/node/pub_sub` 디렉터리로 이동하고 샘플 앱을 설치합니다.

   ```
   cd ~/aws-iot-device-sdk-js-v2/samples/node/pub_sub
   npm install
   ```

1. **Amazon EC2 Instance Connect** 창에서이 명령을 사용하여에서 *your-iot-endpoint* AWS IoT 를 가져옵니다.

   ```
   aws iot describe-endpoint --endpoint-type iot:Data-ATS
   ```

1. **Amazon EC2 Instance Connect** 창에서 *your-iot-endpoint*를 표시된 대로 삽입하고 다음 명령을 실행합니다.

   ```
   node dist/index.js --topic topic_1 --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key --endpoint your-iot-endpoint
   ```

샘플 앱은 다음과 같은 작업을 수행합니다.

1. 계정의 AWS IoT Core 에 연결합니다.

1. 메시지 주제 **topic\$11**을 구독하고 해당 주제에 대해 수신하는 메시지 표시.

1. **topic\$11** 주제에 10개의 메시지 게시.

1. 다음과 유사한 출력 표시.

   ```
   Publish received. topic:"topic_1" dup:false qos:1 retain:false
   {"message":"Hello world!","sequence":1}
   Publish received. topic:"topic_1" dup:false qos:1 retain:false
   {"message":"Hello world!","sequence":2}
   Publish received. topic:"topic_1" dup:false qos:1 retain:false
   {"message":"Hello world!","sequence":3}
   Publish received. topic:"topic_1" dup:false qos:1 retain:false
   {"message":"Hello world!","sequence":4}
   Publish received. topic:"topic_1" dup:false qos:1 retain:false
   {"message":"Hello world!","sequence":5}
   Publish received. topic:"topic_1" dup:false qos:1 retain:false
   {"message":"Hello world!","sequence":6}
   Publish received. topic:"topic_1" dup:false qos:1 retain:false
   {"message":"Hello world!","sequence":7}
   Publish received. topic:"topic_1" dup:false qos:1 retain:false
   {"message":"Hello world!","sequence":8}
   Publish received. topic:"topic_1" dup:false qos:1 retain:false
   {"message":"Hello world!","sequence":9}
   Publish received. topic:"topic_1" dup:false qos:1 retain:false
   {"message":"Hello world!","sequence":10}
   ```

샘플 앱을 실행하는 데 문제가 있는 경우 [샘플 애플리케이션 문제 해결](gs-device-troubleshoot.md)를 검토합니다.

샘플 앱이 수행 중인 작업에 대한 자세한 메시지를 표시하도록 명령줄에 `--verbosity debug` 파라미터를 추가할 수도 있습니다. 이 정보는 문제를 해결하는 데 필요한 도움을 제공할 수 있습니다.

## AWS IoT 콘솔에서 샘플 앱의 메시지 보기
<a name="ec2-view-msg"></a>

**AWS IoT 콘솔**에서 **MQTT 테스트 클라이언트**를 사용하여, 샘플 앱의 메시지가 메시지 브로커를 통과할 때 해당 메시지를 볼 수 있습니다.

**샘플 앱에서 게시한 MQTT 메시지를 보려면**

1. [MQTT 클라이언트를 사용하여 AWS IoT MQTT 메시지 보기](view-mqtt-messages.md)을(를) 검토합니다. 이는 MQTT 메시지가 메시지 브로커를 통과할 때 해당 메시지를 보기 위해 **AWS IoT 콘솔**에서 **MQTT 테스트 클라이언트**를 사용하는 방법을 파악하는 데 도움이 됩니다.

1. **AWS IoT 콘솔**에서 **MQTT 테스트 클라이언트**를 엽니다.

1. **Subscribe to a topic**(주제 구독)에서 **topic\$11** 주제를 구독합니다.

1. **Amazon EC2 Instance Connect** 창에서 샘플 앱을 다시 실행하고 **AWS IoT 콘솔**의 **MQTT 테스트 클라이언트**에서 메시지를 확인합니다.

   ```
   cd ~/aws-iot-device-sdk-js-v2/samples/node/pub_sub
   node dist/index.js --topic topic_1 --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key --endpoint your-iot-endpoint
   ```

MQTT 및가 프로토콜을 AWS IoT Core 지원하는 방법에 대한 자세한 내용은 [MQTT](https://docs.aws.amazon.com//iot/latest/developerguide/mqtt.html)를 참조하세요.