

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

# AWS IoT Device Client를 사용하여 메시지 게시 시연
<a name="iot-dc-testconn-publish"></a>

이 섹션의 절차는 AWS IoT Device Client가 기본 및 사용자 지정 MQTT 메시지를 보내는 방법을 보여줍니다.

이러한 연습을 위해 이전 단계에서 생성한 정책의 이러한 정책 설명은 Raspberry Pi에 다음 작업을 수행할 수 있는 권한을 부여합니다.
+ 

**`iot:Connect`**  
 AWS IoT Device Client를 실행하는 Raspberry Pi`PubSubTestThing`인 라는 클라이언트에 연결할 권한을 부여합니다.

  ```
      {
        "Effect": "Allow",
        "Action": [
          "iot:Connect"
        ],
        "Resource": [
          "arn:aws:iot:us-west-2:57EXAMPLE833:client/PubSubTestThing"
        ]
      }
  ```
+ 

**`iot:Publish`**  
Raspberry Pi에 `test/dc/pubtopic`의 MQTT 주제가 있는 메시지를 게시할 수 있는 권한을 부여합니다.

  ```
      {
        "Effect": "Allow",
        "Action": [
          "iot:Publish"
        ],
        "Resource": [
          "arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/pubtopic"
        ]
      }
  ```

  `iot:Publish` 작업은 리소스 배열에 나열된 MQTT 주제에 게시할 수 있는 권한을 부여합니다. 이러한 메시지의 *내용*은 정책 설명에 의해 제어되지 않습니다.

## AWS IoT Device Client를 사용하여 기본 메시지 게시
<a name="iot-dc-testconn-publish-default"></a>

이 절차는 AWS IoT Device Client를 실행하여 MQTT **테스트 클라이언트가 수신하고 표시하는 단일 기본 MQTT** 메시지를 게시합니다.

**AWS IoT Device Client에서 기본 MQTT 메시지를 보내려면**

1. 이 절차를 수행하는 동안 Raspberry Pi에 연결된 로컬 호스트 컴퓨터의 터미널 창과 **MQTT 테스트 클라이언트(MQTT test client)**가 있는 창이 모두 표시되는지 확인합니다.

1. 터미널 창에서 다음 명령을 입력하여에서 생성된 구성 파일을 사용하여 AWS IoT Device Client를 실행합니다[구성 파일 생성](iot-dc-install-configure.md#iot-dc-install-dc-configure-step1).

   ```
   cd ~/aws-iot-device-client/build
   ./aws-iot-device-client --config-file ~/dc-configs/dc-pubsub-config.json
   ```

   터미널 창에서 AWS IoT Device Client는 정보 메시지와 실행 시 발생하는 오류를 표시합니다.

   터미널 창에 오류가 표시되지 않으면 **MQTT 테스트 클라이언트(MQTT test client)**를 검토합니다.

1. **MQTT 테스트 클라이언트**의 **구독** 창에서 `test/dc/pubtopic` 메시지 주제로 *Hello World\$1* 메시지가 전송되었음을 확인할 수 있습니다.

1.  AWS IoT Device Client에 오류가 표시되지 않고 *Hello World\$1*가 **MQTT 테스트 클라이언트**의 `test/dc/pubtopic` 메시지로 전송된 것을 볼 수 있는 경우 성공적인 연결을 입증한 것입니다.

1. 터미널 창에서 **^C** (Ctrl-C)를 입력하여 AWS IoT Device Client를 중지합니다.

 AWS IoT Device Client가 기본 MQTT 메시지를 게시했음을 입증한 후 로 계속 진행할 수 있습니다[AWS IoT Device Client를 사용하여 사용자 지정 메시지 게시](#iot-dc-testconn-publish-custom).

## AWS IoT Device Client를 사용하여 사용자 지정 메시지 게시
<a name="iot-dc-testconn-publish-custom"></a>

이 섹션의 절차에서는 사용자 정의 MQTT 메시지를 생성한 다음 AWS IoT Device Client를 실행하여 **MQTT 테스트 클라이언트(MQTT test client)**가 수신하고 표시할 수 있도록 사용자 정의 MQTT 메시지를 한 번 게시합니다.

### AWS IoT Device Client에 대한 사용자 지정 MQTT 메시지 생성
<a name="iot-dc-testconn-publish-custom-create"></a>

Raspberry Pi에 연결된 로컬 호스트 컴퓨터의 터미널 창에서 다음 단계를 수행합니다.

**AWS IoT Device Client가 게시할 사용자 지정 메시지를 생성하려면**

1. 터미널 창에서 `nano` 등의 텍스트 편집기를 엽니다.

1. 텍스트 편집기에 다음 JSON 문서를 복사하여 붙여 넣습니다. 이는 AWS IoT Device Client가 게시하는 MQTT 메시지 페이로드입니다.

   ```
   {
     "temperature": 28,
     "humidity": 80,
     "barometer": 1013,
     "wind": {
       "velocity": 22,
       "bearing": 255
     }
   }
   ```

1. 텍스트 편집기의 내용을 **\$1/messages/sample-ws-message.json**으로 저장합니다.

1. 다음 명령을 입력하여 방금 생성한 메시지 파일의 권한을 설정합니다.

   ```
   chmod 600 ~/messages/*
   ```

**AWS IoT Device Client가 사용자 지정 메시지를 전송하는 데 사용할 구성 파일을 생성하려면**

1. 터미널 창의와 같은 텍스트 편집기에서 기존 AWS IoT Device Client 구성 파일을 `nano`엽니다**\$1/dc-configs/dc-pubsub-config.json**.

1. 다음과 같이 `samples` 객체를 편집합니다. 이 파일의 다른 부분은 변경할 필요가 없습니다.

   ```
     "samples": {
       "pub-sub": {
         "enabled": true,
         "publish-topic": "test/dc/pubtopic",
         "publish-file": "~/messages/sample-ws-message.json",
         "subscribe-topic": "test/dc/subtopic",
         "subscribe-file": "~/.aws-iot-device-client/log/pubsub_rx_msgs.log"
   ```

1. 텍스트 편집기의 내용을 **\$1/dc-configs/dc-pubsub-custom-config.json**으로 저장합니다.

1. 이 명령을 실행하여 새로운 구성 파일에 대한 권한을 설정합니다.

   ```
   chmod 644 ~/dc-configs/dc-pubsub-custom-config.json
   ```

### AWS IoT Device Client를 사용하여 사용자 지정 MQTT 메시지 게시
<a name="iot-dc-testconn-publish-custom-publish"></a>

이 변경 사항은 MQTT 메시지 페이로드의 *내용*에만 영향을 주므로 현재 정책이 계속 작동합니다. 그러나 *MQTT 주제*(`~/dc-configs/dc-pubsub-custom-config.json`의 `publish-topic` 값으로 정의됨)가 변경된 경우 Raspberry Pi가 새 MQTT 주제에 게시할 수 있도록 `iot::Publish` 정책 설명도 수정해야 합니다.

**AWS IoT Device Client에서 MQTT 메시지를 보내려면**

1. 이 절차를 수행하는 동안 터미널 창과 **MQTT 테스트 클라이언트(MQTT test client)**가 있는 창이 모두 표시되는지 확인합니다. 또한 **MQTT 테스트 클라이언트(MQTT test client)**가 여전히 **\$1** 주제 필터를 구독하고 있는지 확인합니다. 그렇지 않은 경우 **\$1** 주제 필터를 다시 구독합니다.

1. 터미널 창에서 이 명령을 입력하여 [구성 파일 생성](iot-dc-install-configure.md#iot-dc-install-dc-configure-step1)에서 생성한 config 파일을 사용하여 AWS IoT Device Client를 실행합니다.

   ```
   cd ~/aws-iot-device-client/build
   ./aws-iot-device-client --config-file ~/dc-configs/dc-pubsub-custom-config.json
   ```

   터미널 창에서 AWS IoT Device Client는 정보 메시지와 실행 시 발생하는 오류를 표시합니다.

   터미널 창에 오류가 표시되지 않으면 MQTT 테스트 클라이언트(MQTT test client)를 검토합니다.

1. **MQTT 테스트 클라이언트**의 **구독** 창에서 `test/dc/pubtopic` 메시지 주제로 사용자 정의 메시지 페이로드가 전송되었음을 확인할 수 있습니다.

1.  AWS IoT Device Client에 오류가 표시되지 않고 **MQTT 테스트 클라이언트**의 메시지에 게시한 사용자 지정 `test/dc/pubtopic` 메시지 페이로드가 표시되면 사용자 지정 메시지를 성공적으로 게시한 것입니다.

1. 터미널 창에서 **^C** (Ctrl-C)를 입력하여 AWS IoT Device Client를 중지합니다.

 AWS IoT Device Client가 사용자 지정 메시지 페이로드를 게시했음을 입증한 후 로 계속 진행할 수 있습니다[AWS IoT Device Client를 사용하여 메시지 구독 시연](iot-dc-testconn-subscribe.md).