

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

# MQTT 5 브로커(EMQX)
<a name="mqtt-broker-emqx-component"></a>

EMQX MQTT 브로커 구성 요소(`aws.greengrass.clientdevices.mqtt.EMQX`)는 클라이언트 디바이스와 Greengrass 코어 디바이스 간의 MQTT 메시지를 처리합니다. 이 구성 요소는 [EMQX MQTT 5.0 브로커](https://www.emqx.com/en/mqtt/mqtt5)의 수정된 버전을 제공합니다. 클라이언트 디바이스와 코어 디바이스 간의 통신에서 MQTT 5 기능을 사용하려면 이 MQTT 브로커를 배포하세요. MQTT 브로커를 선택하는 방법에 대한 자세한 내용은 [MQTT 브로커 선택](choose-local-mqtt-broker.md) 섹션을 참조하세요.

이 브로커는 MQTT 5.0 프로토콜을 구현합니다. 이 프로토콜에는 세션 및 메시지 만료 간격, 사용자 속성, 공유 구독, 주제 별칭 등에 대한 지원이 포함되어 있습니다. MQTT 5는 하위 버전 MQTT 3.1.1과 호환되므로 [Moquette MQTT 3.1.1 브로커](mqtt-broker-moquette-component.md)를 실행하는 경우 EMQX MQTT 5 브로커를 바꿀 수 있고 바꾸더라도 클라이언트 디바이스는 평소대로 계속 연결되고 작동할 수 있습니다.

<a name="note-local-mqtt-broker-mqtt-5-features"></a>

**참고**  <a name="client-device-component-context"></a>
클라이언트 디바이스는 Greengrass 코어 디바이스에 연결되어 처리할 MQTT 메시지와 데이터를 보내는 로컬 IoT 디바이스입니다. 자세한 내용은 [로컬 IoT 디바이스와 상호 작용](interact-with-local-iot-devices.md) 단원을 참조하십시오.

**Topics**
+ [버전](#mqtt-broker-emqx-component-versions)
+ [유형](#mqtt-broker-emqx-component-type)
+ [운영 체제](#mqtt-broker-emqx-component-os-support)
+ [요구 사항](#mqtt-broker-emqx-component-requirements)
+ [종속성](#mqtt-broker-emqx-component-dependencies)
+ [구성](#mqtt-broker-emqx-component-configuration)
+ [로컬 로그 파일](#mqtt-broker-emqx-component-log-file)
+ [라이선스](#mqtt-broker-emqx-component-licenses)
+ [Changelog](#mqtt-broker-emqx-component-changelog)

## 버전
<a name="mqtt-broker-emqx-component-versions"></a>

이 구성 요소에는 다음과 같은 버전이 있습니다.
+ 2.0.x
+ 1.2.x
+ 1.1.x
+ 1.0.x

## 유형
<a name="mqtt-broker-emqx-component-type"></a>

<a name="public-component-type-generic"></a>이 <a name="public-component-type-generic-phrase"></a>구성 요소는 일반 구성 요소(`aws.greengrass.generic`)입니다. [Greengrass nucleus](greengrass-nucleus-component.md)는 구성 요소의 수명 주기 스크립트를 실행합니다.

<a name="public-component-type-more-information"></a>자세한 내용은 [구성 요소 유형](develop-greengrass-components.md#component-types) 단원을 참조하십시오.

## 운영 체제
<a name="mqtt-broker-emqx-component-os-support"></a>

이 구성 요소는 다음 운영 체제를 실행하는 코어 디바이스에 설치할 수 있습니다.
+ Linux
+ Windows

## 요구 사항
<a name="mqtt-broker-emqx-component-requirements"></a>

이 구성 요소의 요구 사항은 다음과 같습니다.
+ 코어 디바이스는 MQTT 브로커가 작동하는 포트에서 연결을 허용할 수 있어야 합니다. 이 구성 요소는 기본적으로 포트 8883에서 MQTT 브로커를 실행합니다. 이 구성 요소를 구성할 때 다른 포트를 지정할 수 있습니다.

  <a name="mqtt-broker-configuration-mqtt-bridge-requirement"></a>다른 포트를 지정하고 [MQTT 브리지 구성 요소](mqtt-bridge-component.md)를 사용하여 MQTT 메시지를 다른 브로커에 릴레이하는 경우 MQTT 브리지 v2.1.0 이상을 사용해야 합니다. 이 구성 요소에서 MQTT 브로커가 작동하는 포트를 사용하도록 구성합니다.

  <a name="mqtt-broker-configuration-ip-detector-requirement"></a>다른 포트를 지정하고 [IP 감지기 구성 요소](ip-detector-component.md)를 사용하여 MQTT 브로커 엔드포인트를 관리하는 경우 IP 감지기 v2.1.0 이상을 사용해야 합니다. 이 구성 요소에서 MQTT 브로커가 작동하는 포트를 보고하도록 구성합니다.
+ Linux 코어 디바이스에서는 다음과 같이 Docker가 코어 디바이스에 설치 및 구성되어 있습니다.
  + <a name="docker-engine-requirement"></a>Greengrass 코어 디바이스에 [Docker Engine](https://docs.docker.com/engine/) 1.9.1 이상이 설치되어 있어야 합니다. 버전 20.10은 AWS IoT Greengrass 코어 소프트웨어에서 작동하는 것으로 확인된 최신 버전입니다. Docker 컨테이너를 실행하는 구성 요소를 배포하기 전에 코어 디바이스에 직접 Docker를 설치해야 합니다.
  + <a name="docker-daemon-requirement"></a>Docker 데몬이 이 구성 요소를 배포하기 전에 코어 디바이스에서 시작되어 실행 중입니다.
  + 이 구성 요소를 실행하는 시스템 사용자에게 루트 또는 관리자 권한이 있어야 합니다. 또는 `docker` 그룹의 시스템 사용자로 이 구성 요소를 실행하고 권한 없이 EQMX MQTT 브로커를 실행하도록 이 구성 요소의 `requiresPrivileges` 옵션을 `false`로 구성할 수 있습니다.
+ EMQX MQTT 브로커 구성 요소는 VPC에서 실행할 수 있습니다.
+ EMQX MQTT 브로커 구성 요소는 `armv7` 플랫폼에서 지원되지 않습니다.

## 종속성
<a name="mqtt-broker-emqx-component-dependencies"></a>

구성 요소를 배포할 때는 호환되는 버전의 종속성 AWS IoT Greengrass 도 배포합니다. 즉, 구성 요소를 성공적으로 배포하려면 구성 요소 및 모든 해당 종속성에 대한 요구 사항을 충족해야 합니다. 이 섹션에는 이 구성 요소의 [릴리스된 버전](#mqtt-broker-emqx-component-changelog)에 대한 종속성과 각 종속성에 대한 구성 요소 버전을 정의하는 의미 체계 버전 제약 조건이 나열되어 있습니다. [AWS IoT Greengrass 콘솔](https://console.aws.amazon.com//greengrass)에서도 각 구성 요소 버전에 대한 종속성을 볼 수 있습니다. 구성 요소 세부 정보 페이지에서 **종속성** 목록을 찾습니다.

------
#### [ 2.0.2 – 2.0.3 ]

다음 표에는 이 구성 요소의 버전 2.0.2 및 2.0.3에 대한 종속성이 나열되어 있습니다.


| 종속성 | 호환 버전 | 종속성 유형 | 
| --- | --- | --- | 
| [클라이언트 디바이스 인증](client-device-auth-component.md) | >=2.2.0 <2.6.0 | 소프트 | 

------
#### [ 2.0.1 ]

다음 표에는 이 구성 요소의 버전 2.0.1에 대한 종속성이 나열되어 있습니다.


| 종속성 | 호환 버전 | 종속성 유형 | 
| --- | --- | --- | 
| [클라이언트 디바이스 인증](client-device-auth-component.md) | >=2.2.0 <2.6.0 | 하드 | 

------
#### [ 2.0.0 ]

다음 표에는 이 구성 요소의 버전 2.0.0에 대한 종속성이 나열되어 있습니다.


| 종속성 | 호환 버전 | 종속성 유형 | 
| --- | --- | --- | 
| [클라이언트 디바이스 인증](client-device-auth-component.md) | >=2.2.0 <2.5.0 | 하드 | 

------
#### [ 1.2.2 – 1.2.3 ]

다음 표에는 이 구성 요소의 버전 1.2.2\$11.2.3에 대한 종속성이 나열되어 있습니다.


| 종속성 | 호환 버전 | 종속성 유형 | 
| --- | --- | --- | 
| [클라이언트 디바이스 인증](client-device-auth-component.md) | >=2.2.0 <2.5.0 | 하드 | 

------
#### [ 1.2.0 and 1.2.1 ]

다음 표에는 이 구성 요소의 버전 1.2.0 및 1.2.1에 대한 종속성이 나열되어 있습니다.


| 종속성 | 호환 버전 | 종속성 유형 | 
| --- | --- | --- | 
| [클라이언트 디바이스 인증](client-device-auth-component.md) | >=2.2.0 <2.4.0 | 하드 | 

------
#### [ 1.0.0 and 1.1.0 ]

다음 표에는 이 구성 요소의 버전 1.0.0 및 1.1.0에 대한 종속성이 나열되어 있습니다.


| 종속성 | 호환 버전 | 종속성 유형 | 
| --- | --- | --- | 
| [클라이언트 디바이스 인증](client-device-auth-component.md) | >=2.2.0 <2.3.0 | 하드 | 

------

구성 요소 종속성에 대한 자세한 내용은 [구성 요소 레시피 참조](component-recipe-reference.md#recipe-reference-component-dependencies)를 참조하세요.

## 구성
<a name="mqtt-broker-emqx-component-configuration"></a>

------
#### [ 2.0.0 - 2.0.3 ]

이 구성 요소는 구성 요소를 배포할 때 사용자 지정할 수 있는 다음 구성 파라미터를 제공합니다.

**중요**  
MQTT 5 브로커(EMQX) 구성 요소의 버전 2를 사용하는 경우 구성 파일을 업데이트해야 합니다. 버전 1 구성 파일은 버전 2에서 작동하지 않습니다.

emqxConfig  
 (선택 사항) 사용할 [EMQX MQTT 브로커](https://www.emqx.io/docs/en/v5.1/configuration/configuration.html) 구성입니다. 이 구성 요소에서 EMQX 구성 옵션을 설정할 수 있습니다.  
EMQX 브로커를 사용하는 경우 Greengrass에서는 기본 구성을 사용합니다. 이 필드를 사용하여 수정하지 않는 한 이 구성이 사용됩니다.  
다음 구성 설정을 수정하면 EMQX 브로커 구성 요소가 다시 시작됩니다. 다른 구성 변경 사항은 구성 요소를 다시 시작하지 않고 적용됩니다.  
+ `emqxConfig/cluster`
+ `emqxConfig/node`
+ `emqxConfig/rpc`
`aws.greengrass.clientdevices.mqtt.EMQX`를 사용하면 보안상 중요한 옵션을 구성할 수 있습니다. 여기에는 TLS 설정, 인증 및 권한 부여 공급자가 포함됩니다. 상호 TLS 인증과 Greengrass 클라이언트 디바이스 인증 공급자를 사용하는 기본 구성을 사용하는 것이 좋습니다.

**Example 예: 기본 구성**  
다음 예제에서는 MQTT 5(EMQX) 브로커의 기본 설정을 보여줍니다. `emqxConfig` 구성 설정을 사용하여 이러한 설정을 재정의할 수 있습니다.  

```
{
  "authorization": {
    "no_match": "deny",
    "sources": []
  },
  "node": {
    "cookie": "<placeholder>"
  }, 
  "listeners": {
     "ssl": {
       "default": {
         "ssl_options": {
           "keyfile": "{work:path}\\data\\key.pem",
           "certfile": "{work:path}\\data\\cert.pem",
           "cacertfile": null,
           "verify": "verify_peer",
           "versions": ["tlsv1.3", "tlsv1.2"],
           "fail_if_no_peer_cert": true
         }
       }
     },
     "tcp": {
       "default": {
         "enabled": false
       }
     },
     "ws": {
       "default": {
         "enabled": false
       }
     },
     "wss": {
       "default": {
         "enabled": false
       }
     }
  },
  "plugins": {
    "states": [{"name_vsn": "gg-1.0.0", "enable": true}],
    "install_dir": "plugins"
  }
}
```

authMode  
(선택 사항) 브로커의 권한 부여 공급자를 설정합니다. 다음 값 중 하나일 수 있습니다.  
+ `enabled` – (기본값) Greengrass 인증 및 권한 부여 공급자를 사용합니다.
+ `bypass_on_failure` – Greengrass 인증 공급자를 사용한 다음 Greengrass에서 인증 또는 권한 부여를 거부하는 경우 EMQX 공급자 체인의 나머지 인증 공급자를 사용합니다.
+ `bypass` – Greengrass 공급자가 비활성화되었습니다. 인증 및 권한 부여가 EMQX 공급자 체인에 의해 처리됩니다.

`requiresPrivilege`  
(선택 사항) Linux 코어 장치에서 루트 또는 관리자 권한 없이 EMQX MQTT 브로커를 실행하도록 지정할 수 있습니다. 이 옵션을 `false`로 설정하면 이 구성 요소를 실행하는 시스템 사용자가 `docker` 그룹의 구성원이어야 합니다.  
기본값: `true`

`startupTimeoutSeconds`  
(선택 사항) EMQX MQTT 브로커가 시작되는 최대 시간(초)입니다. 이 제한 시간이 초과되면 구성 요소의 상태가 `BROKEN`으로 변경됩니다.  
기본값: `90`

`ipcTimeoutSeconds`  
(선택 사항) 구성 요소에서 Greengrass nucleus가 프로세스 간 통신(IPC) 요청에 응답할 때까지 기다리는 최대 시간(초)입니다. 이 구성 요소가 클라이언트 디바이스에 권한이 있는지 확인할 때 제한 시간 오류를 보고하는 경우 이 수를 늘립니다.  
기본값: `5`

`crtLogLevel`  
(선택 사항) AWS 공통 런타임(CRT) 라이브러리의 로그 수준입니다.  
기본값은 EMQX MQTT 브로커 로그 수준(`emqx`의 `log.level`)입니다.

`restartIdentifier`  
(선택 사항) EMQX MQTT 브로커를 다시 시작하려면 이 옵션을 구성합니다. 이 구성 값이 변경되면 이 구성 요소는 MQTT 브로커를 다시 시작합니다. 이 옵션을 사용하여 클라이언트 디바이스의 연결을 강제로 해제할 수 있습니다.

`dockerOptions`  
(선택 사항) Linux 운영 체제에서만 Docker 명령줄에 파라미터를 추가하려면 이 옵션을 구성합니다. 예를 들어 추가 포트를 매핑하려면 `-p` Docker 파라미터를 사용합니다.  

```
"-p 1883:1883"
```

**Example 예: v1.x 구성 파일을 v2.x로 업데이트**  
다음 예제에서는 v1.x 구성 파일을 버전 2.x로 업데이트하는 데 필요한 변경 사항을 보여줍니다.  
버전 1.x 구성 파일:  

```
{
    "emqx": {
        "listener.ssl.external": "443",
        "listener.ssl.external.max_connections": "1024000",
        "listener.ssl.external.max_conn_rate": "500",
        "listener.ssl.external.rate_limit": "50KB,5s",
        "listener.ssl.external.handshake_timeout": "15s",
        "log.level": "warning"
    },
    "mergeConfigurationFiles": {
        "etc/plugins/aws_greengrass_emqx_auth.conf": "auth_mode=enabled\n use_greengrass_managed_certificates=true\n"
    }
}
```
이와 동일한 v2의 구성 파일:  

```
{
    "emqxConfig": {
        "listeners": {
            "ssl": {
                "default": {
                   "bind": "8883",
                   "max_connections": "1024000",
                   "max_conn_rate": "500",
                   "ssl_options": {
                        "handshake_timeout": "15s"
                   }
                }
            }
        },
        "log": {
            "console": {
              "enable": true,
              "level": "warning"
            }
        }
    },
    "authMode": "enabled"
}
```
`listener.ssl.external.rate_limit` 구성 항목과 동일한 항목은 없습니다. `use_greengrass_managed_certificates` 구성 옵션은 제거되었습니다.

**Example 예: 브로커의 새 포트 설정**  
다음 예제에서는 MQTT 브로커가 작동하는 포트를 기본값인 8883에서 포트 1234로 변경합니다. Linux를 사용하는 경우 `dockerOptions` 필드를 포함합니다.  

```
{
  "emqxConfig": {
    "listeners": {
      "ssl": {
        "default": {
          "bind": 1234
        }
      }
    }
  },
  "dockerOptions": "-p 1234:1234"
}
```

**Example 예: MQTT 브로커의 로그 수준 조정**  
다음 예제에서는 MQTT 브로커의 로그 수준을 `debug`로 변경합니다. 다음 로그 수준 중에서 선택할 수 있습니다.  
+ `debug`
+ `info`
+ `notice`
+ `warning`
+ `error`
+ `critical`
+ `alert`
+ `emergency`
기본 로그 수준은 `warning`입니다.  

```
{
  "emqxConfig": {
    "log": {
      "console": {
         "level": "debug"
      }
    }
  }
}
```

**Example 예: EMQX 대시보드 활성화**  
다음 예제에서는 브로커를 모니터링하고 관리할 수 있도록 EMQX 대시보드를 활성화합니다. Linux를 사용하는 경우 `dockerOptions` 필드를 포함합니다.  

```
{
  "emqxConfig": {
    "dashboard": {
      "listeners": {
        "http": {
          "bind": 18083
        }
      }
    }
  },
  "dockerOptions": "-p 18083:18083"
}
```

------
#### [ 1.0.0 - 1.2.2 ]

이 구성 요소는 구성 요소를 배포할 때 사용자 지정할 수 있는 다음 구성 파라미터를 제공합니다.

`emqx`  
(선택 사항) 사용할 [EMQX MQTT 브로커](https://www.emqx.io/docs/en/v4.4/configuration/configuration.html) 구성입니다. 이 구성 요소에서 EMQX 구성 옵션의 하위 집합을 구성할 수 있습니다.  
이 객체에는 다음 정보가 포함되어 있어야 합니다.    
`listener.ssl.external`  
(선택 사항) MQTT 브로커가 작동하는 포트입니다.  
<a name="mqtt-broker-configuration-mqtt-bridge-requirement"></a>다른 포트를 지정하고 [MQTT 브리지 구성 요소](mqtt-bridge-component.md)를 사용하여 MQTT 메시지를 다른 브로커에 릴레이하는 경우 MQTT 브리지 v2.1.0 이상을 사용해야 합니다. 이 구성 요소에서 MQTT 브로커가 작동하는 포트를 사용하도록 구성합니다.  
<a name="mqtt-broker-configuration-ip-detector-requirement"></a>다른 포트를 지정하고 [IP 감지기 구성 요소](ip-detector-component.md)를 사용하여 MQTT 브로커 엔드포인트를 관리하는 경우 IP 감지기 v2.1.0 이상을 사용해야 합니다. 이 구성 요소에서 MQTT 브로커가 작동하는 포트를 보고하도록 구성합니다.
기본값: `8883`  
`listener.ssl.external.max_connections`  
(선택 사항) MQTT 브로커가 지원하는 최대 동시 연결 수입니다.  
기본값: `1024000`  
`listener.ssl.external.max_conn_rate`  
(선택 사항) MQTT 브로커가 수신할 수 있는 초당 최대 새 연결 수입니다.  
기본값: `500`  
`listener.ssl.external.rate_limit`  
(선택 사항) MQTT 브로커에 대한 모든 연결의 대역폭 제한입니다. `bandwidth,duration`의 형식으로 대역폭과 해당 대역폭의 기간을 쉼표(`,`)로 구분하여 지정합니다. 예를 들어 5초마다 50KB(킬로바이트)의 데이터로 MQTT 브로커를 제한하려면 `50KB,5s`를 지정할 수 있습니다.  
`listener.ssl.external.handshake_timeout`  
(선택 사항) MQTT 브로커가 새 연결 인증이 완료될 때까지 대기하는 시간입니다.  
기본값: `15s`  
`mqtt.max_packet_size`  
(선택 사항) MQTT 메시지의 최대 크기입니다.  
기본값: `268435455`(256MB - 1)  
`log.level`  
(선택 사항) MQTT 브로커의 로그 수준입니다. 다음 옵션 중 하나를 선택합니다.  
+ `debug`
+ `info`
+ `notice`
+ `warning`
+ `error`
+ `critical`
+ `alert`
+ `emergency`
기본 로그 수준은 `warning`입니다.

`requiresPrivilege`  
(선택 사항) Linux 코어 장치에서 루트 또는 관리자 권한 없이 EMQX MQTT 브로커를 실행하도록 지정할 수 있습니다. 이 옵션을 `false`로 설정하면 이 구성 요소를 실행하는 시스템 사용자가 `docker` 그룹의 구성원이어야 합니다.  
기본값: `true`

`startupTimeoutSeconds`  
(선택 사항) EMQX MQTT 브로커가 시작되는 최대 시간(초)입니다. 이 제한 시간이 초과되면 구성 요소의 상태가 `BROKEN`으로 변경됩니다.  
기본값: `90`

`ipcTimeoutSeconds`  
(선택 사항) 구성 요소에서 Greengrass nucleus가 프로세스 간 통신(IPC) 요청에 응답할 때까지 기다리는 최대 시간(초)입니다. 이 구성 요소가 클라이언트 디바이스에 권한이 있는지 확인할 때 제한 시간 오류를 보고하는 경우 이 수를 늘립니다.  
기본값: `5`

`crtLogLevel`  
(선택 사항) AWS 공통 런타임(CRT) 라이브러리의 로그 수준입니다.  
기본값은 EMQX MQTT 브로커 로그 수준(`emqx`의 `log.level`)입니다.

`restartIdentifier`  
(선택 사항) EMQX MQTT 브로커를 다시 시작하려면 이 옵션을 구성합니다. 이 구성 값이 변경되면 이 구성 요소는 MQTT 브로커를 다시 시작합니다. 이 옵션을 사용하여 클라이언트 디바이스의 연결을 강제로 해제할 수 있습니다.

`dockerOptions`  
(선택 사항) Linux 운영 체제에서만 Docker 명령줄에 파라미터를 추가하려면 이 옵션을 구성합니다. 예를 들어 추가 포트를 매핑하려면 `-p` Docker 파라미터를 사용합니다.  

```
"-p 1883:1883"
```

`mergeConfigurationFiles`  
(선택 사항) 지정된 EMQX 구성 파일의 기본값에 추가하거나 기본값을 재정의하려면 이 옵션을 구성합니다. 구성 파일 및 해당 형식에 대한 자세한 내용은 *EMQX 4.0 Documentation*의 [Configuration](https://www.emqx.io/docs/en/v4.4/configuration/configuration.html)을 참조하세요. 지정하는 값이 구성 파일에 추가됩니다.  
다음 예제에서는 `etc/emqx.conf` 파일을 업데이트합니다.  

```
"mergeConfigurationFiles": {
    "etc/emqx.conf": "broker.sys_interval=30s\nbroker.sys_heartbeat=10s"
},
```
EMQX에서 지원하는 구성 파일 외에도 Greengrass에서는 EMQX에 대한 Greengrass 인증 플러그인을 구성하는 `etc/plugins/aws_greengrass_emqx_auth.conf`라는 파일도 지원합니다. 지원되는 두 가지 옵션은 `auth_mode` 및 `use_greengrass_managed_certificates`입니다. 다른 인증 공급자를 사용하려면 `auth_mode` 옵션을 다음 중 하나로 설정합니다.  
+ `enabled` – (기본값) Greengrass 인증 및 권한 부여 공급자를 사용합니다.
+ `bypass_on_failure` – Greengrass 인증 공급자를 사용한 다음 Greengrass에서 인증 또는 권한 부여를 거부하는 경우 EMQX 공급자 체인의 나머지 인증 공급자를 사용합니다.
+ `bypass` – Greengrass 공급자가 비활성화되었습니다. 그러면 인증 및 권한 부여는 EMQX 공급자 체인에 의해 처리됩니다.
`use_greengrass_managed_certificates`가 `true`이면 Greengrass가 브로커 TLS 인증서를 관리합니다. `false`인 경우에는 다른 소스를 통해 인증서를 제공합니다.  
다음 예제에서는 `etc/plugins/aws_greengrass_emqx_auth.conf` 구성 파일의 기본값을 업데이트합니다.  

```
"mergeConfigurationFiles": {
    "etc/plugins/aws_greengrass_emqx_auth.conf": "auth_mode=enabled\n use_greengrass_managed_certificates=true\n"
  },
```
`aws.greengrass.clientdevices.mqtt.EMQX`를 사용하면 보안상 중요한 옵션을 구성할 수 있습니다. 여기에는 TLS 설정, 인증 및 권한 부여 공급자가 포함됩니다. 상호 TLS 인증과 Greengrass 클라이언트 디바이스 인증 공급자를 사용하는 기본 구성이 권장 구성입니다.

`replaceConfigurationFiles`  
(선택 사항) 지정된 EMQX 구성 파일을 바꾸려면 이 옵션을 구성합니다. 지정하는 값으로 기존 구성 파일 전체가 대체됩니다. 이 섹션에서는 `etc/emqx.conf` 파일을 지정할 수 없습니다. `etc/emqx.conf`를 수정하려면 `mergeConfigurationFile`을 사용해야 합니다.

**Example 예: 구성 병합 업데이트**  
다음 예제 구성에서는 포트 443에서 MQTT 브로커를 작동하도록 지정합니다.  

```
{
  "emqx": {
    "listener.ssl.external": "443",
    "listener.ssl.external.max_connections": "1024000",
    "listener.ssl.external.max_conn_rate": "500",
    "listener.ssl.external.rate_limit": "50KB,5s",
    "listener.ssl.external.handshake_timeout": "15s",
    "log.level": "warning"
  },
  "requiresPrivilege": "true",
  "startupTimeoutSeconds": "90",
  "ipcTimeoutSeconds": "5"
}
```

------

## 로컬 로그 파일
<a name="mqtt-broker-emqx-component-log-file"></a>

이 구성 요소는 다음 로그 파일을 사용합니다.

------
#### [ Linux ]

```
/greengrass/v2/logs/aws.greengrass.clientdevices.mqtt.EMQX.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\logs\aws.greengrass.clientdevices.mqtt.EMQX.log
```

------

**이 구성 요소의 로그를 보려면**
+ 코어 디바이스에서 다음 명령을 실행하여 실시간으로 이 구성 요소의 로그 파일을 봅니다. `/greengrass/v2` 또는 *C:\$1greengrass\$1v2*를 AWS IoT Greengrass 루트 폴더의 경로로 바꿉니다.

------
#### [ Linux ]

  ```
  sudo tail -f /greengrass/v2/logs/aws.greengrass.clientdevices.mqtt.EMQX.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content C:\greengrass\v2\logs\aws.greengrass.clientdevices.mqtt.EMQX.log -Tail 10 -Wait
  ```

------

## 라이선스
<a name="mqtt-broker-emqx-component-licenses"></a>

Windows 운영 체제에서 이 소프트웨어에는 [Microsoft 소프트웨어 라이선스 조건 - Microsoft Visual Studio Community 2022](https://visualstudio.microsoft.com/license-terms/vs2022-ga-community)에 따라 배포된 코드가 포함됩니다. 이 소프트웨어를 다운로드하면 해당 코드의 라이선스 조건에 동의하는 것입니다.

<a name="component-core-software-license"></a>이 구성 요소는 [Greengrass 코어 소프트웨어 라이선스 계약](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf)에 따라 릴리스됩니다.

## Changelog
<a name="mqtt-broker-emqx-component-changelog"></a>

다음 표에는 각 구성 요소 버전의 변경 사항이 설명되어 있습니다.

------
#### [ v2.x ]


|  **버전**  |  **변경 사항**  | 
| --- | --- | 
|  2.0.3  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/greengrass/v2/developerguide/mqtt-broker-emqx-component.html)  | 
|  2.0.2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/greengrass/v2/developerguide/mqtt-broker-emqx-component.html)  | 
|  2.0.1  |  [클라이언트 디바이스 인증](client-device-auth-component.md) 버전 2.5.0 릴리스에 대한 버전이 업데이트되었습니다.  | 
| 2.0.0 | 이 버전의 MQTT 5 브로커(EMQX)에는 버전 1.x와 다른 구성 파라미터가 필요합니다. 버전 1.x에 기본값이 아닌 구성을 사용하고 있는 경우 2.x에 맞게 구성 요소의 구성을 업데이트해야 합니다. 자세한 내용은 [구성](#mqtt-broker-emqx-component-configuration) 단원을 참조하십시오. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/greengrass/v2/developerguide/mqtt-broker-emqx-component.html) | 

------
#### [ v1.x ]


|  **버전**  |  **변경 사항**  | 
| --- | --- | 
|  1.2.3  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/greengrass/v2/developerguide/mqtt-broker-emqx-component.html)  | 
|  1.2.2  |  [클라이언트 디바이스 인증](client-device-auth-component.md) 버전 2.4.0 릴리스에 대한 버전이 업데이트되었습니다.  | 
|  1.2.1  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/greengrass/v2/developerguide/mqtt-broker-emqx-component.html)  | 
|  1.2.0  |  인증서 체인에 대한 지원을 추가합니다.  | 
|  1.1.0  | <a name="changelog-emqx-1.1.0"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/greengrass/v2/developerguide/mqtt-broker-emqx-component.html) | 
|  1.0.1  |  TLS 핸드셰이크 중에 일부 MQTT 클라이언트가 연결되지 않는 문제를 해결합니다.  | 
|  1.0.0  |  초기 버전입니다.  | 

------