Configurar o núcleo do AWS IoT Greengrass - AWS IoT Greengrass

AWS IoT Greengrass Version 1 entrou na fase de vida útil prolongada em 30 de junho de 2023. Para obter mais informações, consulte política de manutenção do AWS IoT Greengrass V1. Após essa data, AWS IoT Greengrass V1 não lançaremos atualizações que forneçam recursos, aprimoramentos, correções de erros ou patches de segurança. Os dispositivos que funcionam AWS IoT Greengrass V1 não serão interrompidos e continuarão operando e se conectando à nuvem. É altamente recomendável que você migre para AWS IoT Greengrass Version 2, o que adiciona novos recursos significativos e suporte para plataformas adicionais.

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á.

Configurar o núcleo do AWS IoT Greengrass

Um núcleo AWS IoT Greengrass é uma coisa da AWS IoT (dispositivo) que atua como hub ou gateway em ambientes de borda. Assim como outros dispositivos do AWS IoT, um núcleo existe no registro, tem um device shadow e usa um certificado de dispositivo para se autenticar com o AWS IoT Core e o AWS IoT Greengrass. O dispositivo de núcleo executa o software de núcleo do AWS IoT Greengrass, que o permite gerenciar processos locais para grupos do Greengrass, como comunicação, sincronização de shadow e troca de tokens.

O software do principal do AWS IoT Greengrass fornece a seguinte funcionalidade:

  • Implantação e execução local de conectores e funções do Lambda.

  • Processe fluxos de dados localmente com exportações automáticas para a Nuvem AWS.

  • Mensagens MQTT pela rede local entre dispositivos, conectores e funções do Lambda usando assinaturas gerenciadas.

  • Mensagens MQTT entre AWS IoT e dispositivos, conectores e funções do Lambda usando assinaturas gerenciadas.

  • Proteja as conexões entre dispositivos e a Nuvem AWS usando a autorização e a autenticação de dispositivos.

  • Sincronização da shadow local de dispositivos. As shadows podem ser configuradas para serem sincronizadas com a Nuvem AWS.

  • Acesso controlado ao dispositivo local e recursos de volume.

  • Implantação de modelos de machine learning treinados em nuvem para executar inferência local.

  • Detecção automática de endereço IP que permite aos dispositivos descobrirem o dispositivo de núcleo do Greengrass.

  • Implantação central de configuração de grupo nova ou atualizada. Depois que os dados de configuração forem obtidos por download, o dispositivo de núcleo será reiniciado automaticamente.

  • Atualizações seguras de software por rede sem fio (OTA) das funções do Lambda definidas pelo usuário.

  • Armazenamento criptografado e seguro de segredos locais e acesso controlado por conectores e funções do Lambda.

Arquivo de configuração de núcleo do AWS IoT Greengrass

O arquivo de configuração para o software do núcleo do AWS IoT Greengrass é config.json. É possível encontrá-lo no diretório /greengrass-root/config.

nota

greengrass-root representa o caminho no qual o software de núcleo do AWS IoT Greengrass é instalado no dispositivo. Normalmente, esse é o diretório /greengrass.

Se você usar a opção Criação de grupo padrão do console do AWS IoT Greengrass, o arquivo config.json será implantado no dispositivo de núcleo em um estado operacional.

Você pode examinar o conteúdo desse arquivo executando o seguinte comando:

cat /greengrass-root/config/config.json

Veja a seguir um exemplo de arquivo config.json. Esta é a versão que é gerada quando você cria o núcleo do console do AWS IoT Greengrass.

GGC v1.11
{ "coreThing": { "caPath": "root.ca.pem", "certPath": "hash.cert.pem", "keyPath": "hash.private.key", "thingArn": "arn:partition:iot:region:account-id:thing/core-thing-name", "iotHost": "host-prefix-ats.iot.region.amazonaws.com", "ggHost": "greengrass-ats.iot.region.amazonaws.com", "keepAlive": 600, "ggDaemonPort": 8000, "systemComponentAuthTimeout": 5000 }, "runtime": { "maxWorkItemCount": 1024, "maxConcurrentLimit": 25, "lruSize": 25, "mountAllBlockDevices": "no", "cgroup": { "useSystemd": "yes" } }, "managedRespawn": false, "crypto": { "principals": { "SecretsManager": { "privateKeyPath": "file:///greengrass/certs/hash.private.key" }, "IoTCertificate": { "privateKeyPath": "file:///greengrass/certs/hash.private.key", "certificatePath": "file:///greengrass/certs/hash.cert.pem" } }, "caPath": "file:///greengrass/certs/root.ca.pem" }, "writeDirectory": "/var/snap/aws-iot-greengrass/current/ggc-write-directory", "pidFileDirectory": "/var/snap/aws-iot-greengrass/current/pidFileDirectory" }

O arquivo config.json é compatível com as seguintes propriedades:

coreThing

Campo Descrição Observações
caPath

O caminho para o CA raiz da AWS IoT relativo ao diretório /greengrass-root/certs.

Para compatibilidade retroativa com versões anteriores à 1.7.0. Essa propriedade é ignorada quando o objeto crypto está presente.

certPath

O caminho para o certificado de dispositivo de núcleo relativo ao diretório /greengrass-root/certs.

Para compatibilidade retroativa com versões anteriores à 1.7.0. Essa propriedade é ignorada quando o objeto crypto está presente.
keyPath O caminho para a chave privada do núcleo relativo ao diretório /greengrass-root/certs. Para compatibilidade retroativa com versões anteriores à 1.7.0. Essa propriedade é ignorada quando o objeto crypto está presente.
thingArn O nome do recurso da Amazon (ARN) da coisa do AWS IoT que representa o dispositivo de núcleo do AWS IoT Greengrass. Encontre o ARN do seu núcleo no console do AWS IoT Greengrass em Núcleos ou executando o comando aws greengrass get-core-definition-version da CLI.
iotHost O endpoint da AWS IoT.

Encontre o endpoint no console do AWS IoT em Configurações ou executando o comando aws iot describe-endpoint --endpoint-type iot:Data-ATS da CLI.

Este comando retorna o endpoint do Amazon Trust Services (ATS). Para obter mais informações, consulte a documentação de Autenticação do servidor.

ggHost O endpoint da AWS IoT Greengrass.

Este é o seu endpoint iotHost com o prefixo do host substituído pelo greengrass (por exemplo, greengrass-ats.iot.region.amazonaws.com). Use o mesmo Região da AWS que iotHost.

iotMqttPort Opcional. O número da porta usada para comunicação MQTT com AWS IoT. Os valores válidos são 8883 ou 443. O valor padrão é 8883. Para ter mais informações, consulte Conectar-se à porta 443 ou por meio de um proxy de rede.
iotHttpPort Opcional. O número da porta usada para criar as conexões HTTPS para AWS IoT. Os valores válidos são 8443 ou 443. O valor padrão é 8443. Para ter mais informações, consulte Conectar-se à porta 443 ou por meio de um proxy de rede.
ggMqttPort Opcional. O número da porta a ser usada para comunicação MQTT pela rede local. Os valores válidos vão de 1024 a 65535. O valor padrão é 8883. Para ter mais informações, consulte Configurar a porta MQTT para mensagens locais.
ggHttpPort Opcional. O número da porta usada para criar as conexões HTTPS para o serviço AWS IoT Greengrass. Os valores válidos são 8443 ou 443. O valor padrão é 8443. Para ter mais informações, consulte Conectar-se à porta 443 ou por meio de um proxy de rede.
keepAlive Opcional. O período KeepAlive do MQTT, em segundos. O intervalo válido é entre 30 e 1200. O valor padrão é 600.
networkProxy Opcional. Um objeto que define um servidor de proxy para se conectar. O servidor proxy pode ser HTTP ou HTTPS. Para ter mais informações, consulte Conectar-se à porta 443 ou por meio de um proxy de rede.
mqttOperationTimeout Opcional. A quantidade de tempo (em segundos) para permitir que o núcleo do Greengrass conclua uma operação de publicação, assinatura ou cancelamento de assinatura em conexões MQTT com o AWS IoT Core. O valor padrão é 5. O valor mínimo é 5.
ggDaemonPort Opcional. O número da porta IPC do núcleo do Greengrass.

Essa propriedade está disponível na versão 1.11.0 ou posterior do AWS IoT Greengrass.

Os valores válidos estão entre 1.024 e 65.535. O valor padrão é 8000.

systemComponentAuthTimeout Opcional. O tempo (em milissegundos) para permitir que o IPC do núcleo do Greengrass conclua a autenticação.

Essa propriedade está disponível na versão 1.11.0 ou posterior do AWS IoT Greengrass.

Os valores válidos estão entre 500 e 5000. O valor padrão é 5000.

runtime

Campo Descrição Observações
maxWorkItemCount

Opcional. O número máximo de itens de trabalho que o daemon do Greengrass pode processar por vez. As solicitações que excederem esse limite serão ignoradas.

A fila de itens de trabalho é compartilhada por componentes do sistema, funções do Lambda definidas pelo usuário, e conectores.

O valor padrão é 1024. O valor máximo é limitado pelo hardware do dispositivo.

Aumentar esse valor aumenta a memória usada pelo AWS IoT Greengrass. Você pode aumentar esse valor caso espere que seu núcleo receba tráfego pesado de mensagens MQTT.

maxConcurrentLimit

Opcional. O número máximo de trabalhadores do Lambda não fixados simultâneos que o daemon do Greengrass pode ter. Você pode especificar um número inteiro diferente para substituir esse parâmetro.

O valor padrão é 25. O valor mínimo é definido por lruSize.

lruSize Optional. Defines the minimum value for maxConcurrentLimit. The default value is 25.
mountAllBlockDevices Optional. Enables AWS IoT Greengrass to use bind mounts to mount all block devices into a container after setting up the OverlayFS.

Essa propriedade está disponível na versão 1.11.0 ou posterior do AWS IoT Greengrass.

Os valores válidos são yes e no. O valor padrão é no.

Defina esse valor como yes se seu diretório /usr não estiver sob a hierarquia /.

postStartHealthCheckTimeout Optional. The time (in milliseconds) after starting that the Greengrass daemon waits for the health check to finish. The default timeout is 30 seconds (30000 ms).
cgroup
useSystemd Indicates whether your device uses systemd. Valid values are sim or não. Run the check_ggc_dependencies script in Módulo 1 to see if your device uses systemd.

crypto

A crypto apresenta propriedades que oferecem suporte ao armazenamento da chave privada em um módulo de segurança de hardware (HSM) por meio de PKCS#11 e armazenamento local secreto. Para mais informações, consulte Entidades principais de segurança do núcleo do AWS IoT Greengrass, Integração de segurança de hardware e Implantar segredos no núcleo do AWS IoT Greengrass. Configurações para o armazenamento da chave privada em HSMs ou no sistema de arquivo são compatíveis.

Campo Descrição Observações
caPath

O caminho absoluto para o CA raiz da AWS IoT.

Deve ser um URI de arquivo no formato: file:///absolute/path/to/file.

PKCS11
OpenSSLEngine

Opcional. O caminho absoluto para o arquivo .so do mecanismo OpenSSL para habilitar o suporte PKCS#11 no OpenSSL.

Deve ser um caminho para o arquivo no sistema de arquivos.

Esta propriedade será necessária se você estiver usando o atendente de atualizações OTA do Greengrass com segurança de hardware. Para ter mais informações, consulte Configurar suporte para atualizações OTA (over-the-air).

P11Provider

O caminho absoluto para a biblioteca carregável libdl da implementação PKCS#11.

Deve ser um caminho para o arquivo no sistema de arquivos.

slotLabel

O rótulo de slot usado para identificar o módulo de hardware.

Deve estar em conformidade com as especificações de rótulo PKCS#11.

slotUserPin

O PIN do usuário usado para autenticar o núcleo do Greengrass no módulo.

É necessário ter permissões suficientes para executar C_Sign com as chaves privadas configuradas.

principals
IoTCertificate The certificate and private key that the core uses to make requests to AWS IoT.
IoTCertificate  .privateKeyPath

O caminho para a chave privada do núcleo.

Para o armazenamento do sistema de arquivos, deve ser um URI de arquivo no formato: file:///absolute/path/to/file.

Para o armazenamento HSM, deve ser um caminho RFC 7512 PKCS#11 que especifica o rótulo do objeto.

IoTCertificate  .certificatePath

O caminho absoluto para o certificado do dispositivo do núcleo.

Deve ser um URI de arquivo no formato: file:///absolute/path/to/file.

MQTTServerCertificate

Opcional. A chave privada que o núcleo usa em combinação com o certificado para atuar como um gateway ou servidor MQTT.

MQTTServerCertificate  .privateKeyPath

O caminho para a chave privada do servidor MQTT local.

Use esse valor para especificar sua própria chave privada para o servidor MQTT local.

Para o armazenamento do sistema de arquivos, deve ser um URI de arquivo no formato: file:///absolute/path/to/file.

Para o armazenamento HSM, deve ser um caminho RFC 7512 PKCS#11 que especifica o rótulo do objeto.

Se essa propriedade é omitida, o AWS IoT Greengrass gira a chave com base em suas configurações de rotação. Se especificado, o cliente será responsável por girar a chave.

SecretsManager The private key that secures the data key used for encryption. For more information, see Implantar segredos no núcleo do AWS IoT Greengrass.
SecretsManager  .privateKeyPath

O caminho para a chave privada do secrets manager local.

Somente uma chave RSA é compatível.

Para o armazenamento do sistema de arquivos, deve ser um URI de arquivo no formato: file:///absolute/path/to/file.

Para o armazenamento HSM, deve ser um caminho RFC 7512 PKCS#11 que especifica o rótulo do objeto. A chave privada deve ser gerada usando o mecanismo de preenchimento PKCS#1 v1.5.

As seguintes propriedades de configuração também são compatíveis:

Campo Descrição Observações
mqttMaxConnectionRetryInterval

Opcional. O intervalo máximo (em segundos) entre novas tentativas de conexão MQTT caso a conexão caia.

Especifique esse valor como um inteiro não assinado. O padrão é 60.

managedRespawn

Opcional. Indica que o atendente OTA precisa executar o código personalizado antes de uma atualização.

Os valores válidos são true ou false. Para ter mais informações, consulte Atualizações OTA do software do AWS IoT Greengrass Core.

writeDirectory

Opcional. O diretório de gravação onde o AWS IoT Greengrass cria todos os recursos de leitura/gravação.

Para ter mais informações, consulte Configurar um diretório de gravação para o AWS IoT Greengrass.

pidFileDirectory

Opcional. O AWS IoT Greengrass armazena seu ID de processo (PID) nesse diretório.

O valor padrão é /var/run.

Extended life versions

As seguintes versões do software AWS IoT Greengrass Core estão na fase de vida útil prolongada. Essas informações estão incluídas apenas para fins de referência.

GGC v1.10
{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "hash.cert.pem", "keyPath" : "hash.private.key", "thingArn" : "arn:partition:iot:region:account-id:thing/core-thing-name", "iotHost" : "host-prefix-ats.iot.region.amazonaws.com", "ggHost" : "greengrass-ats.iot.region.amazonaws.com", "keepAlive" : 600, "systemComponentAuthTimeout": 5000 }, "runtime" : { "maxWorkItemCount" : 1024, "maxConcurrentLimit" : 25, "lruSize": 25, "cgroup" : { "useSystemd" : "yes" } }, "managedRespawn" : false, "crypto" : { "principals" : { "SecretsManager" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key" }, "IoTCertificate" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key", "certificatePath" : "file:///greengrass/certs/hash.cert.pem" } }, "caPath" : "file:///greengrass/certs/root.ca.pem" } }

O arquivo config.json é compatível com as seguintes propriedades:

coreThing

Campo Descrição Observações
caPath

O caminho para o CA raiz da AWS IoT relativo ao diretório /greengrass-root/certs.

Para compatibilidade retroativa com versões anteriores à 1.7.0. Essa propriedade é ignorada quando o objeto crypto está presente.

certPath

O caminho para o certificado de dispositivo de núcleo relativo ao diretório /greengrass-root/certs.

Para compatibilidade retroativa com versões anteriores à 1.7.0. Essa propriedade é ignorada quando o objeto crypto está presente.
keyPath O caminho para a chave privada do núcleo relativo ao diretório /greengrass-root/certs. Para compatibilidade retroativa com versões anteriores à 1.7.0. Essa propriedade é ignorada quando o objeto crypto está presente.
thingArn O nome do recurso da Amazon (ARN) da coisa do AWS IoT que representa o dispositivo de núcleo do AWS IoT Greengrass. Encontre o ARN do seu núcleo no console do AWS IoT Greengrass em Núcleos ou executando o comando aws greengrass get-core-definition-version da CLI.
iotHost O endpoint da AWS IoT.

Encontre o endpoint no console do AWS IoT em Configurações ou executando o comando aws iot describe-endpoint --endpoint-type iot:Data-ATS da CLI.

Este comando retorna o endpoint do Amazon Trust Services (ATS). Para obter mais informações, consulte a documentação de Autenticação do servidor.

ggHost O endpoint da AWS IoT Greengrass.

Este é o seu endpoint iotHost com o prefixo do host substituído pelo greengrass (por exemplo, greengrass-ats.iot.region.amazonaws.com). Use o mesmo Região da AWS que iotHost.

iotMqttPort Opcional. O número da porta usada para comunicação MQTT com AWS IoT. Os valores válidos são 8883 ou 443. O valor padrão é 8883. Para ter mais informações, consulte Conectar-se à porta 443 ou por meio de um proxy de rede.
iotHttpPort Opcional. O número da porta usada para criar as conexões HTTPS para AWS IoT. Os valores válidos são 8443 ou 443. O valor padrão é 8443. Para ter mais informações, consulte Conectar-se à porta 443 ou por meio de um proxy de rede.
ggMqttPort Opcional. O número da porta a ser usada para comunicação MQTT pela rede local. Os valores válidos vão de 1024 a 65535. O valor padrão é 8883. Para ter mais informações, consulte Configurar a porta MQTT para mensagens locais.
ggHttpPort Opcional. O número da porta usada para criar as conexões HTTPS para o serviço AWS IoT Greengrass. Os valores válidos são 8443 ou 443. O valor padrão é 8443. Para ter mais informações, consulte Conectar-se à porta 443 ou por meio de um proxy de rede.
keepAlive Opcional. O período KeepAlive do MQTT, em segundos. O intervalo válido é entre 30 e 1200. O valor padrão é 600.
networkProxy Opcional. Um objeto que define um servidor de proxy para se conectar. O servidor proxy pode ser HTTP ou HTTPS. Para ter mais informações, consulte Conectar-se à porta 443 ou por meio de um proxy de rede.
mqttOperationTimeout Opcional. A quantidade de tempo (em segundos) para permitir que o núcleo do Greengrass conclua uma operação de publicação, assinatura ou cancelamento de assinatura em conexões MQTT com o AWS IoT Core.

Esta propriedade está disponível a partir do AWS IoT Greengrass v1.10.2.

O valor padrão é 5. O valor mínimo é 5.

runtime

Campo Descrição Observações
maxWorkItemCount

Opcional. O número máximo de itens de trabalho que o daemon do Greengrass pode processar por vez. As solicitações que excederem esse limite serão ignoradas.

A fila de itens de trabalho é compartilhada por componentes do sistema, funções do Lambda definidas pelo usuário, e conectores.

O valor padrão é 1024. O valor máximo é limitado pelo hardware do dispositivo.

Aumentar esse valor aumenta a memória usada pelo AWS IoT Greengrass. Você pode aumentar esse valor caso espere que seu núcleo receba tráfego pesado de mensagens MQTT.

maxConcurrentLimit

Opcional. O número máximo de trabalhadores do Lambda não fixados simultâneos que o daemon do Greengrass pode ter. Você pode especificar um número inteiro diferente para substituir esse parâmetro.

O valor padrão é 25. O valor mínimo é definido por lruSize.

lruSize Optional. Defines the minimum value for maxConcurrentLimit. The default value is 25.
postStartHealthCheckTimeout Optional. The time (in milliseconds) after starting that the Greengrass daemon waits for the health check to finish. The default timeout is 30 seconds (30000 ms).
cgroup
useSystemd Indicates whether your device uses systemd. Valid values are sim or não. Run the check_ggc_dependencies script in Módulo 1 to see if your device uses systemd.

crypto

A crypto apresenta propriedades que oferecem suporte ao armazenamento da chave privada em um módulo de segurança de hardware (HSM) por meio de PKCS#11 e armazenamento local secreto. Para mais informações, consulte Entidades principais de segurança do núcleo do AWS IoT Greengrass, Integração de segurança de hardware e Implantar segredos no núcleo do AWS IoT Greengrass. Configurações para o armazenamento da chave privada em HSMs ou no sistema de arquivo são compatíveis.

Campo Descrição Observações
caPath

O caminho absoluto para o CA raiz da AWS IoT.

Deve ser um URI de arquivo no formato: file:///absolute/path/to/file.

PKCS11
OpenSSLEngine

Opcional. O caminho absoluto para o arquivo .so do mecanismo OpenSSL para habilitar o suporte PKCS#11 no OpenSSL.

Deve ser um caminho para o arquivo no sistema de arquivos.

Esta propriedade será necessária se você estiver usando o atendente de atualizações OTA do Greengrass com segurança de hardware. Para ter mais informações, consulte Configurar suporte para atualizações OTA (over-the-air).

P11Provider

O caminho absoluto para a biblioteca carregável libdl da implementação PKCS#11.

Deve ser um caminho para o arquivo no sistema de arquivos.

slotLabel

O rótulo de slot usado para identificar o módulo de hardware.

Deve estar em conformidade com as especificações de rótulo PKCS#11.

slotUserPin

O PIN do usuário usado para autenticar o núcleo do Greengrass no módulo.

É necessário ter permissões suficientes para executar C_Sign com as chaves privadas configuradas.

principals
IoTCertificate The certificate and private key that the core uses to make requests to AWS IoT.
IoTCertificate  .privateKeyPath

O caminho para a chave privada do núcleo.

Para o armazenamento do sistema de arquivos, deve ser um URI de arquivo no formato: file:///absolute/path/to/file.

Para o armazenamento HSM, deve ser um caminho RFC 7512 PKCS#11 que especifica o rótulo do objeto.

IoTCertificate  .certificatePath

O caminho absoluto para o certificado do dispositivo do núcleo.

Deve ser um URI de arquivo no formato: file:///absolute/path/to/file.

MQTTServerCertificate

Opcional. A chave privada que o núcleo usa em combinação com o certificado para atuar como um gateway ou servidor MQTT.

MQTTServerCertificate  .privateKeyPath

O caminho para a chave privada do servidor MQTT local.

Use esse valor para especificar sua própria chave privada para o servidor MQTT local.

Para o armazenamento do sistema de arquivos, deve ser um URI de arquivo no formato: file:///absolute/path/to/file.

Para o armazenamento HSM, deve ser um caminho RFC 7512 PKCS#11 que especifica o rótulo do objeto.

Se essa propriedade é omitida, o AWS IoT Greengrass gira a chave com base em suas configurações de rotação. Se especificado, o cliente será responsável por girar a chave.

SecretsManager The private key that secures the data key used for encryption. For more information, see Implantar segredos no núcleo do AWS IoT Greengrass.
SecretsManager  .privateKeyPath

O caminho para a chave privada do secrets manager local.

Somente uma chave RSA é compatível.

Para o armazenamento do sistema de arquivos, deve ser um URI de arquivo no formato: file:///absolute/path/to/file.

Para o armazenamento HSM, deve ser um caminho RFC 7512 PKCS#11 que especifica o rótulo do objeto. A chave privada deve ser gerada usando o mecanismo de preenchimento PKCS#1 v1.5.

As seguintes propriedades de configuração também são compatíveis:

Campo Descrição Observações
mqttMaxConnectionRetryInterval

Opcional. O intervalo máximo (em segundos) entre novas tentativas de conexão MQTT caso a conexão caia.

Especifique esse valor como um inteiro não assinado. O padrão é 60.

managedRespawn

Opcional. Indica que o atendente OTA precisa executar o código personalizado antes de uma atualização.

Os valores válidos são true ou false. Para ter mais informações, consulte Atualizações OTA do software do AWS IoT Greengrass Core.

writeDirectory

Opcional. O diretório de gravação onde o AWS IoT Greengrass cria todos os recursos de leitura/gravação.

Para ter mais informações, consulte Configurar um diretório de gravação para o AWS IoT Greengrass.

GGC v1.9
{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "hash.cert.pem", "keyPath" : "hash.private.key", "thingArn" : "arn:partition:iot:region:account-id:thing/core-thing-name", "iotHost" : "host-prefix-ats.iot.region.amazonaws.com", "ggHost" : "greengrass-ats.iot.region.amazonaws.com", "keepAlive" : 600 }, "runtime" : { "cgroup" : { "useSystemd" : "yes" } }, "managedRespawn" : false, "crypto" : { "principals" : { "SecretsManager" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key" }, "IoTCertificate" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key", "certificatePath" : "file:///greengrass/certs/hash.cert.pem" } }, "caPath" : "file:///greengrass/certs/root.ca.pem" } }

O arquivo config.json é compatível com as seguintes propriedades:

coreThing

Campo Descrição Observações
caPath

O caminho para o CA raiz da AWS IoT relativo ao diretório /greengrass-root/certs.

Para compatibilidade retroativa com versões anteriores à 1.7.0. Essa propriedade é ignorada quando o objeto crypto está presente.

certPath

O caminho para o certificado de dispositivo de núcleo relativo ao diretório /greengrass-root/certs.

Para compatibilidade retroativa com versões anteriores à 1.7.0. Essa propriedade é ignorada quando o objeto crypto está presente.
keyPath O caminho para a chave privada do núcleo relativo ao diretório /greengrass-root/certs. Para compatibilidade retroativa com versões anteriores à 1.7.0. Essa propriedade é ignorada quando o objeto crypto está presente.
thingArn O nome do recurso da Amazon (ARN) da coisa do AWS IoT que representa o dispositivo de núcleo do AWS IoT Greengrass. Encontre o ARN do seu núcleo no console do AWS IoT Greengrass em Núcleos ou executando o comando aws greengrass get-core-definition-version da CLI.
iotHost O endpoint da AWS IoT.

Encontre o endpoint no console do AWS IoT em Configurações ou executando o comando aws iot describe-endpoint --endpoint-type iot:Data-ATS da CLI.

Este comando retorna o endpoint do Amazon Trust Services (ATS). Para obter mais informações, consulte a documentação de Autenticação do servidor.

ggHost O endpoint da AWS IoT Greengrass.

Este é o seu endpoint iotHost com o prefixo do host substituído pelo greengrass (por exemplo, greengrass-ats.iot.region.amazonaws.com). Use o mesmo Região da AWS que iotHost.

iotMqttPort Opcional. O número da porta usada para comunicação MQTT com AWS IoT. Os valores válidos são 8883 ou 443. O valor padrão é 8883. Para ter mais informações, consulte Conectar-se à porta 443 ou por meio de um proxy de rede.
iotHttpPort Opcional. O número da porta usada para criar as conexões HTTPS para AWS IoT. Os valores válidos são 8443 ou 443. O valor padrão é 8443. Para ter mais informações, consulte Conectar-se à porta 443 ou por meio de um proxy de rede.
ggHttpPort Opcional. O número da porta usada para criar as conexões HTTPS para o serviço AWS IoT Greengrass. Os valores válidos são 8443 ou 443. O valor padrão é 8443. Para ter mais informações, consulte Conectar-se à porta 443 ou por meio de um proxy de rede.
keepAlive Opcional. O período KeepAlive do MQTT, em segundos. O intervalo válido é entre 30 e 1200. O valor padrão é 600.
networkProxy Opcional. Um objeto que define um servidor de proxy para se conectar. O servidor proxy pode ser HTTP ou HTTPS. Para ter mais informações, consulte Conectar-se à porta 443 ou por meio de um proxy de rede.

runtime

Campo Descrição Observações
maxConcurrentLimit

Opcional. O número máximo de trabalhadores do Lambda não fixados simultâneos que o daemon do Greengrass pode ter. Você pode especificar um número inteiro diferente para substituir esse parâmetro.

O valor padrão é 25. O valor mínimo é definido por lruSize.

lruSize Optional. Defines the minimum value for maxConcurrentLimit. The default value is 25.
postStartHealthCheckTimeout Optional. The time (in milliseconds) after starting that the Greengrass daemon waits for the health check to finish. The default timeout is 30 seconds (30000 ms).
cgroup
useSystemd Indicates whether your device uses systemd. Valid values are sim or não. Run the check_ggc_dependencies script in Módulo 1 to see if your device uses systemd.

crypto

O objeto crypto é adicionado em v1.7.0. Ele apresenta propriedades que oferecem suporte ao armazenamento da chave privada em um módulo de segurança de hardware (HSM) por meio de PKCS#11 e armazenamento local secreto. Para mais informações, consulte Entidades principais de segurança do núcleo do AWS IoT Greengrass, Integração de segurança de hardware e Implantar segredos no núcleo do AWS IoT Greengrass. Configurações para o armazenamento da chave privada em HSMs ou no sistema de arquivo são compatíveis.

Campo Descrição Observações
caPath

O caminho absoluto para o CA raiz da AWS IoT.

Deve ser um URI de arquivo no formato: file:///absolute/path/to/file.

PKCS11
OpenSSLEngine

Opcional. O caminho absoluto para o arquivo .so do mecanismo OpenSSL para habilitar o suporte PKCS#11 no OpenSSL.

Deve ser um caminho para o arquivo no sistema de arquivos.

Esta propriedade será necessária se você estiver usando o atendente de atualizações OTA do Greengrass com segurança de hardware. Para ter mais informações, consulte Configurar suporte para atualizações OTA (over-the-air).

P11Provider

O caminho absoluto para a biblioteca carregável libdl da implementação PKCS#11.

Deve ser um caminho para o arquivo no sistema de arquivos.

slotLabel

O rótulo de slot usado para identificar o módulo de hardware.

Deve estar em conformidade com as especificações de rótulo PKCS#11.

slotUserPin

O PIN do usuário usado para autenticar o núcleo do Greengrass no módulo.

É necessário ter permissões suficientes para executar C_Sign com as chaves privadas configuradas.

principals
IoTCertificate The certificate and private key that the core uses to make requests to AWS IoT.
IoTCertificate  .privateKeyPath

O caminho para a chave privada do núcleo.

Para o armazenamento do sistema de arquivos, deve ser um URI de arquivo no formato: file:///absolute/path/to/file.

Para o armazenamento HSM, deve ser um caminho RFC 7512 PKCS#11 que especifica o rótulo do objeto.

IoTCertificate  .certificatePath

O caminho absoluto para o certificado do dispositivo do núcleo.

Deve ser um URI de arquivo no formato: file:///absolute/path/to/file.

MQTTServerCertificate

Opcional. A chave privada que o núcleo usa em combinação com o certificado para atuar como um gateway ou servidor MQTT.

MQTTServerCertificate  .privateKeyPath

O caminho para a chave privada do servidor MQTT local.

Use esse valor para especificar sua própria chave privada para o servidor MQTT local.

Para o armazenamento do sistema de arquivos, deve ser um URI de arquivo no formato: file:///absolute/path/to/file.

Para o armazenamento HSM, deve ser um caminho RFC 7512 PKCS#11 que especifica o rótulo do objeto.

Se essa propriedade é omitida, o AWS IoT Greengrass gira a chave com base em suas configurações de rotação. Se especificado, o cliente será responsável por girar a chave.

SecretsManager The private key that secures the data key used for encryption. For more information, see Implantar segredos no núcleo do AWS IoT Greengrass.
SecretsManager  .privateKeyPath

O caminho para a chave privada do secrets manager local.

Somente uma chave RSA é compatível.

Para o armazenamento do sistema de arquivos, deve ser um URI de arquivo no formato: file:///absolute/path/to/file.

Para o armazenamento HSM, deve ser um caminho RFC 7512 PKCS#11 que especifica o rótulo do objeto. A chave privada deve ser gerada usando o mecanismo de preenchimento PKCS#1 v1.5.

As seguintes propriedades de configuração também são compatíveis:

Campo Descrição Observações
mqttMaxConnectionRetryInterval

Opcional. O intervalo máximo (em segundos) entre novas tentativas de conexão MQTT caso a conexão caia.

Especifique esse valor como um inteiro não assinado. O padrão é 60.

managedRespawn

Opcional. Indica que o atendente OTA precisa executar o código personalizado antes de uma atualização.

Os valores válidos são true ou false. Para ter mais informações, consulte Atualizações OTA do software do AWS IoT Greengrass Core.

writeDirectory

Opcional. O diretório de gravação onde o AWS IoT Greengrass cria todos os recursos de leitura/gravação.

Para ter mais informações, consulte Configurar um diretório de gravação para o AWS IoT Greengrass.

GGC v1.8
{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "hash.cert.pem", "keyPath" : "hash.private.key", "thingArn" : "arn:aws:iot:region:account-id:thing/core-thing-name", "iotHost" : "host-prefix-ats.iot.region.amazonaws.com", "ggHost" : "greengrass-ats.iot.region.amazonaws.com", "keepAlive" : 600 }, "runtime" : { "cgroup" : { "useSystemd" : "yes" } }, "managedRespawn" : false, "crypto" : { "principals" : { "SecretsManager" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key" }, "IoTCertificate" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key", "certificatePath" : "file:///greengrass/certs/hash.cert.pem" } }, "caPath" : "file:///greengrass/certs/root.ca.pem" } }

O arquivo config.json é compatível com as seguintes propriedades.

coreThing

Campo Descrição Observações
caPath

O caminho para o CA raiz da AWS IoT relativo ao diretório /greengrass-root/certs.

Para compatibilidade retroativa com versões anteriores à 1.7.0. Essa propriedade é ignorada quando o objeto crypto está presente.

certPath

O caminho para o certificado de dispositivo de núcleo relativo ao diretório /greengrass-root/certs.

Para compatibilidade retroativa com versões anteriores à 1.7.0. Essa propriedade é ignorada quando o objeto crypto está presente.
keyPath O caminho para a chave privada do núcleo relativo ao diretório /greengrass-root/certs. Para compatibilidade retroativa com versões anteriores à 1.7.0. Essa propriedade é ignorada quando o objeto crypto está presente.
thingArn O nome do recurso da Amazon (ARN) da coisa do AWS IoT que representa o dispositivo de núcleo do AWS IoT Greengrass. Encontre o ARN do seu núcleo no console do AWS IoT Greengrass em Núcleos ou executando o comando aws greengrass get-core-definition-version da CLI.
iotHost O endpoint da AWS IoT.

Encontre o endpoint no console do AWS IoT em Configurações ou executando o comando aws iot describe-endpoint --endpoint-type iot:Data-ATS da CLI.

Este comando retorna o endpoint do Amazon Trust Services (ATS). Para obter mais informações, consulte a documentação de Autenticação do servidor.

ggHost O endpoint da AWS IoT Greengrass.

Este é o seu endpoint iotHost com o prefixo do host substituído pelo greengrass (por exemplo, greengrass-ats.iot.region.amazonaws.com). Use o mesmo Região da AWS que iotHost.

iotMqttPort Opcional. O número da porta usada para comunicação MQTT com AWS IoT. Os valores válidos são 8883 ou 443. O valor padrão é 8883. Para ter mais informações, consulte Conectar-se à porta 443 ou por meio de um proxy de rede.
iotHttpPort Opcional. O número da porta usada para criar as conexões HTTPS para AWS IoT. Os valores válidos são 8443 ou 443. O valor padrão é 8443. Para ter mais informações, consulte Conectar-se à porta 443 ou por meio de um proxy de rede.
ggHttpPort Opcional. O número da porta usada para criar as conexões HTTPS para o serviço AWS IoT Greengrass. Os valores válidos são 8443 ou 443. O valor padrão é 8443. Para ter mais informações, consulte Conectar-se à porta 443 ou por meio de um proxy de rede.
keepAlive Opcional. O período KeepAlive do MQTT, em segundos. O intervalo válido é entre 30 e 1200. O valor padrão é 600.
networkProxy Opcional. Um objeto que define um servidor de proxy para se conectar. O servidor proxy pode ser HTTP ou HTTPS. Para ter mais informações, consulte Conectar-se à porta 443 ou por meio de um proxy de rede.

runtime

Campo Descrição Observações
cgroup
useSystemd Indicates whether your device uses systemd. Valid values are sim or não. Run the check_ggc_dependencies script in Módulo 1 to see if your device uses systemd.

crypto

O objeto crypto é adicionado em v1.7.0. Ele apresenta propriedades que oferecem suporte ao armazenamento da chave privada em um módulo de segurança de hardware (HSM) por meio de PKCS#11 e armazenamento local secreto. Para mais informações, consulte Entidades principais de segurança do núcleo do AWS IoT Greengrass, Integração de segurança de hardware e Implantar segredos no núcleo do AWS IoT Greengrass. Configurações para o armazenamento da chave privada em HSMs ou no sistema de arquivo são compatíveis.

Campo Descrição Observações
caPath

O caminho absoluto para o CA raiz da AWS IoT.

Deve ser um URI de arquivo no formato: file:///absolute/path/to/file.

PKCS11
OpenSSLEngine

Opcional. O caminho absoluto para o arquivo .so do mecanismo OpenSSL para habilitar o suporte PKCS#11 no OpenSSL.

Deve ser um caminho para o arquivo no sistema de arquivos.

Esta propriedade será necessária se você estiver usando o atendente de atualizações OTA do Greengrass com segurança de hardware. Para ter mais informações, consulte Configurar suporte para atualizações OTA (over-the-air).

P11Provider

O caminho absoluto para a biblioteca carregável libdl da implementação PKCS#11.

Deve ser um caminho para o arquivo no sistema de arquivos.

slotLabel

O rótulo de slot usado para identificar o módulo de hardware.

Deve estar em conformidade com as especificações de rótulo PKCS#11.

slotUserPin

O PIN do usuário usado para autenticar o núcleo do Greengrass no módulo.

É necessário ter permissões suficientes para executar C_Sign com as chaves privadas configuradas.

principals
IoTCertificate The certificate and private key that the core uses to make requests to AWS IoT.
IoTCertificate  .privateKeyPath

O caminho para a chave privada do núcleo.

Para o armazenamento do sistema de arquivos, deve ser um URI de arquivo no formato: file:///absolute/path/to/file.

Para o armazenamento HSM, deve ser um caminho RFC 7512 PKCS#11 que especifica o rótulo do objeto.

IoTCertificate  .certificatePath

O caminho absoluto para o certificado do dispositivo do núcleo.

Deve ser um URI de arquivo no formato: file:///absolute/path/to/file.

MQTTServerCertificate

Opcional. A chave privada que o núcleo usa em combinação com o certificado para atuar como um gateway ou servidor MQTT.

MQTTServerCertificate  .privateKeyPath

O caminho para a chave privada do servidor MQTT local.

Use esse valor para especificar sua própria chave privada para o servidor MQTT local.

Para o armazenamento do sistema de arquivos, deve ser um URI de arquivo no formato: file:///absolute/path/to/file.

Para o armazenamento HSM, deve ser um caminho RFC 7512 PKCS#11 que especifica o rótulo do objeto.

Se essa propriedade é omitida, o AWS IoT Greengrass gira a chave com base em suas configurações de rotação. Se especificado, o cliente será responsável por girar a chave.

SecretsManager The private key that secures the data key used for encryption. For more information, see Implantar segredos no núcleo do AWS IoT Greengrass.
SecretsManager  .privateKeyPath

O caminho para a chave privada do secrets manager local.

Somente uma chave RSA é compatível.

Para o armazenamento do sistema de arquivos, deve ser um URI de arquivo no formato: file:///absolute/path/to/file.

Para o armazenamento HSM, deve ser um caminho RFC 7512 PKCS#11 que especifica o rótulo do objeto. A chave privada deve ser gerada usando o mecanismo de preenchimento PKCS#1 v1.5.

As seguintes propriedades de configuração também são compatíveis:

Campo Descrição Observações
mqttMaxConnectionRetryInterval

Opcional. O intervalo máximo (em segundos) entre novas tentativas de conexão MQTT caso a conexão caia.

Especifique esse valor como um inteiro não assinado. O padrão é 60.

managedRespawn

Opcional. Indica que o atendente OTA precisa executar o código personalizado antes de uma atualização.

Os valores válidos são true ou false. Para ter mais informações, consulte Atualizações OTA do software do AWS IoT Greengrass Core.

writeDirectory

Opcional. O diretório de gravação onde o AWS IoT Greengrass cria todos os recursos de leitura/gravação.

Para ter mais informações, consulte Configurar um diretório de gravação para o AWS IoT Greengrass.

GGC v1.7
{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "hash.cert.pem", "keyPath" : "hash.private.key", "thingArn" : "arn:aws:iot:region:account-id:thing/core-thing-name", "iotHost" : "host-prefix-ats.iot.region.amazonaws.com", "ggHost" : "greengrass-ats.iot.region.amazonaws.com", "keepAlive" : 600 }, "runtime" : { "cgroup" : { "useSystemd" : "yes" } }, "managedRespawn" : false, "crypto" : { "principals" : { "SecretsManager" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key" }, "IoTCertificate" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key", "certificatePath" : "file:///greengrass/certs/hash.cert.pem" } }, "caPath" : "file:///greengrass/certs/root.ca.pem" } }

O arquivo config.json é compatível com as seguintes propriedades:

coreThing

Campo Descrição Observações
caPath

O caminho para o CA raiz da AWS IoT relativo ao diretório /greengrass-root/certs.

Para compatibilidade retroativa com versões anteriores à 1.7.0. Essa propriedade é ignorada quando o objeto crypto está presente.

certPath

O caminho para o certificado de dispositivo de núcleo relativo ao diretório /greengrass-root/certs.

Para compatibilidade retroativa com versões anteriores à 1.7.0. Essa propriedade é ignorada quando o objeto crypto está presente.
keyPath O caminho para a chave privada do núcleo relativo ao diretório /greengrass-root/certs. Para compatibilidade retroativa com versões anteriores à 1.7.0. Essa propriedade é ignorada quando o objeto crypto está presente.
thingArn O nome do recurso da Amazon (ARN) da coisa do AWS IoT que representa o dispositivo de núcleo do AWS IoT Greengrass. Encontre o ARN do seu núcleo no console do AWS IoT Greengrass em Núcleos ou executando o comando aws greengrass get-core-definition-version da CLI.
iotHost O endpoint da AWS IoT.

Encontre o endpoint no console do AWS IoT em Configurações ou executando o comando aws iot describe-endpoint --endpoint-type iot:Data-ATS da CLI.

Este comando retorna o endpoint do Amazon Trust Services (ATS). Para obter mais informações, consulte a documentação de Autenticação do servidor.

ggHost O endpoint da AWS IoT Greengrass.

Este é o seu endpoint iotHost com o prefixo do host substituído pelo greengrass (por exemplo, greengrass-ats.iot.region.amazonaws.com). Use o mesmo Região da AWS que iotHost.

iotMqttPort Opcional. O número da porta usada para comunicação MQTT com AWS IoT. Os valores válidos são 8883 ou 443. O valor padrão é 8883. Para ter mais informações, consulte Conectar-se à porta 443 ou por meio de um proxy de rede.
keepAlive Opcional. O período KeepAlive do MQTT, em segundos. O intervalo válido é entre 30 e 1200. O valor padrão é 600.
networkProxy Opcional. Um objeto que define um servidor de proxy para se conectar. O servidor proxy pode ser HTTP ou HTTPS. Para ter mais informações, consulte Conectar-se à porta 443 ou por meio de um proxy de rede.

runtime

Campo Descrição Observações
cgroup
useSystemd Indicates whether your device uses systemd. Valid values are sim or não. Run the check_ggc_dependencies script in Módulo 1 to see if your device uses systemd.

crypto

O objeto crypto, adicionado na v1.7.0, apresenta propriedades que oferecem suporte ao armazenamento da chave privada em um módulo de segurança de hardware (HSM) por meio de PKCS#11 e armazenamento local secreto. Para ter mais informações, consulte Integração de segurança de hardware e Implantar segredos no núcleo do AWS IoT Greengrass. Configurações para o armazenamento da chave privada em HSMs ou no sistema de arquivo são compatíveis.

Campo Descrição Observações
caPath

O caminho absoluto para o CA raiz da AWS IoT.

Deve ser um URI de arquivo no formato: file:///absolute/path/to/file.

PKCS11
OpenSSLEngine

Opcional. O caminho absoluto para o arquivo .so do mecanismo OpenSSL para habilitar o suporte PKCS#11 no OpenSSL.

Deve ser um caminho para o arquivo no sistema de arquivos.

Esta propriedade será necessária se você estiver usando o atendente de atualizações OTA do Greengrass com segurança de hardware. Para ter mais informações, consulte Configurar suporte para atualizações OTA (over-the-air).

P11Provider

O caminho absoluto para a biblioteca carregável libdl da implementação PKCS#11.

Deve ser um caminho para o arquivo no sistema de arquivos.

slotLabel

O rótulo de slot usado para identificar o módulo de hardware.

Deve estar em conformidade com as especificações de rótulo PKCS#11.

slotUserPin

O PIN do usuário usado para autenticar o núcleo do Greengrass no módulo.

É necessário ter permissões suficientes para executar C_Sign com as chaves privadas configuradas.

principals
IoTCertificate The certificate and private key that the core uses to make requests to AWS IoT.
IoTCertificate  .privateKeyPath

O caminho para a chave privada do núcleo.

Para o armazenamento do sistema de arquivos, deve ser um URI de arquivo no formato: file:///absolute/path/to/file.

Para o armazenamento HSM, deve ser um caminho RFC 7512 PKCS#11 que especifica o rótulo do objeto.

IoTCertificate  .certificatePath

O caminho absoluto para o certificado do dispositivo do núcleo.

Deve ser um URI de arquivo no formato: file:///absolute/path/to/file.

MQTTServerCertificate

Opcional. A chave privada que o núcleo usa em combinação com o certificado para atuar como um gateway ou servidor MQTT.

MQTTServerCertificate  .privateKeyPath

O caminho para a chave privada do servidor MQTT local.

Use esse valor para especificar sua própria chave privada para o servidor MQTT local.

Para o armazenamento do sistema de arquivos, deve ser um URI de arquivo no formato: file:///absolute/path/to/file.

Para o armazenamento HSM, deve ser um caminho RFC 7512 PKCS#11 que especifica o rótulo do objeto.

Se essa propriedade é omitida, o AWS IoT Greengrass gira a chave com base em suas configurações de rotação. Se especificado, o cliente será responsável por girar a chave.

SecretsManager The private key that secures the data key used for encryption. For more information, see Implantar segredos no núcleo do AWS IoT Greengrass.
SecretsManager  .privateKeyPath

O caminho para a chave privada do secrets manager local.

Somente uma chave RSA é compatível.

Para o armazenamento do sistema de arquivos, deve ser um URI de arquivo no formato: file:///absolute/path/to/file.

Para o armazenamento HSM, deve ser um caminho RFC 7512 PKCS#11 que especifica o rótulo do objeto. A chave privada deve ser gerada usando o mecanismo de preenchimento PKCS#1 v1.5.

As seguintes propriedades de configuração também são compatíveis:

Campo Descrição Observações
mqttMaxConnectionRetryInterval

Opcional. O intervalo máximo (em segundos) entre novas tentativas de conexão MQTT caso a conexão caia.

Especifique esse valor como um inteiro não assinado. O padrão é 60.

managedRespawn

Opcional. Indica que o atendente OTA precisa executar o código personalizado antes de uma atualização.

Os valores válidos são true ou false. Para ter mais informações, consulte Atualizações OTA do software do AWS IoT Greengrass Core.

writeDirectory

Opcional. O diretório de gravação onde o AWS IoT Greengrass cria todos os recursos de leitura/gravação.

Para ter mais informações, consulte Configurar um diretório de gravação para o AWS IoT Greengrass.

GGC v1.6
{ "coreThing": { "caPath": "root-ca-pem", "certPath": "cloud-pem-crt", "keyPath": "cloud-pem-key", "thingArn": "arn:aws:iot:region:account-id:thing/core-thing-name", "iotHost": "host-prefix.iot.region.amazonaws.com", "ggHost": "greengrass.iot.region.amazonaws.com", "keepAlive": 600, "mqttMaxConnectionRetryInterval": 60 }, "runtime": { "cgroup": { "useSystemd": "yes|no" } }, "managedRespawn": true, "writeDirectory": "/write-directory" }
nota

Se você usar a opção Default Group creation (Criação de grupo padrão) do console do AWS IoT Greengrass, o arquivo config.json será implantado no dispositivo de núcleo em um estado operacional que especifica a configuração padrão.

O arquivo config.json é compatível com as seguintes propriedades:

Campo Descrição Observações
caPath

O caminho para o CA raiz da AWS IoT relativo ao diretório /greengrass-root/certs.

Salve o arquivo em /greengrass-root/certs.

certPath

O caminho para o certificado do núcleo AWS IoT Greengrass relativo ao diretório /greengrass-root/certs.

Salve o arquivo em /greengrass-root/certs.
keyPath O caminho para a chave privada do núcleo AWS IoT Greengrass relativo ao diretório /greengrass-root/certs. Salve o arquivo em /greengrass-root/certs.
thingArn O nome do recurso da Amazon (ARN) da coisa do AWS IoT que representa o dispositivo de núcleo do AWS IoT Greengrass. Encontre o ARN do seu núcleo no console do AWS IoT Greengrass em Núcleos ou executando o comando aws greengrass get-core-definition-version da CLI.
iotHost O endpoint da AWS IoT. Isso pode ser encontrado no console do AWS IoT em Configurações ou executando o comando aws iot describe-endpoint da CLI.
ggHost O endpoint da AWS IoT Greengrass. Esse valor usa o formato greengrass.iot.region.amazonaws.com. Use a mesma região de iotHost.
keepAlive O período KeepAlive do MQTT, em segundos. Esse é um valor opcional. O padrão é 600.
mqttMaxConnectionRetryInterval

O intervalo máximo (em segundos) entre novas tentativas de conexão MQTT caso a conexão caia.

Especifique esse valor como um inteiro não assinado. Esse é um valor opcional. O padrão é 60.

useSystemd Indica se o dispositivo usa systemd. Os valores válidos são yes ou no. Execute o script check_ggc_dependencies no Módulo 1 para ver se o dispositivo usa systemd.
managedRespawn

Um atributo opcional de atualizações over-the-air (OTA), isso indica que o atendente OTA precisa executar o código personalizado antes de uma atualização.

Os valores válidos são true ou false. Para ter mais informações, consulte Atualizações OTA do software do AWS IoT Greengrass Core.

writeDirectory

O diretório de gravação onde o AWS IoT Greengrass cria todos os recursos de leitura/gravação.

Esse é um valor opcional. Para ter mais informações, consulte Configurar um diretório de gravação para o AWS IoT Greengrass.

GGC v1.5
{ "coreThing": { "caPath": "root-ca-pem", "certPath": "cloud-pem-crt", "keyPath": "cloud-pem-key", "thingArn": "arn:aws:iot:region:account-id:thing/core-thing-name", "iotHost": "host-prefix.iot.region.amazonaws.com", "ggHost": "greengrass.iot.region.amazonaws.com", "keepAlive": 600 }, "runtime": { "cgroup": { "useSystemd": "yes|no" } }, "managedRespawn": true }

O arquivo config.json está presente em /greengrass-root/config e contém os seguintes parâmetros:

Campo Descrição Observações
caPath

Caminho para o CA raiz da AWS IoT relativo à pasta /greengrass-root/certs.

Salve o arquivo na pasta /greengrass-root/certs.

certPath

O caminho para o certificado do núcleo AWS IoT Greengrass relativo à pasta /greengrass-root/certs.

Salve o arquivo na pasta /greengrass-root/certs.
keyPath O caminho para a chave privada do núcleo AWS IoT Greengrass relativo à pasta /greengrass-root/certs. Salve o arquivo na pasta /greengrass-root/certs.
thingArn O nome do recurso da Amazon (ARN) da coisa do AWS IoT que representa o dispositivo de núcleo do AWS IoT Greengrass. Encontre o ARN do seu núcleo no console do AWS IoT Greengrass em Núcleos ou executando o comando aws greengrass get-core-definition-version da CLI.
iotHost O endpoint da AWS IoT. Isso pode ser encontrado no console do AWS IoT em Configurações ou executando o comando aws iot describe-endpoint.
ggHost O endpoint da AWS IoT Greengrass. Esse valor usa o formato greengrass.iot.region.amazonaws.com. Use a mesma região de iotHost.
keepAlive O período KeepAlive do MQTT, em segundos. Esse é um valor opcional. O valor padrão é 600 segundos.
useSystemd Indica se o dispositivo usa systemd. Os valores válidos são yes ou no. Execute o script check_ggc_dependencies no Módulo 1 para ver se o dispositivo usa systemd.
managedRespawn

Um atributo opcional de atualizações over-the-air (OTA), isso indica que o atendente OTA precisa executar o código personalizado antes de uma atualização.

Para ter mais informações, consulte Atualizações OTA do software do AWS IoT Greengrass Core.

GGC v1.3
{ "coreThing": { "caPath": "root-ca-pem", "certPath": "cloud-pem-crt", "keyPath": "cloud-pem-key", "thingArn": "arn:aws:iot:region:account-id:thing/core-thing-name", "iotHost": "host-prefix.iot.region.amazonaws.com", "ggHost": "greengrass.iot.region.amazonaws.com", "keepAlive": 600 }, "runtime": { "cgroup": { "useSystemd": "yes|no" } }, "managedRespawn": true }

O arquivo config.json está presente em /greengrass-root/config e contém os seguintes parâmetros:

Campo Descrição Observações
caPath

Caminho para o CA raiz da AWS IoT relativo à pasta /greengrass-root/certs.

Salve o arquivo na pasta /greengrass-root/certs.

certPath

O caminho para o certificado do núcleo AWS IoT Greengrass relativo à pasta /greengrass-root/certs.

Salve o arquivo na pasta /greengrass-root/certs.
keyPath O caminho para a chave privada do núcleo AWS IoT Greengrass relativo à pasta /greengrass-root/certs. Salve o arquivo na pasta /greengrass-root/certs.
thingArn O nome do recurso da Amazon (ARN) da coisa da AWS IoT que representa o núcleo AWS IoT Greengrass. Você pode encontrar esse valor no console do AWS IoT Greengrass sob a definição de coisa da AWS IoT.
iotHost O endpoint da AWS IoT. Você pode encontrar esse valor no console do AWS IoT em Configurações.
ggHost O endpoint da AWS IoT Greengrass. Você pode encontrar esse valor no console do AWS IoT em Configurações com greengrass. pré-associado.
keepAlive O período KeepAlive do MQTT, em segundos. Esse é um valor opcional. O valor padrão é 600 segundos.
useSystemd Um sinalizador binário, se seu dispositivo usar systemd. Os valores são yes ou no. Use o script de dependência no Módulo 1 para ver se seu dispositivo usa systemd.
managedRespawn

Um atributo opcional de atualizações over-the-air (OTA), isso indica que o atendente OTA precisa executar o código personalizado antes de uma atualização.

Para ter mais informações, consulte Atualizações OTA do software do AWS IoT Greengrass Core.

GGC v1.1
{ "coreThing": { "caPath": "root-ca-pem", "certPath": "cloud-pem-crt", "keyPath": "cloud-pem-key", "thingArn": "arn:aws:iot:region:account-id:thing/core-thing-name", "iotHost": "host-prefix.iot.region.amazonaws.com", "ggHost": "greengrass.iot.region.amazonaws.com", "keepAlive": 600 }, "runtime": { "cgroup": { "useSystemd": "yes|no" } } }

O arquivo config.json está presente em /greengrass-root/config e contém os seguintes parâmetros:

Campo Descrição Observações
caPath

Caminho para o CA raiz da AWS IoT relativo à pasta /greengrass-root/certs.

Salve o arquivo na pasta /greengrass-root/certs.

certPath

O caminho para o certificado do núcleo AWS IoT Greengrass relativo à pasta /greengrass-root/certs.

Salve o arquivo na pasta /greengrass-root/certs.
keyPath O caminho para a chave privada do núcleo AWS IoT Greengrass relativo à pasta /greengrass-root/certs. Salve o arquivo na pasta /greengrass-root/certs.
thingArn O nome do recurso da Amazon (ARN) da coisa da AWS IoT que representa o núcleo AWS IoT Greengrass. Você pode encontrar esse valor no console do AWS IoT Greengrass sob a definição de coisa da AWS IoT.
iotHost O endpoint da AWS IoT. Você pode encontrar esse valor no console do AWS IoT em Configurações.
ggHost O endpoint da AWS IoT Greengrass. Você pode encontrar esse valor no console do AWS IoT em Configurações com greengrass. pré-associado.
keepAlive O período KeepAlive do MQTT, em segundos. Esse é um valor opcional. O valor padrão é 600 segundos.
useSystemd Um sinalizador binário, se seu dispositivo usar systemd. Os valores são yes ou no. Use o script de dependência no Módulo 1 para ver se seu dispositivo usa systemd.
GGC v1.0

No AWS IoT Greengrass Core v1.0, config.json é implantado em greengrass-root/configuration.

{ "coreThing": { "caPath": "root-ca-pem", "certPath": "cloud-pem-crt", "keyPath": "cloud-pem-key", "thingArn": "arn:aws:iot:region:account-id:thing/core-thing-name", "iotHost": "host-prefix.iot.region.amazonaws.com", "ggHost": "greengrass.iot.region.amazonaws.com", "keepAlive": 600 }, "runtime": { "cgroup": { "useSystemd": "yes|no" } } }

O arquivo config.json está presente em /greengrass-root/configuration e contém os seguintes parâmetros:

Campo Descrição Observações
caPath

Caminho para o CA raiz da AWS IoT relativo à pasta /greengrass-root/configuration/certs.

Salve o arquivo na pasta /greengrass-root/configuration/certs.

certPath

O caminho para o certificado do núcleo AWS IoT Greengrass relativo à pasta /greengrass-root/configuration/certs.

Salve o arquivo na pasta /greengrass-root/configuration/certs.
keyPath O caminho para a chave privada do núcleo AWS IoT Greengrass relativo à pasta /greengrass-root/configuration/certs. Salve o arquivo na pasta /greengrass-root/configuration/certs.
thingArn O nome do recurso da Amazon (ARN) da coisa da AWS IoT que representa o núcleo AWS IoT Greengrass. Você pode encontrar esse valor no núcleo AWS IoT Greengrass sob a definição de coisa da AWS IoT.
iotHost O endpoint da AWS IoT. Você pode encontrar esse valor no console do AWS IoT em Configurações.
ggHost O endpoint da AWS IoT Greengrass.

Você pode encontrar esse valor no console do AWS IoT em Configurações com greengrass. pré-associado.

keepAlive O período KeepAlive do MQTT, em segundos. Esse é um valor opcional. O valor padrão é 600 segundos.
useSystemd Um sinalizador binário se seu dispositivo usar systemd. Os valores são yes ou no. Use o script de dependência no Módulo 1 para ver se seu dispositivo usa systemd.

Os endpoints do serviço devem corresponder ao tipo de certificado da CA raiz

Os endpoints da AWS IoT Core e do AWS IoT Greengrass devem corresponder ao tipo de certificado CA raiz no dispositivo. Se os endpoints e o tipo de certificado não corresponderem, as tentativas de autenticação entre o dispositivo e o AWS IoT Core ou AWS IoT Greengrass falharão. Para obter mais informações, consulte Autenticação do servidor no Guia do desenvolvedor do AWS IoT.

Se seu dispositivo usar um certificado CA raiz do Amazon Trust Services (ATS), que é o método preferencial, ele também deverá usar endpoints do ATS para gerenciamento do dispositivo e operações de plano de dados de descoberta. Os endpoints do ATS incluem o segmento ats, conforme mostrado na sintaxe a seguir para o endpoint do AWS IoT Core.

prefix-ats.iot.region.amazonaws.com
nota

Para compatibilidade com versões anteriores, atualmente o AWS IoT Greengrass oferece suporte a certificado CA raiz e endpoints VeriSign legados em algumas Região da AWSs. Se você estiver usando um certificado CA raiz legado da VeriSign, recomendamos que crie um endpoint do ATS e use um certificado CA raiz do ATS. Caso contrário, certifique-se de usar os endpoints legados correspondentes. Para obter mais informações, consulte Endpoints legados compatíveis no Referência geral da Amazon Web Services.

Endpoints no config.json

Em um dispositivo de núcleo do Greengrass, os endpoints são especificados no objeto coreThing no arquivo config.json. A propriedade iotHost representa o endpoint do AWS IoT Core. A propriedade ggHost representa o endpoint do AWS IoT Greengrass. No exemplo de trecho a seguir, essas propriedades especificam endpoints do ATS.

{ "coreThing" : { ... "iotHost" : "abcde1234uwxyz-ats.iot.us-west-2.amazonaws.com", "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", ... },
Endpoint do AWS IoT Core

É possível obter o endpoint do AWS IoT Core executando o comando aws iot describe-endpoint da CLI com o parâmetro --endpoint-type adequado.

  • Para retornar um endpoint assinado pelo ATS, execute:

    aws iot describe-endpoint --endpoint-type iot:Data-ATS
  • Para retornar um endpoint legado assinado pela VeriSign, execute:

    aws iot describe-endpoint --endpoint-type iot:Data
Endpoint do AWS IoT Greengrass

O endpoint do AWS IoT Greengrass é o endpoint iotHost com o prefixo de host substituído por greengrass. Por exemplo, o endpoint assinado pelo ATS é greengrass-ats.iot.region.amazonaws.com. Ele usa a mesma região que o endpoint do AWS IoT Core.

Conectar-se à porta 443 ou por meio de um proxy de rede

Esse atributo está disponível para o AWS IoT Greengrass Core v1.7 e posterior.

O Greengrass se comunica com ao AWS IoT Core usando o protocolo de mensagens MQTT com autenticação do cliente TLS. Por convenção, o MQTT sobre TLS usa a porta 8883. No entanto, como uma medida de segurança, ambientes restritivos podem limitar o tráfego de entrada e saída a um pequeno intervalo de portas TCP. Por exemplo, um firewall corporativo pode abrir a porta 443 para o tráfego HTTPS, mas fechar outras portas que são usadas por protocolos menos comuns, como a porta 8883 para tráfego MQTT. Outros ambientes restritivos podem exigir que todo o tráfego passe por um proxy HTTP antes de se conectar à Internet.

Para habilitar a comunicação nesses cenários, o AWS IoT Greengrass permite as seguintes configurações:

  • MQTT com autenticação de cliente TLS na porta 443. Se a rede permitir conexões com a porta 443, você poderá configurar o núcleo para usar a porta 443 para tráfego MQTT em vez da porta 8883 padrão. Isso pode ser uma conexão direta com a porta 443 ou uma conexão por meio de um servidor de proxy de rede.

    O AWS IoT Greengrass usa a extensão TLS da Negociação de protocolo da camada de aplicativos (ALPN) para habilitar essa conexão. Assim como ocorre com a configuração padrão, o MQTT sobre TLS na porta 443 usa autenticação de cliente baseada em certificado.

    Quando configurado para usar uma conexão direta com a porta 443, o núcleo oferece suporte a atualizações OTA (over-the-air) para software do AWS IoT Greengrass. Esse suporte requer AWS IoT Greengrass Core v1.9.3 ou versões posteriores.

  • Comunicação HTTPS na porta 443. O AWS IoT Greengrass envia o tráfego HTTPS pela porta 8443 por padrão, mas você pode configurá-lo para usar a porta 443.

  • Conexão por meio de um proxy de rede. É possível configurar um servidor de proxy de rede para atuar como intermediário para se conectar ao núcleo do Greengrass. Somente a autenticação básica e os proxies HTTP e HTTPS são compatíveis.

    A configuração de proxy é transmitida para funções do Lambda definidas pelo usuário por meio das variáveis de ambiente http_proxy, https_proxy e no_proxy. As funções do Lambda definidas pelo usuário devem usar essas configurações transmitidas para conectarem-se pelo proxy. As bibliotecas comuns usadas por funções do Lambda para fazer conexões (como boto3 ou cURL e pacotes requests python) normalmente usam essas variáveis de ambiente por padrão. Se uma função do Lambda também especifica essas mesmas variáveis de ambiente, o AWS IoT Greengrass não as substitui.

    Importante

    Os núcleos do Greengrass que são configurados para usar um proxy de rede não oferecem suporte a atualizações OTA (over-the-air).

Para configurar o MQTT na porta 443

Esse atributo exige a versão 1.7 ou posterior do AWS IoT Greengrass Core.

Este procedimento permite que o núcleo do Greengrass use a porta 443 para mensagens MQTT com o AWS IoT Core.

  1. Execute o comando a seguir para interromper o daemon do Greengrass:

    cd /greengrass-root/ggc/core/ sudo ./greengrassd stop
  2. Abra greengrass-root/config/config.json para editar como o usuário su.

  3. No objeto coreThing, adicione a propriedade iotMqttPort e defina o valor 443, conforme exibido no seguinte exemplo.

    { "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com", "iotMqttPort" : 443, "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", "keepAlive" : 600 }, ... }
  4. Inicie o daemon.

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start

 

Para configurar o HTTPS na porta 443

Esse atributo exige a versão 1.8 ou posterior do AWS IoT Greengrass Core.

Esse procedimento configura o núcleo para usar a porta 443 para comunicação HTTPS.

  1. Execute o comando a seguir para interromper o daemon do Greengrass:

    cd /greengrass-root/ggc/core/ sudo ./greengrassd stop
  2. Abra greengrass-root/config/config.json para editar como o usuário su.

  3. No objeto coreThing, adicione as propriedades iotHttpPort e ggHttpPort, conforme exibido no exemplo a seguir.

    { "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com", "iotHttpPort" : 443, "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", "ggHttpPort" : 443, "keepAlive" : 600 }, ... }
  4. Inicie o daemon.

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start

 

Para configurar um proxy de rede

Esse atributo exige a versão 1.7 ou posterior do AWS IoT Greengrass Core.

Este procedimento permite que o AWS IoT Greengrass se conecte à Internet por meio de um proxy de rede HTTP ou HTTPS.

  1. Execute o comando a seguir para interromper o daemon do Greengrass:

    cd /greengrass-root/ggc/core/ sudo ./greengrassd stop
  2. Abra greengrass-root/config/config.json para editar como o usuário su.

  3. No objeto coreThing, adicione o objeto networkProxy, conforme mostrado no exemplo a seguir.

    { "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com", "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", "keepAlive" : 600, "networkProxy": { "noProxyAddresses" : "http://128.12.34.56,www.mywebsite.com", "proxy" : { "url" : "https://my-proxy-server:1100", "username" : "Mary_Major", "password" : "pass@word1357" } } }, ... }
  4. Inicie o daemon.

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start

Objeto networkProxy

Use o objeto networkProxy para especificar informações sobre o proxy de rede. Esse objeto tem as seguintes propriedades.

Campo Descrição
noProxyAddresses

Opcional. Uma lista separada por vírgulas de endereços IP ou nomes de host isentos do proxy.

proxy

O proxy para se conectar. Um proxy tem as seguintes propriedades.

  • url. O URL do servidor de proxy, no formato scheme://userinfo@host:port.

    • scheme. O esquema. Precisa ser http ou https.

    • userinfo. Opcional. As informações de nome de usuário e senha. Se especificados, os campos password e username são ignorados.

    • host. O nome do host ou endereço IP do servidor de proxy.

    • port. Opcional. O número da porta. Se não for especificado, os seguintes valores padrão serão usados:

      • http: 80

      • https: 443

  • username. Opcional. O nome do usuário a usar para a autenticação no servidor de proxy.

  • password. Opcional. A senha a usar para a autenticação no servidor de proxy.

Permitir endpoints

A comunicação entre os Dispositivos Greengrass e o AWS IoT Core ou o AWS IoT Greengrass deve ser autenticada. Esta autenticação é baseada nos certificados e nas chaves criptográficas do dispositivo X.509 registrado. Para permitir que as solicitações autenticadas passem pelos proxies sem criptografia adicional, aprove os endpoints a seguir.

Endpoint Port (Porta) Descrição
greengrass.region.amazonaws.com 443

Usado para operações de ambiente de gerenciamento para gerenciamento de grupos.

prefix-ats.iot.region.amazonaws.com

ou

prefix.iot.region.amazonaws.com

MQTT: 8883 ou 443

HTTPS: 8443 ou 443

Usado para operações de plano de dados para o gerenciamento de dispositivos, como sincronização de sombra.

Permite o uso de um ou ambos endpoints, dependendo se os dispositivos cliente e o núcleo usam os certificados CA raiz Amazon Trust Services (preferido), certificados CA raiz legados, ou ambos. Para ter mais informações, consulte Os endpoints do serviço devem corresponder ao tipo de certificado da CA raiz.

greengrass-ats.iot.region.amazonaws.com

ou

greengrass.iot.region.amazonaws.com

8443 ou 443

Usado para operações de descoberta de dispositivo.

Permite o uso de um ou ambos endpoints, dependendo se os dispositivos cliente e o núcleo usam os certificados CA raiz Amazon Trust Services (preferido), certificados CA raiz legados, ou ambos. Para ter mais informações, consulte Os endpoints do serviço devem corresponder ao tipo de certificado da CA raiz.

nota

Os clientes que se conectam na porta 443 devem implementar a extensão TLS do Application Layer Protocol Negotiation (ALPN) e passar x-amzn-http-ca como o ProtocolName no ProtocolNameList. Para obter mais informações, consulte Protocolos no Guia do desenvolvedor do AWS IoT.

*.s3.amazonaws.com 443

Usado para operações de implantação e atualizações over-the-air (OTA). Este formato inclui o caractere *, porque os prefixos de endpoint são controlados internamente e podem mudar a qualquer momento.

logs.region.amazonaws.com 443

Obrigatório se o grupo do Greengrass estiver configurado para gravar logs no CloudWatch.

Configurar um diretório de gravação para o AWS IoT Greengrass

Esse atributo está disponível para o AWS IoT Greengrass Core v1.6 e posterior.

Por padrão, o software do núcleo do AWS IoT Greengrass é implantado em um único diretório raiz onde o AWS IoT Greengrass realiza todas as operações de leitura e gravação. No entanto, você pode configurar o AWS IoT Greengrass para usar um diretório à parte para todas as operações de gravação, inclusive a criação de diretórios e arquivos. Nesse caso, o AWS IoT Greengrass usa dois diretórios de nível superior:

  • O diretório greengrass-root, que você pode deixar como leitura/gravação ou, como opção, somente leitura. Isso contém o software do núcleo do AWS IoT Greengrass e outros componentes críticos que devem permanecer imutáveis durante o runtime, como certificados e config.json.

  • O diretório de gravação especificado. Isso contém conteúdo gravável, como logs, informações de estado e funções do Lambda definidas pelo usuário implantadas.

Essa configuração resulta na estrutura de diretórios a seguir.

Diretório raiz do Greengrass
greengrass-root/ |-- certs/ | |-- root.ca.pem | |-- hash.cert.pem | |-- hash.private.key | |-- hash.public.key |-- config/ | |-- config.json |-- ggc/ | |-- packages/ | |-- package-version/ | |-- bin/ | |-- daemon | |-- greengrassd | |-- lambda/ | |-- LICENSE/ | |-- release_notes_package-version.html | |-- runtime/ | |-- java8/ | |-- nodejs8.10/ | |-- python3.8/ | |-- core/
Diretório de gravação
write-directory/ |-- packages/ | |-- package-version/ | |-- ggc_root/ | |-- rootfs_nosys/ | |-- rootfs_sys/ | |-- var/ |-- deployment/ | |-- group/ | |-- group.json | |-- lambda/ | |-- mlmodel/ |-- var/ | |-- log/ | |-- state/

 

Para configurar um diretório de gravação
  1. Execute o seguinte comando para interromper o daemon do AWS IoT Greengrass:

    cd /greengrass-root/ggc/core/ sudo ./greengrassd stop
  2. Abra greengrass-root/config/config.json para editar como o usuário su.

  3. Adicione writeDirectory como parâmetro e especifique o caminho para o diretório de destino, conforme mostrado no exemplo a seguir.

    { "coreThing": { "caPath": "root-CA.pem", "certPath": "hash.pem.crt", ... }, ... "writeDirectory" : "/write-directory" }
    nota

    Você poderá atualizar a configuração writeDirectory sempre que quiser. Depois que a configuração for atualizada, o AWS IoT Greengrass usará o diretório de gravação recém-especificado na próxima inicialização, mas não migrará o conteúdo do diretório de gravação anterior.

  4. Agora que o diretório de gravação está configurado, você pode tornar o diretório greengrass-root somente leitura. Para obter instruções, consulte Para tornar o diretório raiz do Greengrass somente leitura.

    Do contrário, inicie o daemon do AWS IoT Greengrass:

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start

 

Para tornar o diretório raiz do Greengrass somente leitura

Siga essas etapas somente se você quiser tornar o diretório raiz do Greengrass somente leitura. O diretório de gravação deve estar configurado antes de você começar.

  1. Conceder permissões de acesso a diretórios necessários:

    1. Dê permissões de leitura e gravação ao proprietário config.json.

      sudo chmod 0600 /greengrass-root/config/config.json
    2. Torne ggc_user o proprietário das certificações e dos diretórios Lambda do sistema.

      sudo chown -R ggc_user:ggc_group /greengrass-root/certs/ sudo chown -R ggc_user:ggc_group /greengrass-root/ggc/packages/1.11.6/lambda/
      nota

      As contas ggc_user e ggc_group são usadas por padrão para executar funções do Lambda do sistema. Se você configurou a identidade de acesso padrão no nível do grupo para usar contas diferentes, em vez disso, deve conceder permissões a esse usuário (UID) e grupo (GID).

  2. Torne o diretório greengrass-root somente leitura usando o mecanismo preferido.

    nota

    Uma maneira de tornar o diretório greengrass-root somente leitura é montar o diretório como somente leitura. No entanto, para aplicar atualizações Over-The-Air (OTA – Pelo ar) ao software do núcleo do AWS IoT Greengrass em um diretório montado, o diretório deve ser inicialmente desmontado e, em seguida, remontado após a atualização. Você pode adicionar essas operações umount e mount aos scripts ota_pre_update e ota_post_update. Para obter mais informações sobre atualizações OTA, consulte Agente de atualizações OTA do Greengrass e Respawn gerenciado com atualizações OTA.

  3. Inicie o daemon.

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start

    Se as permissões da etapa 1 não forem definidas corretamente, o daemon não será iniciado.

Definir configurações MQTT

No ambiente AWS IoT Greengrass, dispositivos cliente, funções do Lambda, conectores e componentes do sistema podem se comunicar entre si e com a AWS IoT Core. Toda a comunicação passa pelo núcleo, que gerencia as assinaturas que autorizam a comunicação MQTT entre entidades.

Para obter informações sobre as configurações MQTT que você pode definir para o AWS IoT Greengrass, consulte as seguintes seções:

nota

O OPC-UA é um padrão de intercâmbio de informações para a comunicação industrial. Para implementar suporte para OPC-UA no núcleo do Greengrass, é possível usar o conector do IoT SiteWise . O conector envia dados de dispositivos industriais de servidores OPC-UA para propriedades de ativos no AWS IoT SiteWise.

Enviar mensagem sobre a qualidade de serviço

O AWS IoT Greengrass suporta níveis de qualidade de serviço (QoS) 0 ou 1, dependendo da sua configuração e do destino e direção da comunicação. O núcleo do Greengrass atua como um cliente para a comunicação com o AWS IoT Core e um atendente de mensagens para comunicação na rede local.

O núcleo como cliente e atendente de mensagens local.

Para obter mais informações sobre o MQTT e QoS, consulte Introdução no site do MQTT.

Comunicação com o Nuvem AWS
  • Mensagens de saída usam QoS 1

    O núcleo envia mensagens para destinos da Nuvem AWS usando QoS 1. O AWS IoT Greengrass usa uma fila de mensagens MQTT para processar essas mensagens. Se a entrega da mensagem não for confirmada pelo AWS IoT, a mensagem será armazenada em spool para uma nova tentativa posteriormente. A mensagem não pode ser repetida se a fila estiver cheia. A confirmação de entrega de mensagens pode ajudar a minimizar a perda de dados devido à conectividade intermitente.

    Como as mensagens de saída para AWS IoT usam QoS 1, a taxa máxima na qual o núcleo do Greengrass pode enviar mensagens depende da latência entre o núcleo e AWS IoT. Cada vez que o núcleo envia uma mensagem, ele espera até AWS IoT confirmar a mensagem antes de enviar a próxima mensagem. Por exemplo, se o tempo de ida e volta entre o núcleo e o seu Região da AWS for de 50 milissegundos, o núcleo poderá enviar até 20 mensagens por segundo. Considere esse comportamento ao escolher o Região da AWS onde seu núcleo se conecta. Para ingerir dados do IoT de alto volume para o Nuvem AWS, você pode usar o gerenciador de fluxo.

    Para obter mais informações sobre a fila de mensagens MQTT, incluindo como configurar um cache de armazenamento local que pode persistir mensagens para destinos da Nuvem AWS, consulte Fila de mensagens MQTT para destinos de nuvem.

  • As mensagens de entrada usam QoS 0 (padrão) ou QoS 1

    Por padrão, o núcleo se inscreve com QoS 0 para mensagens de fontes da Nuvem AWS. Se você habilitar sessões persistentes, o núcleo se inscreverá com QoS 1. Isso pode ajudar a minimizar a perda de dados devido à conectividade intermitente. Para gerenciar a QoS para essas assinaturas, defina as configurações de persistência no componente de sistema do spooler local.

    Para obter mais informações, incluindo como permitir que o núcleo estabeleça uma sessão persistente com destinos da Nuvem AWS, consulte Sessões persistentes do MQTT com o AWS IoT Core.

Comunicação com os destinos locais

Toda comunicação local usa QoS 0. O núcleo tenta enviar uma mensagem para um destino local, que pode ser uma função do Lambda do Greengrass, um conector ou um dispositivo cliente. O núcleo não armazena mensagens nem confirma a entrega. As mensagens podem ser descartadas em qualquer lugar entre os componentes.

nota

Embora a comunicação direta entre funções do Lambda não use mensagens MQTT, o comportamento é o mesmo.

Fila de mensagens MQTT para destinos de nuvem

As mensagens MQTT para destinos de Nuvem AWS são enfileiradas para aguardar processamento. As mensagens enfileiradas são processadas na ordem First In First Out (FIFO – Primeiro a entrar, primeiro a sair). Depois de ser processada e publicada no AWS IoT Core, a mensagem será removida da fila.

Por padrão, o núcleo do Greengrass armazena mensagens não processadas na memória para destinos da Nuvem AWS. Em vez disso, você pode configurar o núcleo para armazenar mensagens não processadas em um cache de armazenamento local. Diferentemente do armazenamento na memória, o cache de armazenamento local tem a capacidade de se manter em reinicializações básicas (por exemplo, após uma implantação em grupo ou uma reinicialização do dispositivo). Dessa maneira, o AWS IoT Greengrass pode continuar processando as mensagens. Você também pode configurar o tamanho do armazenamento.

Atenção

O núcleo do Greengrass pode enfileirar mensagens MQTT duplicadas quando perde a conexão, porque ele tenta novamente uma operação de publicação antes que o cliente MQTT detecte que está off-line. Para evitar mensagens MQTT duplicadas para destinos na nuvem, configure o valor keepAlive do núcleo para menos da metade de seu valor mqttOperationTimeout. Para ter mais informações, consulte Arquivo de configuração de núcleo do AWS IoT Greengrass.

O AWS IoT Greengrass usa o componente do sistema spooler (a função GGCloudSpooler do Lambda) para gerenciar a fila de mensagens. Você pode usar as seguintes variáveis de ambiente GGCloudSpooler para definir as configurações de armazenamento.

  • GG_CONFIG_STORAGE_TYPE. O local da fila de mensagens. Estes são valores válidos:

    • FileSystem. Armazena mensagens não processadas no cache de armazenamento local no disco do dispositivo de núcleo físico. Quando o núcleo é reiniciado, as mensagens são mantidas na fila para processamento. As mensagens serão removidas depois de serem processadas.

    • Memory (padrão). Armazene mensagens não processadas na memória. Quando o núcleo é reiniciado, as mensagens enfileiradas são perdidas.

      Essa opção é otimizado para dispositivos com recursos de hardware restritos. Ao usar essa configuração, recomendamos que você implante grupos ou reinicie o dispositivo quando a interrupção do serviço é a mais baixa.

  • GG_CONFIG_MAX_SIZE_BYTES. O tamanho de armazenamento, em bytes. Esse valor pode ser qualquer inteiro não negativo maior que ou igual a 262144 (256 KB); um tamanho menor impede que o software do núcleo do AWS IoT Greengrass seja iniciado. O tamanho padrão é 2,5 MB. Quando o limite de tamanho é atingido, as mensagens enfileiradas anteriores são substituídas por novas mensagens.

nota

Esse atributo está disponível para o AWS IoT Greengrass Core v1.6 e posterior. As versões anteriores usam o armazenamento na memória com um tamanho de fila de 2,5 MB. Você não pode definir configurações de armazenamento para versões anteriores.

Como armazenar mensagens em cache no armazenamento local

Você pode configurar o AWS IoT Greengrass para armazenar em cache mensagens no sistema de arquivos, de maneira que elas persistam entre reinicializações do núcleo. Para fazer isso, implante uma versão de definição de função em que a função GGCloudSpooler defina o tipo de armazenamento como FileSystem. Você deve usar a API do AWS IoT Greengrass para configurar o cache de armazenamento local. Você pode fazer isso no console.

O procedimento a seguir usa o comando da CLI create-function-definition-version para configurar o spooler a fim de salvar mensagens enfileiradas no sistema de arquivos. Ele também configura um tamanho de fila de 2,6 MB.

  1. Obtenha os IDs do grupo do Greengrass de destino e a versão do grupo. Esse procedimento pressupõe que esse seja o grupo e a versão mais recente do grupo. A consulta a seguir retorna o grupo criado mais recentemente.

    aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"

    Ou é possível consultar por nome. Os nomes de grupo não precisam ser exclusivos, portanto, vários grupos podem ser retornados.

    aws greengrass list-groups --query "Groups[?Name=='MyGroup']"
    nota

    Também é possível encontrar esses valores no console do AWS IoT. O ID do grupo é exibido na página Settings (Configurações) do grupo. Os IDs de versão do grupo são exibidos na guia Implantações do grupo.

  2. Copie os valores Id e LatestVersion do grupo de destino na saída.

  3. Obtenha a versão do grupo mais recente.

    • Substitua group-id pelo Id que você copiou.

    • Substitua latest-group-version-id pelo LatestVersion que você copiou.

    aws greengrass get-group-version \ --group-id group-id \ --group-version-id latest-group-version-id
  4. No objeto Definition da saída, copie CoreDefinitionVersionArn e os ARNs de todos os outros componentes do grupo, exceto FunctionDefinitionVersionArn. Você usa esses valores ao criar uma nova versão do grupo.

  5. No FunctionDefinitionVersionArn na saída, copie o ID da definição de função. O ID é o GUID que segue o segmento functions no ARN, conforme mostrado no exemplo a seguir.

    arn:aws:greengrass:us-west-2:123456789012:/greengrass/definition/functions/bcfc6b49-beb0-4396-b703-6dEXAMPLEcu5/versions/0f7337b4-922b-45c5-856f-1aEXAMPLEsf6
    nota

    Ou você pode criar uma definição de função executando o comando create-function-definition e copiar o ID da saída.

  6. Adicione uma versão de definição de função à definição da função.

    • Substitua function-definition-id pelo Id copiado para a definição de função.

    • Substitua arbitrary-function-id por um nome da função, como spooler-function.

    • Adicione todas as funções do Lambda que você deseja incluir nesta versão para a matriz functions. Você pode usar o comando get-function-definition-version para obter as funções do Lambda do Greengrass de uma versão de definição da função existente.

    Atenção

    Não se esqueça de especificar um valor para GG_CONFIG_MAX_SIZE_BYTES que seja maior que ou igual a 262.144. Um tamanho menor impede que o software do núcleo do AWS IoT Greengrass seja iniciado.

    aws greengrass create-function-definition-version \ --function-definition-id function-definition-id \ --functions '[{"FunctionArn": "arn:aws:lambda:::function:GGCloudSpooler:1","FunctionConfiguration": {"Environment": {"Variables":{"GG_CONFIG_MAX_SIZE_BYTES":"2621440","GG_CONFIG_STORAGE_TYPE":"FileSystem"}},"Executable": "spooler","MemorySize": 32768,"Pinned": true,"Timeout": 3},"Id": "arbitrary-function-id"}]'
    nota

    Se você definiu anteriormente a variável de ambiente GG_CONFIG_SUBSCRIPTION_QUALITY para oferecer suporte às sessões persistentes com o AWS IoT Core, inclua a varável nessa instância de função.

  7. Copie o Arn da versão da definição de função da saída.

  8. Crie uma versão do grupo que contém a função do Lambda definida pelo sistema.

    • Substitua group-id pelo Id do grupo.

    • Substitua core-definition-version-arn pelo CoreDefinitionVersionArn copiado da versão do grupo mais recente.

    • Substitua function-definition-version-arn pelo Arn copiado para a nova versão da definição de função.

    • Substitua os ARNs de outros componentes do grupo (por exemplo, SubscriptionDefinitionVersionArn ou DeviceDefinitionVersionArn) que você copiou na versão do grupo mais recente.

    • Remova todos os parâmetros inutilizados. Por exemplo, remova a versão --resource-definition-version-arn caso a versão do grupo não contenha recursos.

    aws greengrass create-group-version \ --group-id group-id \ --core-definition-version-arn core-definition-version-arn \ --function-definition-version-arn function-definition-version-arn \ --device-definition-version-arn device-definition-version-arn \ --logger-definition-version-arn logger-definition-version-arn \ --resource-definition-version-arn resource-definition-version-arn \ --subscription-definition-version-arn subscription-definition-version-arn
  9. Copie a Version da saída. Este é o ID da nova versão do grupo.

  10. Implante o grupo com a nova versão do grupo.

    • Substitua group-id pelo Id que você copiou para o grupo.

    • Substitua group-version-id pelo Version copiado para a nova versão do grupo.

    aws greengrass create-deployment \ --group-id group-id \ --group-version-id group-version-id \ --deployment-type NewDeployment

Para atualizar as configurações de armazenamento, você usa a API do AWS IoT Greengrass para criar uma nova versão de definição da função que contém a função GGCloudSpooler com a configuração atualizada. Em seguida, adicione a versão de definição da função a uma nova versão do grupo (com os outros componentes do grupo) e implantar a versão do grupo. Se quiser restaurar a configuração padrão, você poderá implantar uma versão de definição da função que não inclua a função GGCloudSpooler.

Essa função do Lambda do sistema não está visível no console. No entanto, depois que a função for adicionada à versão do grupo mais recente, ela será incluída em implantações que você fizer no console, a menos que você use a API para substituir ou removê-la.

Sessões persistentes do MQTT com o AWS IoT Core

Esse atributo está disponível para o AWS IoT Greengrass Core v1.10 e posterior.

Um núcleo do Greengrass pode estabelecer uma sessão persistente com o atendente de mensagens do AWS IoT. Uma sessão persistente é uma conexão contínua que permite que o núcleo receba mensagens enviadas enquanto ele está off-line. O núcleo é o cliente na conexão.

Em uma sessão persistente, o atendente de mensagens do AWS IoT salva todas as inscrições feitas pelo cliente durante a conexão. Se o núcleo se desconectar, o atendente de mensagens do AWS IoT armazenará as mensagens novas e não confirmadas publicadas como QoS 1 e aquelas com destino local, como funções do Lambda e dispositivos cliente. Quando o núcleo se reconectar, a sessão persistente será retomada e o atendente de mensagens do AWS IoT enviará as mensagens armazenadas ao núcleo a uma taxa máxima de 10 mensagens por segundo. As sessões persistentes têm um período de expiração padrão de 1 hora, que tem início quando o atendente de mensagens detecta que o núcleo se desconectou. Para obter mais informações, consulte Sessões Persistentes do MQTT no Guia do desenvolvedor do AWS IoT.

AWS IoT Greengrass usa o componente do sistema spooler (a função GGCloudSpooler do Lambda) para criar assinaturas que têm AWS IoT como origem. Você pode usar a seguinte variável de ambiente GGCloudSpooler para configurar sessões persistentes.

  • GG_CONFIG_SUBSCRIPTION_QUALITY. A qualidade das assinaturas que têm AWS IoT como origem. Estes são valores válidos:

    • AtMostOnce (padrão). Desabilita sessões persistentes. As assinaturas usam QoS 0.

    • AtLeastOncePersistent. Habilita sessões persistentes. Define o sinalizador cleanSession como 0 em mensagens CONNECT e se inscreve com QoS 1.

      As mensagens publicadas com QoS 1 recebidas pelo núcleo têm a garantia de alcançar a fila de trabalho na memória do daemon do Greengrass. O núcleo reconhece a mensagem depois que ela é adicionada à fila. A comunicação subsequente da fila para o destino local (por exemplo, função, conector ou dispositivo do Lambda do Greengrass) é enviada como QoS 0. O AWS IoT Greengrass não garante a entrega para destinos locais.

      nota

      Você pode usar a propriedade de configuração MaxWorkItemCount para controlar o tamanho da fila de itens de trabalho. Por exemplo, você pode aumentar o tamanho da fila se sua carga de trabalho exigir tráfego MQTT pesado.

      Quando as sessões persistentes estão habilitadas, o núcleo abre pelo menos uma conexão adicional para troca de mensagens MQTT com a AWS IoT. Para ter mais informações, consulte IDs de cliente para conexões MQTT com o AWS IoT.

Como configurar sessões persistentes do MQTT

É possível configurar o AWS IoT Greengrass para usar sessões persistentes com o AWS IoT Core. Para fazer isso, implante uma versão de definição de função em que a função GGCloudSpooler defina a qualidade da assinatura como AtLeastOncePersistent. Essa definição se aplica a todas as assinaturas que tenham o AWS IoT Core (cloud) como origem. Você deve usar a API do AWS IoT Greengrass para configurar sessões persistentes. Você pode fazer isso no console.

O procedimento a seguir usa o comando da CLI create-function-definition-version para configurar o spooler de modo a usar sessões persistentes. Nesse procedimento, estamos supondo que você esteja atualizando a configuração da versão do grupo mais recente de um grupo existente.

  1. Obtenha os IDs do grupo do Greengrass de destino e a versão do grupo. Esse procedimento pressupõe que esse seja o grupo e a versão mais recente do grupo. A consulta a seguir retorna o grupo criado mais recentemente.

    aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"

    Ou é possível consultar por nome. Os nomes de grupo não precisam ser exclusivos, portanto, vários grupos podem ser retornados.

    aws greengrass list-groups --query "Groups[?Name=='MyGroup']"
    nota

    Também é possível encontrar esses valores no console do AWS IoT. O ID do grupo é exibido na página Settings (Configurações) do grupo. Os IDs de versão do grupo são exibidos na guia Implantações do grupo.

  2. Copie os valores Id e LatestVersion do grupo de destino na saída.

  3. Obtenha a versão do grupo mais recente.

    • Substitua group-id pelo Id que você copiou.

    • Substitua latest-group-version-id pelo LatestVersion que você copiou.

    aws greengrass get-group-version \ --group-id group-id \ --group-version-id latest-group-version-id
  4. No objeto Definition da saída, copie CoreDefinitionVersionArn e os ARNs de todos os outros componentes do grupo, exceto FunctionDefinitionVersionArn. Você usa esses valores ao criar uma nova versão do grupo.

  5. No FunctionDefinitionVersionArn na saída, copie o ID da definição de função. O ID é o GUID que segue o segmento functions no ARN, conforme mostrado no exemplo a seguir.

    arn:aws:greengrass:us-west-2:123456789012:/greengrass/definition/functions/bcfc6b49-beb0-4396-b703-6dEXAMPLEcu5/versions/0f7337b4-922b-45c5-856f-1aEXAMPLEsf6
    nota

    Ou você pode criar uma definição de função executando o comando create-function-definition e copiar o ID da saída.

  6. Adicione uma versão de definição de função à definição da função.

    • Substitua function-definition-id pelo Id copiado para a definição de função.

    • Substitua arbitrary-function-id por um nome da função, como spooler-function.

    • Adicione todas as funções do Lambda que você deseja incluir nesta versão para a matriz functions. Você pode usar o comando get-function-definition-version para obter as funções do Lambda do Greengrass de uma versão de definição da função existente.

    aws greengrass create-function-definition-version \ --function-definition-id function-definition-id \ --functions '[{"FunctionArn": "arn:aws:lambda:::function:GGCloudSpooler:1","FunctionConfiguration": {"Environment": {"Variables":{"GG_CONFIG_SUBSCRIPTION_QUALITY":"AtLeastOncePersistent"}},"Executable": "spooler","MemorySize": 32768,"Pinned": true,"Timeout": 3},"Id": "arbitrary-function-id"}]'
    nota

    Se você definiu anteriormente as variáveis de ambiente GG_CONFIG_STORAGE_TYPE ou GG_CONFIG_MAX_SIZE_BYTES para definir configurações de armazenamento, inclua as varáveis nessa instância de função.

  7. Copie o Arn da versão da definição de função da saída.

  8. Crie uma versão do grupo que contém a função do Lambda definida pelo sistema.

    • Substitua group-id pelo Id do grupo.

    • Substitua core-definition-version-arn pelo CoreDefinitionVersionArn copiado da versão do grupo mais recente.

    • Substitua function-definition-version-arn pelo Arn copiado para a nova versão da definição de função.

    • Substitua os ARNs de outros componentes do grupo (por exemplo, SubscriptionDefinitionVersionArn ou DeviceDefinitionVersionArn) que você copiou na versão do grupo mais recente.

    • Remova todos os parâmetros inutilizados. Por exemplo, remova a versão --resource-definition-version-arn caso a versão do grupo não contenha recursos.

    aws greengrass create-group-version \ --group-id group-id \ --core-definition-version-arn core-definition-version-arn \ --function-definition-version-arn function-definition-version-arn \ --device-definition-version-arn device-definition-version-arn \ --logger-definition-version-arn logger-definition-version-arn \ --resource-definition-version-arn resource-definition-version-arn \ --subscription-definition-version-arn subscription-definition-version-arn
  9. Copie a Version da saída. Este é o ID da nova versão do grupo.

  10. Implante o grupo com a nova versão do grupo.

    • Substitua group-id pelo Id que você copiou para o grupo.

    • Substitua group-version-id pelo Version copiado para a nova versão do grupo.

    aws greengrass create-deployment \ --group-id group-id \ --group-version-id group-version-id \ --deployment-type NewDeployment
  11. (Opcional) Aumente a propriedade MaxWorkItemCount no arquivo de configuração de núcleo. Isso pode ajudar o núcleo a lidar com o aumento do tráfego MQTT e a comunicação com destinos locais.

Para atualizar o núcleo de acordo com essas alterações de configuração, use a API do AWS IoT Greengrass para criar uma nova versão de definição da função que contenha a função GGCloudSpooler com a configuração atualizada. Em seguida, adicione a versão de definição da função a uma nova versão do grupo (com os outros componentes do grupo) e implantar a versão do grupo. Se quiser restaurar a configuração padrão, você poderá criar uma versão de definição da função que não inclua a função GGCloudSpooler.

Essa função do Lambda do sistema não está visível no console. No entanto, depois que a função for adicionada à versão do grupo mais recente, ela será incluída em implantações que você fizer no console, a menos que você use a API para substituir ou removê-la.

IDs de cliente para conexões MQTT com o AWS IoT

Esse atributo está disponível para o AWS IoT Greengrass Core v1.8 e posterior.

O Greengrass abre conexões MQTT com o AWS IoT Core para operações, como a sincronização de shadow e o gerenciamento de certificados. Para essas conexões, o núcleo gera IDs de cliente previsíveis com base no nome da coisa. IDs de clientes previsíveis podem ser usadas com atributos de monitoramento, auditoria e precificação, incluindo AWS IoT Device Defender e eventos de ciclo de vida do AWS IoT. Você também pode criar uma lógica em torno de IDs de cliente previsíveis (por exemplo, modelos de política de assinatura com base em atributos de certificado).

GGC v1.9 and later

Dois componentes do sistema do Greengrass abrem conexões MQTT com o AWS IoT Core. Esses componentes usam os padrões a seguir para gerar os IDs de cliente para as conexões.

Operation Padrão de ID de cliente
Implantações

core-thing-name

Exemplo: MyCoreThing

Use esse ID de cliente para se conectar, desconectar, assinar e cancelar a assinatura de notificações de eventos de ciclo de vida.

Assinaturas

core-thing-name-cn

Exemplo: MyCoreThing-c01

n é um número inteiro que começa com 00 e é incrementado a cada nova conexão até um número máximo de 250. O número de conexões é determinado pelo número de dispositivos que sincronizam o estado de shadow com o AWS IoT Core (máximo de 2.500 por grupo) e o número de assinaturas com cloud como origem no grupo (máximo de 10.000 por grupo).

O componente do sistema de spooler se conecta com o AWS IoT Core para trocar mensagens de assinaturas com uma nuvem de origem ou de destino. O spooler também atua como proxy para trocar mensagens entre o AWS IoT Core e o serviço de shadow local e gerenciador de certificados do dispositivo.

Para calcular o número de conexões MQTT por grupo, use a seguinte fórmula:

number of MQTT connections per group = number of connections for Deployment Agent + number of connections for Subscriptions

Onde,

  • número de conexões para o atendente de implantação = 1.

  • número de conexões para assinaturas = (2 subscriptions for supporting certificate generation + number of MQTT topics in AWS IoT Core + number of device shadows synced) / 50.

    • Onde, 50 = o número máximo de assinaturas por conexão que a AWS IoT Core pode suportar.

nota

Se você habilitar sessões persistentes para assinatura com o AWS IoT Core, pelo menos uma conexão adicional será aberta pelo núcleo para uso em uma sessão persistente. Os componentes do sistema não são compatíveis com sessões persistentes, por isso não podem compartilhar essa conexão.

Para reduzir o número de conexões MQTT e ajudar a reduzir custos, você pode usar as funções locais do Lambda para agregar dados na borda. Em seguida, você envia os dados agregados para o Nuvem AWS. Como resultado, você usa menos tópicos do MQTT em AWS IoT Core. Para obter mais informações, consulte Preços do AWS IoT Greengrass.

GGC v1.8

Vários componentes do sistema do Greengrass abrem conexões MQTT com o AWS IoT Core. Esses componentes usam os padrões a seguir para gerar os IDs de cliente para as conexões.

Operation Padrão de ID de cliente
Implantações

core-thing-name

Exemplo: MyCoreThing

Use esse ID de cliente para se conectar, desconectar, assinar e cancelar a assinatura de notificações de eventos de ciclo de vida.

Troca de mensagens MQTT com o AWS IoT Core

core-thing-name-spr

Exemplo: MyCoreThing-spr

Sincronização de sombra

core-thing-name-snn

Exemplo: MyCoreThing-s01

nn é um número inteiro que começa em 00 e é incrementado a cada nova conexão até um máximo de 03. O número de conexões é determinado pelo número de dispositivos (máximo de 200 dispositivos por grupo) que sincronizam o estado de shadow com o AWS IoT Core (máximo de 50 assinaturas por conexão).

Gerenciamento de certificados do dispositivo

core-thing-name-dcm

Exemplo: MyCoreThing-dcm

nota

Duplicar os IDs de cliente usados em conexões simultâneas pode causar um loop infinito de desconexão e conexão. Isso pode acontecer se outro dispositivo for codificado para usar o nome do dispositivo de núcleo como o ID do cliente nas conexões. Para obter mais informações, consulte esta etapa de solução de problemas.

Os Dispositivos Greengrass também são totalmente integrados ao serviço de indexação de frota do AWS IoT Device Management. Isso permite indexar e pesquisar dispositivos com base nos atributos do dispositivo, no estado da sombra e no estado da conexão na nuvem. Por exemplo, os Dispositivos Greengrass estabelecem pelo menos uma conexão que usa o nome da coisa como o ID do cliente. Assim, é possível usar a indexação de conectividade do dispositivo para descobrir quais Dispositivos Greengrass estão conectados ou desconectados do AWS IoT Core no momento. Para obter mais informações, consulte Serviço de indexação de frota no Guia do desenvolvedor do AWS IoT.

Configurar a porta MQTT para mensagens locais

Esse atributo exige a versão 1.10 ou posterior do AWS IoT Greengrass Core.

O núcleo do Greengrass atua como atendente de mensagens local para mensagens MQTT entre funções locais do Lambda, conectores e dispositivos cliente. Por padrão, o núcleo usa a porta 8883 para o tráfego MQTT na rede local. Talvez você queira alterar a porta para evitar um conflito com outro software executado na porta 8883.

Para configurar o número da porta usada pelo núcleo para o tráfego MQTT local
  1. Execute o comando a seguir para interromper o daemon do Greengrass:

    cd /greengrass-root/ggc/core/ sudo ./greengrassd stop
  2. Abra greengrass-root/config/config.json para editar como o usuário su.

  3. No objeto coreThing, adicione a propriedade ggMqttPort e defina o valor para o número da porta que você deseja usar. Os valores válidos são de 1024 a 65535. O exemplo a seguir define o número da porta como 9000.

    { "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com", "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", "ggMqttPort" : 9000, "keepAlive" : 600 }, ... }
  4. Inicie o daemon.

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start
  5. Se a detecção automática de IP estiver habilitada para o núcleo, a configuração será concluída.

    Se a detecção automática de IP não estiver habilitada, você deverá atualizar as informações de conectividade para o núcleo. Isso permite que os dispositivos cliente recebam o número de porta correto durante as operações de descoberta para adquirir informações de conectividade de núcleo. Você pode usar o console do AWS IoT ou a API do AWS IoT Greengrass para atualizar as informações de conectividade de núcleo. Para esse procedimento, atualize apenas o número da porta. O endereço IP local do núcleo permanece o mesmo.

    Para atualizar as informações de conectividade para o núcleo (console)
    1. Na página de configuração do grupo, selecione o núcleo do Greengrass.

    2. Na página de detalhes do núcleo, selecione a guia de endpoints do atendente MQTT.

    3. Selecione Gerenciar endpoints e, em seguida, Add endpoint (Adicionar endpoint).

    4. Insira seu endereço IP local atual e o novo número da porta. O exemplo a seguir define o número da porta 9000 para o endereço IP 192.168.1.8.

    5. Remova o endpoint obsoleto e selecione Update (Atualizar)

    Atualizar as informações de conectividade para o núcleo (API)
    • Use a ação UpdateConnectivityInfo. O exemplo a seguir usa update-connectivity-info na AWS CLI para definir o número da porta 9000 para o endereço IP 192.168.1.8.

      aws greengrass update-connectivity-info \ --thing-name "MyGroup_Core" \ --connectivity-info "[{\"Metadata\":\"\",\"PortNumber\":9000,\"HostAddress\":\"192.168.1.8\",\"Id\":\"localIP_192.168.1.8\"},{\"Metadata\":\"\",\"PortNumber\":8883,\"HostAddress\":\"127.0.0.1\",\"Id\":\"localhost_127.0.0.1_0\"}]"
    nota

    Também é possível configurar a porta usada pelo núcleo para mensagens MQTT com o AWS IoT Core. Para ter mais informações, consulte Conectar-se à porta 443 ou por meio de um proxy de rede.

Tempo limite para operações de publicação, assinatura e cancelamento de assinatura em conexões MQTT com a Nuvem AWS

Esse atributo está disponível no AWS IoT Greengrass v1.10.2 ou posterior.

É possível configurar a quantidade de tempo (em segundos) para permitir que o núcleo do Greengrass conclua uma operação de publicação, assinatura ou cancelamento de assinatura em conexões MQTT ao AWS IoT Core. Talvez você queira ajustar essa configuração se as operações atingirem o tempo limite devido a restrições de largura de banda ou à alta latência. Para definir essa configuração no arquivo config.json, adicione ou altere a propriedade mqttOperationTimeout no objeto coreThing. Por exemplo:

{ "coreThing": { "mqttOperationTimeout": 10, "caPath": "root-ca.pem", "certPath": "hash.cert.pem", "keyPath": "hash.private.key", ... }, ... }

O tempo limite padrão é 5 segundos. O tempo limite mínimo é de 5 segundos.

Ativar detecção automática de IP

Você pode configurar AWS IoT Greengrass para permitir que dispositivos cliente em um grupo do Greengrass descubram automaticamente o núcleo do Greengrass. Quando ativado, o núcleo observa as alterações em seus endereços IP. Se um endereço mudar, o núcleo publica uma lista atualizada de endereços. Esses endereços são disponibilizados para dispositivos cliente que estão no mesmo grupo do Greengrass que o núcleo.

nota

A política de AWS IoT para dispositivos cliente deve conceder a permissão greengrass:Discover para permitir que os dispositivos recuperem informações de conectividade para o núcleo. Para obter mais informações sobre a declaração de política, consulte Autorização de descoberta.

Para ativar esse atributo no console do AWS IoT Greengrass, selecione Detecção automática ao implantar seu grupo do Greengrass pela primeira vez. Você também pode ativar ou desativar esse atributo na página de configuração do grupo escolhendo a guia Funções do Lambda e selecionando o Detector de IP. A detecção automática de IP é habilitada se Automatically detect and override MQTT broker endpoints (Detectar e substituir automaticamente os endpoints de atendente MQTT) estiver selecionado.

Para gerenciar a descoberta automática com a API do AWS IoT Greengrass, você deve configurar a função IPDetector do Lambda do sistema. O procedimento a seguir mostra como usar o comando create-function-definition-version da CLI para configurar a identificação automática do núcleo do Greengrass.

  1. Obtenha os IDs do grupo do Greengrass de destino e a versão do grupo. Esse procedimento pressupõe que esse seja o grupo e a versão mais recente do grupo. A consulta a seguir retorna o grupo criado mais recentemente.

    aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"

    Ou é possível consultar por nome. Os nomes de grupo não precisam ser exclusivos, portanto, vários grupos podem ser retornados.

    aws greengrass list-groups --query "Groups[?Name=='MyGroup']"
    nota

    Também é possível encontrar esses valores no console do AWS IoT. O ID do grupo é exibido na página Settings (Configurações) do grupo. Os IDs de versão do grupo são exibidos na guia Implantações do grupo.

  2. Copie os valores Id e LatestVersion do grupo de destino na saída.

  3. Obtenha a versão do grupo mais recente.

    • Substitua group-id pelo Id que você copiou.

    • Substitua latest-group-version-id pelo LatestVersion que você copiou.

    aws greengrass get-group-version \ --group-id group-id \ --group-version-id latest-group-version-id
  4. No objeto Definition da saída, copie CoreDefinitionVersionArn e os ARNs de todos os outros componentes do grupo, exceto FunctionDefinitionVersionArn. Você usa esses valores ao criar uma nova versão do grupo.

  5. No FunctionDefinitionVersionArn na saída, copie o ID da definição de função e a versão de definição de função.

    arn:aws:greengrass:region:account-id:/greengrass/groups/function-definition-id/versions/function-definition-version-id
    nota

    Você também pode criar uma definição de função executando o comando create-function-definition e copiar o ID da saída.

  6. Use o comando get-function-definition-version para obter o estado da definição atual. Use o function-definition-id que você copiou para a definição de função. Por exemplo, 4d941bc7-92a1-4f45-8d64-EXAMPLEf76c3.

    aws greengrass get-function-definition-version --function-definition-id function-definition-id --function-definition-version-id function-definition-version-id

    Anote os valores das configurações de função listados. Você precisará incluí-los ao criar uma nova versão de definição de função para evitar a perda de suas configurações de definição atuais.

  7. Adicione uma versão de definição de função à definição da função.

    • Substitua function-definition-id pelo Id copiado para a definição de função. Por exemplo, 4d941bc7-92a1-4f45-8d64-EXAMPLEf76c3.

    • Substitua arbitrary-function-id por um nome da função, como auto-detection-function.

    • Adicione todas as funções do Lambda que você deseja incluir nesta versão à matriz functions, como as listadas na etapa anterior.

    aws greengrass create-function-definition-version \ --function-definition-id function-definition-id \ --functions '[{"FunctionArn":"arn:aws:lambda:::function:GGIPDetector:1","Id":"arbitrary-function-id","FunctionConfiguration":{"Pinned":true,"MemorySize":32768,"Timeout":3}}]'\ --region us-west-2
  8. Copie o Arn da versão da definição de função da saída.

  9. Crie uma versão do grupo que contém a função do Lambda definida pelo sistema.

    • Substitua group-id pelo Id do grupo.

    • Substitua core-definition-version-arn pelo CoreDefinitionVersionArn copiado da versão do grupo mais recente.

    • Substitua function-definition-version-arn pelo Arn copiado para a nova versão da definição de função.

    • Substitua os ARNs de outros componentes do grupo (por exemplo, SubscriptionDefinitionVersionArn ou DeviceDefinitionVersionArn) que você copiou na versão do grupo mais recente.

    • Remova todos os parâmetros inutilizados. Por exemplo, remova a versão --resource-definition-version-arn caso a versão do grupo não contenha recursos.

    aws greengrass create-group-version \ --group-id group-id \ --core-definition-version-arn core-definition-version-arn \ --function-definition-version-arn function-definition-version-arn \ --device-definition-version-arn device-definition-version-arn \ --logger-definition-version-arn logger-definition-version-arn \ --resource-definition-version-arn resource-definition-version-arn \ --subscription-definition-version-arn subscription-definition-version-arn
  10. Copie a Version da saída. Este é o ID da nova versão do grupo.

  11. Implante o grupo com a nova versão do grupo.

    • Substitua group-id pelo Id que você copiou para o grupo.

    • Substitua group-version-id pelo Version copiado para a nova versão do grupo.

    aws greengrass create-deployment \ --group-id group-id \ --group-version-id group-version-id \ --deployment-type NewDeployment

Se quiser incluir manualmente o endereço IP do núcleo do Greengrass, conclua este tutorial com uma definição de função diferente que não inclua a função IPDetector. Isso impedirá que a função de detecção localize e automaticamente e insira seu endereço IP do núcleo do Greengrass.

Essa função do Lambda do sistema não está visível no console do Lambda. Depois que a função for adicionada à versão do grupo mais recente, ela será incluída nas implantações que você fizer com o console (a menos que você use a API para substituí-la ou removê-la).

Configurar o sistema init para iniciar o daemon do Greengrass

Trata-se de uma prática recomendada configurar o sistema init para iniciar o daemon do Greengrass durante a inicialização, especialmente ao gerenciar grandes frotas de dispositivos.

nota

Se você usou apt para instalar o software do AWS IoT Greengrass Core, pode usar os scripts systemd para habilitar o começo na inicialização. Para ter mais informações, consulte Usar scripts systemd para gerenciar o ciclo de vida do daemon do Greengrass.

Há tipos diferentes de sistema init, como initd, systemd e SystemV, e eles usam parâmetros de configuração semelhantes. O exemplo a seguir é um arquivo de serviço systemd. O parâmetro Type é definido como forking porque greengrassd (que é usado para iniciar o Greengrass) divide o processo de daemon do Greengrass, e o parâmetro Restart é definido como on-failure para direcionar systemd a fim de reiniciar o Greengrass caso o Greengrass entre em um estado de falha.

nota

Para ver se o dispositivo usa systemd, execute o script check_ggc_dependencies conforme descrito em Módulo 1. Em seguida, para usar systemd, verifique se o parâmetro useSystemd em config.json está definido como yes.

[Unit] Description=Greengrass Daemon [Service] Type=forking PIDFile=/var/run/greengrassd.pid Restart=on-failure ExecStart=/greengrass/ggc/core/greengrassd start ExecReload=/greengrass/ggc/core/greengrassd restart ExecStop=/greengrass/ggc/core/greengrassd stop [Install] WantedBy=multi-user.target

Consulte também