Corretora MQTT 5 (EMQX) - AWS IoT Greengrass

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Corretora MQTT 5 (EMQX)

O componente broker EMQX MQTT (aws.greengrass.clientdevices.mqtt.EMQX) manipula mensagens MQTT entre dispositivos cliente e um dispositivo principal do Greengrass. Esse componente fornece uma versão modificada do broker EMQX MQTT 5.0. Implante esse agente MQTT para usar os recursos do MQTT 5 na comunicação entre dispositivos cliente e um dispositivo principal. Para obter mais informações sobre como escolher um corretor MQTT, consulteEscolha um corretor MQTT.

Esse corretor implementa o protocolo MQTT 5.0. Ele inclui suporte para intervalos de expiração de sessões e mensagens, propriedades do usuário, assinaturas compartilhadas, aliases de tópicos e muito mais. O MQTT 5 é compatível com versões anteriores do MQTT 3.1.1, portanto, se você executar o broker Moquette MQTT 3.1.1, poderá substituí-lo pelo broker EMQX MQTT 5, e os dispositivos clientes poderão continuar se conectando e operando normalmente.

nota

Os dispositivos cliente são dispositivos IoT locais que se conectam a um dispositivo principal do Greengrass para enviar mensagens e dados MQTT para processamento. Para ter mais informações, consulte Interaja com dispositivos IoT locais.

Versões

Esse componente tem as seguintes versões:

  • 2.0.x

  • 1,2.x

  • 1.1.x

  • 1,0.x

Tipo

Este componente é um componente genérico (aws.greengrass.generic). O núcleo do Greengrass executa os scripts do ciclo de vida do componente.

Para ter mais informações, consulte Tipos de componentes.

Sistema operacional

Esse componente pode ser instalado em dispositivos principais que executam os seguintes sistemas operacionais:

  • Linux

  • Windows

Requisitos

Esse componente tem os seguintes requisitos:

  • O dispositivo principal deve ser capaz de aceitar conexões na porta em que o agente MQTT opera. Esse componente executa o agente MQTT na porta 8883 por padrão. Você pode especificar uma porta diferente ao configurar esse componente.

    Se você especificar uma porta diferente e usar o componente de ponte MQTT para retransmitir mensagens MQTT para outros corretores, deverá usar a ponte MQTT v2.1.0 ou posterior. Configure-o para usar a porta em que o agente MQTT opera.

    Se você especificar uma porta diferente e usar o componente detector de IP para gerenciar os endpoints do broker MQTT, deverá usar o detector de IP v2.1.0 ou posterior. Configure-o para relatar a porta em que o agente MQTT opera.

  • Nos dispositivos principais do Linux, o Docker é instalado e configurado no dispositivo principal:

    • Docker Engine 1.9.1 ou posterior instalado no dispositivo principal do Greengrass. A versão 20.10 é a versão mais recente verificada para funcionar com o software AWS IoT Greengrass Core. Você deve instalar o Docker diretamente no dispositivo principal antes de implantar componentes que executam contêineres do Docker.

    • O daemon do Docker foi iniciado e executado no dispositivo principal antes de você implantar esse componente.

    • O usuário do sistema que executa esse componente deve ter permissões de root ou administrador. Como alternativa, você pode executar esse componente como usuário do sistema no docker grupo e configurar a requiresPrivileges opção desse componente false para executar o broker EQMX MQTT sem privilégios.

  • O componente de agente EMQX MQTT tem suporte para ser executado em uma VPC.

  • O componente de corretor EMQX MQTT não é suportado na plataforma. armv7

Dependências

Quando você implanta um componente, AWS IoT Greengrass também implanta versões compatíveis de suas dependências. Isso significa que você deve atender aos requisitos do componente e de todas as suas dependências para implantá-lo com êxito. Esta seção lista as dependências das versões lançadas desse componente e as restrições de versão semântica que definem as versões dos componentes para cada dependência. Você também pode visualizar as dependências de cada versão do componente no AWS IoT Greengrass console. Na página de detalhes do componente, procure a lista de dependências.

2.0.1

A tabela a seguir lista as dependências da versão 2.0.1 desse componente.

Dependência Versões compatíveis Tipo de dependência
Autenticação do dispositivo cliente >=2.2.0 <2.6.0 Rígido
2.0.0

A tabela a seguir lista as dependências da versão 2.0.0 desse componente.

Dependência Versões compatíveis Tipo de dependência
Autenticação do dispositivo cliente >=2.2.0 <2.5.0 Rígido
1.2.2 – 1.2.3

A tabela a seguir lista as dependências das versões 1.2.2 a 1.2.3 desse componente.

Dependência Versões compatíveis Tipo de dependência
Autenticação do dispositivo cliente >=2.2.0 <2.5.0 Rígido
1.2.0 and 1.2.1

A tabela a seguir lista as dependências das versões 1.2.0 e 1.2.1 desse componente.

Dependência Versões compatíveis Tipo de dependência
Autenticação do dispositivo cliente >=2.2.0 <2.4.0 Rígido
1.0.0 and 1.1.0

A tabela a seguir lista as dependências das versões 1.0.0 e 1.1.0 desse componente.

Dependência Versões compatíveis Tipo de dependência
Autenticação do dispositivo cliente >=2.2.0 <2.3.0 Rígido

Para obter mais informações sobre dependências de componentes, consulte a referência da receita do componente.

Configuração

2.0.0 - 2.0.1

Esse componente fornece os seguintes parâmetros de configuração que você pode personalizar ao implantar o componente.

Importante

Se você usa a versão 2 do componente MQTT 5 broker (EMQX), você deve atualizar seu arquivo de configuração. Os arquivos de configuração da versão 1 não funcionam com a versão 2.

Configuração do EMQX

(Opcional) A configuração do broker EMQX MQTT a ser usada. Você pode definir as opções de configuração do EMQX neste componente.

Quando você usa o corretor EMQX, o Greengrass usa uma configuração padrão. Essa configuração é usada, a menos que você a modifique usando esse campo.

A modificação das seguintes configurações faz com que o componente do agente EMQX seja reiniciado. Outras alterações de configuração se aplicam sem reiniciar o componente.

  • emqxConfig/cluster

  • emqxConfig/node

  • emqxConfig/rpc

nota

aws.greengrass.clientdevices.mqtt.EMQXpermite que você configure opções sensíveis à segurança. Isso inclui configurações de TLS, autenticação e provedores de autorização. Recomendamos a configuração padrão que usa a autenticação TLS mútua e o provedor de autenticação de dispositivos do cliente Greengrass.

exemplo Exemplo: configuração padrão

O exemplo a seguir mostra os padrões definidos para o broker MQTT 5 (EMQX). Você pode substituir essas configurações usando a emqxConfig configuração.

{ "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" } }
Modo de autenticação

(Opcional) Define o provedor de autorização para o corretor. Pode ser um dos valores a seguir:

  • enabled— (Padrão) Use o provedor de autenticação e autorização do Greengrass.

  • bypass_on_failure— Use o provedor de autenticação do Greengrass e, em seguida, use qualquer provedor de autenticação restante na cadeia de provedores do EMQX se o Greengrass negar a autenticação ou a autorização.

  • bypass— O provedor Greengrass está desativado. A autenticação e a autorização são gerenciadas pela cadeia de fornecedores do EMQX.

requiresPrivilege

(Opcional) Nos dispositivos principais do Linux, você pode especificar a execução do broker EMQX MQTT sem privilégios de root ou administrador. Se você definir essa opção comofalse, o usuário do sistema que executa esse componente deverá ser membro do docker grupo.

Padrão: true

startupTimeoutSeconds

(Opcional) O tempo máximo em segundos para o broker EMQX MQTT iniciar. O estado do componente muda para BROKEN se ele exceder esse tempo limite.

Padrão: 90

ipcTimeoutSeconds

(Opcional) O tempo máximo em segundos para o componente esperar até que o núcleo do Greengrass responda às solicitações de comunicação entre processos (IPC). Aumente esse número se esse componente relatar erros de tempo limite ao verificar se um dispositivo cliente está autorizado.

Padrão: 5

crtLogLevel

(Opcional) O nível de registro da biblioteca AWS Common Runtime (CRT).

O padrão é o nível de log (in) do broker EMQX MQTT. log.level emqx

restartIdentifier

(Opcional) Configure essa opção para reiniciar o agente EMQX MQTT. Quando esse valor de configuração é alterado, esse componente reinicia o agente MQTT. Você pode usar essa opção para forçar a desconexão dos dispositivos cliente.

dockerOptions

(Opcional) Configure essa opção somente em sistemas operacionais Linux para adicionar parâmetros à linha de comando do Docker. Por exemplo, para mapear portas adicionais, use o parâmetro -p Docker:

"-p 1883:1883"
exemplo Exemplo: atualização de um arquivo de configuração v1.x para v2.x

O exemplo a seguir mostra as alterações necessárias para atualizar um arquivo de configuração v1.x para a versão 2.x.

O arquivo de configuração da versão 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" } }

O arquivo de configuração equivalente para v2:

{ "emqxConfig": { "listeners": { "ssl": { "default": { "bind": "8883", "max_connections": "1024000", "max_conn_rate": "500", "handshake_timeout": "15s" } } }, "log": { "console": { "enable": true, "level": "warning" } } }, "authMode": "enabled" }

Não há equivalente à entrada listener.ssl.external.rate_limit de configuração. A opção de use_greengrass_managed_certificates configuração foi removida.

exemplo Exemplo: definir uma nova porta para o corretor

O exemplo a seguir altera a porta em que o agente MQTT opera da 8883 padrão para a porta 1234. Se você estiver usando Linux, inclua o dockerOptions campo.

{ "emqxConfig": { "listeners": { "ssl": { "default": { "bind": 1234 } } } }, "dockerOptions": "-p 1234:1234" }
exemplo Exemplo: ajuste o nível de registro do corretor MQTT

O exemplo a seguir altera o nível de log do broker MQTT paradebug. Você pode escolher entre os seguintes níveis de registro:

  • debug

  • info

  • notice

  • warning

  • error

  • critical

  • alert

  • emergency

O nível de registro padrão éwarning.

{ "emqxConfig": { "log": { "console": { "level": "debug" } } } }
exemplo Exemplo: Ativar o painel do EMQX

O exemplo a seguir ativa o painel do EMQX para que você possa monitorar e gerenciar seu corretor. Se você estiver usando Linux, inclua o dockerOptions campo.

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

Esse componente fornece os seguintes parâmetros de configuração que você pode personalizar ao implantar o componente.

emqx

(Opcional) A configuração do broker EMQX MQTT a ser usada. Você pode configurar um subconjunto de opções de configuração do EMQX neste componente.

Esse objeto contém as seguintes informações:

listener.ssl.external

(Opcional) A porta em que o corretor MQTT opera.

nota

Se você especificar uma porta diferente e usar o componente de ponte MQTT para retransmitir mensagens MQTT para outros corretores, deverá usar a ponte MQTT v2.1.0 ou posterior. Configure-o para usar a porta em que o agente MQTT opera.

Se você especificar uma porta diferente e usar o componente detector de IP para gerenciar os endpoints do broker MQTT, deverá usar o detector de IP v2.1.0 ou posterior. Configure-o para relatar a porta em que o agente MQTT opera.

Padrão: 8883

listener.ssl.external.max_connections

(Opcional) O número máximo de conexões simultâneas que o agente MQTT suporta.

Padrão: 1024000

listener.ssl.external.max_conn_rate

(Opcional) O número máximo de novas conexões por segundo que o agente MQTT pode receber.

Padrão: 500

listener.ssl.external.rate_limit

(Opcional) O limite de largura de banda para todas as conexões com o agente MQTT. Especifique a largura de banda e a duração dessa largura de banda separadas por uma vírgula (,) no seguinte formato:. bandwidth,duration Por exemplo, você pode especificar 50KB,5s para limitar o agente MQTT a 50 kilobytes (KB) de dados a cada 5 segundos.

listener.ssl.external.handshake_timeout

(Opcional) A quantidade de tempo que o agente MQTT espera para concluir a autenticação de uma nova conexão.

Padrão: 15s

mqtt.max_packet_size

(Opcional) O tamanho máximo de uma mensagem MQTT.

Padrão: 268435455 (256 MB menos 1)

log.level

(Opcional) O nível de log do broker MQTT. Escolha uma das seguintes opções:

  • debug

  • info

  • notice

  • warning

  • error

  • critical

  • alert

  • emergency

O nível de registro padrão éwarning.

requiresPrivilege

(Opcional) Nos dispositivos principais do Linux, você pode especificar a execução do broker EMQX MQTT sem privilégios de root ou administrador. Se você definir essa opção comofalse, o usuário do sistema que executa esse componente deverá ser membro do docker grupo.

Padrão: true

startupTimeoutSeconds

(Opcional) O tempo máximo em segundos para o broker EMQX MQTT iniciar. O estado do componente muda para BROKEN se ele exceder esse tempo limite.

Padrão: 90

ipcTimeoutSeconds

(Opcional) O tempo máximo em segundos para o componente esperar até que o núcleo do Greengrass responda às solicitações de comunicação entre processos (IPC). Aumente esse número se esse componente relatar erros de tempo limite ao verificar se um dispositivo cliente está autorizado.

Padrão: 5

crtLogLevel

(Opcional) O nível de registro da biblioteca AWS Common Runtime (CRT).

O padrão é o nível de log (in) do broker EMQX MQTT. log.level emqx

restartIdentifier

(Opcional) Configure essa opção para reiniciar o agente EMQX MQTT. Quando esse valor de configuração é alterado, esse componente reinicia o agente MQTT. Você pode usar essa opção para forçar a desconexão dos dispositivos cliente.

dockerOptions

(Opcional) Configure essa opção somente em sistemas operacionais Linux para adicionar parâmetros à linha de comando do Docker. Por exemplo, para mapear portas adicionais, use o parâmetro -p Docker:

"-p 1883:1883"
mergeConfigurationFiles

(Opcional) Configure essa opção para adicionar ou substituir os padrões nos arquivos de configuração do EMQX especificados. Para obter informações sobre os arquivos de configuração e seus formatos, consulte Configuração na documentação do EMQX 4.0. Os valores que você especifica são anexados ao arquivo de configuração.

O exemplo a seguir atualiza o etc/emqx.conf arquivo.

"mergeConfigurationFiles": { "etc/emqx.conf": "broker.sys_interval=30s\nbroker.sys_heartbeat=10s" },

Além dos arquivos de configuração suportados pelo EMQX, o Greengrass suporta um arquivo que configura o plug-in de autenticação do Greengrass para EMQX chamado. etc/plugins/aws_greengrass_emqx_auth.conf Há duas opções suportadas, auth_mode use_greengrass_managed_certificates e. Para usar outro provedor de autenticação, defina a auth_mode opção como uma das seguintes:

  • enabled— (Padrão) Use o provedor de autenticação e autorização do Greengrass.

  • bypass_on_failure— Use o provedor de autenticação do Greengrass e, em seguida, use qualquer provedor de autenticação restante na cadeia de provedores do EMQX se o Greengrass negar a autenticação ou a autorização.

  • bypass— O provedor Greengrass está desativado. A autenticação e a autorização são então tratadas pela cadeia de fornecedores do EMQX.

Se use_greengrass_managed_certificates fortrue, essa opção indica que o Greengrass gerencia os certificados TLS do broker. Sefalse, isso indica que você fornece os certificados por meio de outra fonte.

O exemplo a seguir atualiza os padrões no arquivo de etc/plugins/aws_greengrass_emqx_auth.conf configuração.

"mergeConfigurationFiles": { "etc/plugins/aws_greengrass_emqx_auth.conf": "auth_mode=enabled\n use_greengrass_managed_certificates=true\n" },
nota

aws.greengrass.clientdevices.mqtt.EMQXpermite que você configure opções sensíveis à segurança. Isso inclui configurações de TLS, autenticação e provedores de autorização. A configuração recomendada é a configuração padrão que usa a autenticação TLS mútua e o provedor Greengrass Client Device Auth.

replaceConfigurationFiles

(Opcional) Configure essa opção para substituir os arquivos de configuração do EMQX especificados. Os valores que você especifica substituem todo o arquivo de configuração existente. Você não pode especificar o etc/emqx.conf arquivo nesta seção. Você deve usar mergeConfigurationFile para modificaretc/emqx.conf.

exemplo Exemplo: atualização da mesclagem de configurações

O exemplo de configuração a seguir especifica a operação do agente MQTT na porta 443.

{ "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" }

Arquivo de log local

Esse componente usa o seguinte arquivo de log.

Linux
/greengrass/v2/logs/aws.greengrass.clientdevices.mqtt.EMQX.log
Windows
C:\greengrass\v2\logs\aws.greengrass.clientdevices.mqtt.EMQX.log
Para ver os registros desse componente
  • Execute o comando a seguir no dispositivo principal para visualizar o arquivo de log desse componente em tempo real. Substitua /greengrass/v2 ou C:\greengrass\v2 pelo caminho para a pasta AWS IoT Greengrass raiz.

    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

Licenças

Nos sistemas operacionais Windows, esse software inclui código distribuído de acordo com os Termos de Licença de Software da Microsoft - Microsoft Visual Studio Community 2022. Ao baixar este software, você concorda com os termos de licença desse código.

Esse componente é lançado de acordo com o Contrato de Licença de Software Principal do Greengrass.

Changelog

A tabela a seguir descreve as alterações em cada versão do componente.

v2.x

Version (Versão)

Alterações

2.0.1

Versão atualizada para a versão 2.5.0 da autenticação do dispositivo cliente.

2.0.0

Essa versão do broker MQTT 5 (EMQX) espera parâmetros de configuração diferentes da versão 1.x. Se você usar uma configuração não padrão para a versão 1.x, deverá atualizar a configuração do componente para 2.x. Para ter mais informações, consulte Configuração.

Novos atributos
  • Atualiza o corretor MQTT para o EMQX 5.1.1.

  • Permite alterações na configuração do agente sem reiniciar o componente.

Atualizações
  • Adiciona um novo campo de emqxConfig configuração que substitui os campos de replaceConfigurationFiles configuração emqxmergeConfigurationFiles, e.

v1.x

Version (Versão)

Alterações

1.2.3

Correções de erros e melhorias
  • Corrige um problema em que os clientes não conseguiam interagir com o EMQX após a autenticação anterior, desconectando e reautenticando o cliente.

1.2.2

Versão atualizada para a versão 2.4.0 da autenticação do dispositivo cliente.

1.2.1

Correções de erros e melhorias
  • Corrige um problema em que o componente não inicializa no Windows se o Visual C++ Redistributable ainda não estiver presente.

  • Atualiza o EMQX para a versão 4.4.14.

1.2.0

Adiciona suporte para cadeias de certificados.

1.1.0

Novos atributos
  • Adiciona suporte às configurações do EMQX, incluindo opções de corretor e plug-ins.

Correções de erros e melhorias
  • Atualiza o EMQX para a versão 4.4.9.

1.0.1

Corrige um problema durante o handshake TLS que resulta na falha de conexão de alguns clientes MQTT.

1.0.0

Versão inicial.