

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

# 구성 요소의 클라이언트 디바이스와 상호 작용
<a name="interact-with-client-devices-in-components"></a>

코어 디바이스에 연결된 클라이언트 디바이스와 상호 작용하는 사용자 지정 Greengrass 구성 요소를 개발할 수 있습니다. 예를 들어 다음을 수행하는 구성 요소를 개발할 수 있습니다.
+ 클라이언트 디바이스의 MQTT 메시지에 대한 작업을 수행하고 AWS 클라우드 대상에 데이터를 전송합니다.
+ 클라이언트 디바이스에 MQTT 메시지를 전송하여 작업을 시작합니다.

클라이언트 디바이스는 코어 디바이스에서 실행되는 MQTT 브로커 구성 요소를 통해 코어 디바이스와 연결하고 통신합니다. 기본적으로 클라이언트 디바이스는 MQTT를 통해서만 서로 통신할 수 있으며, Greengrass 구성 요소는 이러한 MQTT 메시지를 수신하거나 클라이언트 디바이스에 메시지를 보낼 수 없습니다.

Greengrass 구성 요소는 [로컬 게시/구독 인터페이스](ipc-publish-subscribe.md)를 사용하여 코어 디바이스에서 통신합니다. Greengrass 구성 요소의 클라이언트 디바이스와 통신하려면 다음을 수행하도록 [MQTT 브리지 구성 요소](mqtt-bridge-component.md)를 구성합니다.
+ MQTT 메시지를 클라이언트 디바이스에서 로컬 게시/구독으로 릴레이합니다.
+ MQTT 메시지를 로컬 게시/구독에서 클라이언트 디바이스로 릴레이합니다.

또한 Greengrass 구성 요소의 클라이언트 디바이스 섀도와 상호 작용할 수 있습니다. 자세한 내용은 [클라이언트 디바이스 섀도와 상호 작용 및 동기화](work-with-client-device-shadows.md) 단원을 참조하십시오.

**Topics**
+ [MQTT 브리지 구성 요소 구성 및 배포](#deploy-mqtt-bridge-pubsub)
+ [클라이언트 디바이스에서 MQTT 메시지 수신](#receive-client-device-messages)
+ [클라이언트 디바이스로 MQTT 메시지 전송](#send-client-device-messages)

## MQTT 브리지 구성 요소 구성 및 배포
<a name="deploy-mqtt-bridge-pubsub"></a>

MQTT 브리지 구성 요소는 각각 메시지 소스와 메시지 대상을 지정하는 주제 매핑의 목록을 사용합니다. 클라이언트 디바이스와 통신하려면 MQTT 브리지 구성 요소를 배포하고 구성 요소 구성에서 각 소스 및 대상 주제를 지정합니다.

<a name="create-mqtt-bridge-deployment-info"></a>코어 디바이스 또는 코어 디바이스 그룹에 MQTT 브리지 구성 요소를 배포하려면 `aws.greengrass.clientdevices.mqtt.Bridge` 구성 요소가 포함된 [배포를 생성](create-deployments.md)합니다. 배포의 MQTT 브리지 구성 요소 구성에서 주제 매핑(`mqttTopicMapping`)을 지정합니다.

다음 예제에서는 클라이언트 디바이스에서 로컬 게시/구독 브로커로 `clients/MyClientDevice1/hello/world` 주제를 릴레이하도록 MQTT 브리지 구성 요소를 구성하는 배포를 정의합니다. `merge` 구성 업데이트에는 직렬화된 JSON 객체가 필요합니다. 자세한 내용은 [구성 요소 구성 업데이트](update-component-configurations.md) 단원을 참조하십시오.

------
#### [ Console ]

```
{
  "mqttTopicMapping": {
    "HelloWorldPubsub": {
      "topic": "clients/MyClientDevice1/hello/world",
      "source": "LocalMqtt",
      "target": "Pubsub"
    }
  }
}
```

------
#### [ AWS CLI ]

```
{
  "components": {
    "aws.greengrass.clientdevices.mqtt.Bridge": {
      "version": "2.0.0",
      "configurationUpdate": {
        "merge": "\"mqttTopicMapping\":{\"HelloWorldPubsub\":{\"topic\":\"clients/MyClientDevice1/hello/world\",\"source\":\"LocalMqtt\",\"target\":\"Pubsub\"}}}"
      }
    }
    {{...}}
  }
}
```

------

MQTT 주제 와일드카드를 사용하여 주제 필터와 일치하는 주제에 대한 메시지를 릴레이할 수 있습니다. MQTT 브리지 v2.2.0 이상을 사용하면 소스 브로커가 로컬 게시/구독인 경우 주제 필터에서 MQTT 주제 와일드카드를 사용할 수 있습니다. 자세한 내용은 [MQTT 브리지 구성 요소 구성](mqtt-bridge-component.md#mqtt-bridge-component-configuration)을 참조하세요.

## 클라이언트 디바이스에서 MQTT 메시지 수신
<a name="receive-client-device-messages"></a>

MQTT 브리지 구성 요소가 클라이언트 디바이스의 메시지를 수신하도록 구성하는 로컬 게시/구독 주제를 구독할 수 있습니다.

**사용자 지정 구성 요소의 클라이언트 디바이스에서 MQTT 메시지를 수신하려면**

1. 클라이언트 디바이스가 게시하는 MQTT 주제의 메시지를 로컬 게시/구독 주제로 릴레이하도록 [MQTT 브리지 구성 요소를 구성하고 배포](#deploy-mqtt-bridge-pubsub)합니다.

1. 로컬 게시/구독 IPC 인터페이스를 사용하여 MQTT 브리지가 메시지를 릴레이하는 주제를 구독합니다. 자세한 내용은 [로컬 메시지 게시/구독](ipc-publish-subscribe.md) 및 [SubscribeToTopic](ipc-publish-subscribe.md#ipc-operation-subscribetotopic) 섹션을 참조하세요.

[클라이언트 디바이스 연결 및 테스트 자습서](client-devices-tutorial.md)에는 클라이언트 디바이스의 메시지를 구독하는 구성 요소를 개발하는 섹션이 포함되어 있습니다. 자세한 내용은 [4단계: 클라이언트 디바이스와 통신하는 구성 요소를 개발합니다.](client-devices-tutorial.md#develop-client-device-subscriber-component) 단원을 참조하십시오.

## 클라이언트 디바이스로 MQTT 메시지 전송
<a name="send-client-device-messages"></a>

MQTT 브리지 구성 요소가 클라이언트 디바이스로 메시지를 보내도록 구성하는 로컬 게시/구독 주제에 게시할 수 있습니다.

**사용자 지정 구성 요소의 클라이언트 디바이스에 MQTT 메시지를 게시하려면**

1. 로컬 게시/구독 주제의 메시지를 클라이언트 디바이스가 구독하는 MQTT 주제로 릴레이하도록 [MQTT 브리지 구성 요소를 구성하고 배포](#deploy-mqtt-bridge-pubsub)합니다.

1. 로컬 게시/구독 IPC 인터페이스를 사용하여 MQTT 브리지가 메시지를 릴레이하는 주제에 게시합니다. 자세한 내용은 [로컬 메시지 게시/구독](ipc-publish-subscribe.md) 및 [PublishToTopic](ipc-publish-subscribe.md#ipc-operation-publishtotopic)을(를) 참조하세요.