기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
MQTT 브리지 구성 요소(aws.greengrass.clientdevices.mqtt.Bridge
)는 클라이언트 디바이스, 로컬 Greengrass 게시/구독 및 AWS IoT Core 간에 MQTT 메시지를 릴레이합니다. 이 구성 요소를 사용하여 사용자 지정 구성 요소의 클라이언트 디바이스에서 보내는 MQTT 메시지에 대한 조치를 취하고 클라이언트 디바이스를 AWS 클라우드와 동기화할 수 있습니다.
참고
클라이언트 디바이스는 Greengrass 코어 디바이스에 연결되어 처리할 MQTT 메시지와 데이터를 보내는 로컬 IoT 디바이스입니다. 자세한 내용은 로컬 IoT 디바이스와 상호 작용 섹션을 참조하세요.
이 구성 요소를 사용하여 다음 메시지 브로커 간에 메시지를 릴레이할 수 있습니다.
-
로컬 MQTT - 로컬 MQTT 브로커는 클라이언트 디바이스와 코어 디바이스 간의 메시지를 처리합니다.
-
로컬 게시/구독 - 로컬 Greengrass 메시지 브로커는 코어 디바이스에 있는 구성 요소 간의 메시지를 처리합니다. Greengrass 구성 요소에서 이러한 메시지를 조작하는 방법에 대한 자세한 내용은 로컬 메시지 게시/구독 섹션을 참조하세요.
-
AWS IoT Core – AWS IoT Core MQTT 브로커는 IoT 디바이스와 AWS 클라우드 대상 간의 메시지를 처리합니다. Greengrass 구성 요소에서 이러한 메시지를 조작하는 방법에 대한 자세한 내용은 메시지 게시/구독 AWS IoT Core MQTT 섹션을 참조하세요.
참고
클라이언트 디바이스가 QoS 0을 사용하여 로컬 MQTT 브로커에 게시하고 구독하는 경우에도 MQTT 브리지는 QoS 1을 사용하여 AWS IoT Core에 게시하고 구독합니다. 따라서 로컬 MQTT 브로커의 클라이언트 디바이스에서 AWS IoT Core로 MQTT 메시지를 릴레이할 때 추가 지연이 발생할 수 있습니다. 코어 디바이스의 MQTT 구성에 대한 자세한 내용은 제한 MQTT 시간 및 캐시 설정 구성 섹션을 참조하세요.
버전
이 구성 요소에는 다음과 같은 버전이 있습니다.
-
2.3.x
-
2.2.x
-
2.1.x
-
2.0.x
유형
이 구성 요소는 플러그인 구성 요소(aws.greengrass.plugin
)입니다. Greengrass nucleus는 이 구성 요소를 nucleus와 동일한 Java 가상 머신(JVM)에서 실행합니다. 코어 디바이스에서 이 구성 요소의 버전을 변경하면 nucleus가 다시 시작됩니다.
이 구성 요소는 Greengrass nucleus와 동일한 로그 파일을 사용합니다. 자세한 내용은 AWS IoT Greengrass 로그 모니터링 섹션을 참조하세요.
자세한 내용은 구성 요소 유형 섹션을 참조하세요.
운영 체제
이 구성 요소는 다음 운영 체제를 실행하는 코어 디바이스에 설치할 수 있습니다.
Linux
Windows
요구 사항
이 구성 요소의 요구 사항은 다음과 같습니다.
-
기본 포트 8883 이외의 포트를 사용하도록 코어 디바이스의 MQTT 브로커 구성 요소를 구성하는 경우 MQTT 브리지 v2.1.0 이상을 사용해야 합니다. 브로커가 작동하는 포트에 연결하도록 구성합니다.
-
MQTT 브리지 구성 요소는 VPC에서 실행할 수 있습니다.
의존성
구성 요소를 배포하면 AWS IoT Greengrass에서 해당 종속성의 호환 버전도 배포합니다. 즉, 구성 요소를 성공적으로 배포하려면 구성 요소 및 모든 해당 종속성에 대한 요구 사항을 충족해야 합니다. 이 단원에는 이 구성 요소의 릴리스된 버전에 대한 종속성과 각 종속성에 대한 구성 요소 버전을 정의하는 의미 체계 버전 제약 조건이 나열되어 있습니다. AWS IoT Greengrass 콘솔
다음 표에는 이 구성 요소의 버전 2.3.2에 대한 종속성이 나열되어 있습니다.
종속성 | 호환 버전 | 종속성 유형 |
---|---|---|
클라이언트 디바이스 인증 | >=2.2.0 <2.6.0 | 하드 |
구성 요소 종속성에 대한 자세한 내용은 구성 요소 레시피 참조를 참조하세요.
구성
이 구성 요소는 구성 요소를 배포할 때 사용자 지정할 수 있는 다음 구성 파라미터를 제공합니다.
mqttTopicMapping
-
브리지할 주제 매핑입니다. 이 구성 요소는 소스 주제에 대한 메시지를 구독하고 수신하는 메시지를 대상 주제에 게시합니다. 각 주제 매핑에서는 주제, 소스 유형 및 대상 유형을 정의합니다.
이 객체에는 다음 정보가 포함되어 있어야 합니다.
topicMappingNameKey
-
이 주제 매핑의 이름입니다.
topicMappingNameKey
를 이 주제 매핑을 식별하는 데 도움이 되는 이름으로 바꿉니다.이 객체에는 다음 정보가 포함되어 있어야 합니다.
topic
-
소스 브로커와 대상 브로커를 브리지할 주제 또는 주제 필터입니다.
+
및#
MQTT 주제 와일드카드를 사용하여 주제 필터와 일치하는 모든 주제에 대한 메시지를 릴레이할 수 있습니다. 자세한 내용은 AWS IoT Core 개발자 안내서의 MQTT 주제를 참조하세요.참고
Pubsub
소스 브로커와 함께 MQTT 주제 와일드카드를 사용하려면 Greengrass nucleus 구성 요소 의 v2.6.0 이상을 사용해야 합니다. targetTopicPrefix
-
이 구성 요소가 메시지를 릴레이할 때 대상 주제에 추가할 접두사입니다.
source
-
소스 메시지 브로커입니다. 다음 옵션 중 하나를 선택합니다.
-
LocalMqtt
- 클라이언트 디바이스가 통신하는 로컬 MQTT 브로커입니다. -
Pubsub
– 로컬 Greengrass 게시/구독 메시지 브로커입니다. -
IotCore
– AWS IoT Core MQTT 메시지 브로커입니다.참고
클라이언트 디바이스가 QoS 0을 사용하여 로컬 MQTT 브로커에 게시하고 구독하는 경우에도 MQTT 브리지는 QoS 1을 사용하여 AWS IoT Core에 게시하고 구독합니다. 따라서 로컬 MQTT 브로커의 클라이언트 디바이스에서 AWS IoT Core로 MQTT 메시지를 릴레이할 때 추가 지연이 발생할 수 있습니다. 코어 디바이스의 MQTT 구성에 대한 자세한 내용은 제한 MQTT 시간 및 캐시 설정 구성 섹션을 참조하세요.
source
및target
은 서로 달라야 합니다. -
target
-
대상 메시지 브로커입니다. 다음 옵션 중 하나를 선택합니다.
-
LocalMqtt
- 클라이언트 디바이스가 통신하는 로컬 MQTT 브로커입니다. -
Pubsub
– 로컬 Greengrass 게시/구독 메시지 브로커입니다. -
IotCore
– AWS IoT Core MQTT 메시지 브로커입니다.참고
클라이언트 디바이스가 QoS 0을 사용하여 로컬 MQTT 브로커에 게시하고 구독하는 경우에도 MQTT 브리지는 QoS 1을 사용하여 AWS IoT Core에 게시하고 구독합니다. 따라서 로컬 MQTT 브로커의 클라이언트 디바이스에서 AWS IoT Core로 MQTT 메시지를 릴레이할 때 추가 지연이 발생할 수 있습니다. 코어 디바이스의 MQTT 구성에 대한 자세한 내용은 제한 MQTT 시간 및 캐시 설정 구성 섹션을 참조하세요.
source
및target
은 서로 달라야 합니다. -
- mqtt5RouteOptions
-
(선택 사항) 소스 주제에서 대상 주제로 메시지를 브리징하기 위한 주제 매핑을 구성하는 옵션을 제공합니다.
이 객체에는 다음 정보가 포함되어 있어야 합니다.
mqtt5RouteOptionsNameKey
-
주제 매핑에 대한 경로 옵션의 이름입니다.
mqtt5RouteOptionsNameKey
를mqttTopicMapping
필드에 정의된 일치하는topicMappingNameKey
로 바꿉니다.이 객체에는 다음 정보가 포함되어 있어야 합니다.
- noLocal
-
(선택 사항) 활성화하는 경우 브리지는 브리지 자체에서 게시한 주제에 대한 메시지를 전달하지 않습니다. 다음과 같은 루프를 방지하려면 이 옵션을 사용합니다.
{ "mqtt5RouteOptions": { "toIoTCore": { "noLocal": true } }, "mqttTopicMapping": { "toIoTCore": { "topic": "device", "source": "LocalMqtt", "target": "IotCore" }, "toLocal": { "topic": "device", "source": "IotCore", "target": "LocalMqtt" } } }
noLocal
는source
가LocalMqtt
인 경로에 대해서만 지원됩니다.기본값: false
- retainAsPublished
-
(선택 사항) 활성화하는 경우 브리지에서 전달하는 메시지에는 해당 경로에 대해 브로커에 게시된 메시지와 동일한
retain
플래그가 지정됩니다.retainAsPublished
는source
가LocalMqtt
인 경로에 대해서만 지원됩니다.기본값: false
- mqtt
-
(선택 사항) 로컬 브로커와 통신하기 위한 MQTT 프로토콜 설정입니다.
- version
-
(선택 사항) 브리지에서 로컬 브로커와 통신하는 데 사용되는 MQTT 프로토콜 버전입니다. nucleus 구성에서 선택한 MQTT 버전과 동일해야 합니다.
다음 중에서 선택합니다.
-
mqtt3
-
mqtt5
mqttTopicMapping
객체의source
또는target
필드가LocalMqtt
로 설정된 경우 MQTT 브로커를 배포해야 합니다.mqtt5
옵션을 선택하는 경우 MQTT 브로커 5개(EMQX)를 사용해야 합니다.기본값:
mqtt3
-
- ackTimeoutSeconds
-
(선택 사항) 작업에 실패하기 전에 PUBACK, SUBACK 또는 UNSUBACK 패킷을 기다리는 시간 간격입니다.
기본값: 60
- connAckTimeoutMs
-
(선택 사항) 연결을 종료하기 전에 CONNACK 패킷을 기다리는 시간 간격입니다.
기본값: 20000(20초)
- pingTimeoutMs
-
(선택 사항) 브리즈가 로컬 브로커에서 PINGACK 메시지를 수신하기 위해 대기하는 시간(밀리초)입니다. 대기 시간이 제한 시간을 초과하면 브리지가 닫히고 MQTT 연결을 다시 엽니다. 이 값은
keepAliveTimeoutSeconds
보다 작아야 합니다.기본값: 30000(30초)
- keepAliveTimeoutSeconds
-
(선택 사항) MQTT 연결을 유지하기 위해 브리지가 보내는 각 PING 메시지 사이의 시간(초)입니다. 이 값은
pingTimeoutMs
보다 커야 합니다.기본값: 60
- maxReconnectDelayMs
-
(선택 사항) MQTT가 다시 연결하는 데 걸리는 최대 시간(초)입니다.
기본값: 30000(30초)
- minReconnectDelayMs
-
(선택 사항) MQTT가 다시 연결하는 데 걸리는 최소 시간(초)입니다.
- receiveMaximum
-
(선택 사항) 브리지가 보낼 수 있는 확인되지 않은 최대 QoS1 패킷 수입니다.
기본값: 100
- maximumPacketSize
-
클라이언트가 MQTT 패킷에 대해 허용할 최대 바이트 수입니다.
기본값: null(제한 없음)
- sessionExpiryInterval
-
(선택 사항) 브리지와 로컬 브로커 간에 세션이 지속되도록 요청할 수 있는 시간(초)입니다.
기본값: 4294967295(세션이 만료되지 않음)
brokerUri
-
(선택 사항) 로컬 MQTT 브로커의 URI입니다. 기본 포트 8883이 아닌 다른 포트를 사용하도록 MQTT 브로커를 구성하는 경우 이 파라미터를 지정해야 합니다.
ssl://localhost:
형식을 사용하고port
port
를 MQTT 브로커가 작동하는 포트로 바꿉니다.기본값:
ssl://localhost:8883
- startupTimeoutSeconds
-
(선택 사항) 구성 요소가 시작되는 최대 시간(초)입니다. 이 제한 시간이 초과되면 구성 요소의 상태가
BROKEN
으로 변경됩니다.기본값:
120
예: 구성 병합 업데이트
아래에 나와 있는 구성 업데이트 예에서는 다음을 지정합니다.
-
clients/+/hello/world
주제 필터와 일치하는 주제에 대한 메시지를 클라이언트 디바이스에서 AWS IoT Core로 릴레이합니다. -
clients/+/detections
주제 필터와 일치하는 주제에 대한 메시지를 클라이언트 디바이스에서 로컬 게시/구독으로 릴레이하고 대상 주제에events/input/
접두사를 추가합니다. 결과 대상 주제는events/input/clients/+/detections
주제 필터와 일치합니다. -
clients/+/status
주제 필터와 일치하는 주제에 대한 메시지를 클라이언트 디바이스에서 AWS IoT Core로 릴레이하고 대상 주제에$aws/rules/StatusUpdateRule/
접두사를 추가합니다. 이 예제에서는 이러한 메시지를StatusUpdateRule
이라는 AWS IoT 규칙으로 직접 릴레이하여 기본 수집을 사용하는 비용을 절감합니다.
{
"mqttTopicMapping": {
"ClientDeviceHelloWorld": {
"topic": "clients/+/hello/world",
"source": "LocalMqtt",
"target": "IotCore"
},
"ClientDeviceEvents": {
"topic": "clients/+/detections",
"targetTopicPrefix": "events/input/",
"source": "LocalMqtt",
"target": "Pubsub"
},
"ClientDeviceCloudStatusUpdate": {
"topic": "clients/+/status",
"targetTopicPrefix": "$aws/rules/StatusUpdateRule/",
"source": "LocalMqtt",
"target": "IotCore"
}
}
}
예: MQTT 5 구성
다음 예제 구성에서는 다음을 업데이트합니다.
-
브리지가 로컬 브로커와 함께 MQTT 5 프로토콜을 사용할 수 있도록 합니다.
-
ClientDeviceHelloWorld
주제 매핑에 대한 게시된 설정으로 MQTT 유지를 구성합니다.
{ "mqttTopicMapping": { "ClientDeviceHelloWorld": { "topic": "clients/+/hello/world", "source": "LocalMqtt", "target": "IotCore" } }, "mqtt5RouteOptions": { "ClientDeviceHelloWorld": { "retainAsPublished": true } }, "mqtt": { "version": "mqtt5" } }
로컬 로그 파일
이 구성 요소는 Greengrass nucleus 구성요소와 동일한 로그 파일을 사용합니다.
/logs/greengrass.log
/greengrass/v2
이 구성 요소의 로그를 보려면
-
코어 디바이스에서 다음 명령을 실행하여 실시간으로 이 구성 요소의 로그 파일을 봅니다.
또는/greengrass/v2
C:\greengrass\v2
를 AWS IoT Greengrass 루트 폴더의 경로로 바꿉니다.sudo tail -f
/logs/greengrass.log/greengrass/v2
Changelog
다음 표에는 각 구성 요소 버전의 변경 사항이 설명되어 있습니다.
버전 |
변경 |
---|---|
2.3.2 |
클라이언트 디바이스 인증 버전 2.5.0 릴리스에 대한 버전이 업데이트되었습니다. |
2.3.1 |
|
2.3.0 |
|
2.2.6 |
|
2.2.5 |
클라이언트 디바이스 인증 버전 2.4.0 릴리스에 대한 버전이 업데이트되었습니다. |
2.2.4 |
Greengrass 클라이언트 디바이스 인증 버전 2.3.0 릴리스에 대한 버전이 업데이트되었습니다. |
2.2.3 |
이 버전에는 버그 수정과 개선 사항이 포함되어 있습니다. |
2.2.2 |
|
2.2.1 |
|
2.2.0 |
|
2.1.1 |
|
2.1.0 |
|
2.0.1 |
이 버전에는 버그 수정 및 개선 사항이 포함됩니다. |
2.0.0 |
초기 버전 |