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.
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.
. Ele usa a mesma região que o endpoint do AWS IoT Core.region
.amazonaws.com
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
eno_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 pacotesrequests
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.
-
Execute o comando a seguir para interromper o daemon do Greengrass:
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd stop -
Abra
para editar como o usuário su.greengrass-root
/config/config.json -
No objeto
coreThing
, adicione a propriedadeiotMqttPort
e defina o valor443
, 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 }, ... } -
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.
-
Execute o comando a seguir para interromper o daemon do Greengrass:
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd stop -
Abra
para editar como o usuário su.greengrass-root
/config/config.json -
No objeto
coreThing
, adicione as propriedadesiotHttpPort
eggHttpPort
, 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 }, ... } -
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.
-
Execute o comando a seguir para interromper o daemon do Greengrass:
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd stop -
Abra
para editar como o usuário su.greengrass-root
/config/config.json -
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" } }
}, ... } -
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.
|
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. |
443 |
Usado para operações de ambiente de gerenciamento para gerenciamento de grupos. |
ou
|
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. |
ou
|
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. notaOs clientes que se conectam na porta 443 devem implementar a extensão TLS do Application Layer Protocol Negotiation (ALPN) |
*.s3.amazonaws.com |
443 |
Usado para operações de implantação e atualizações over-the-air (OTA). Este formato inclui o caractere |
logs. |
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 econfig.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
-
Execute o seguinte comando para interromper o daemon do AWS IoT Greengrass:
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd stop -
Abra
para editar como o usuário su.greengrass-root
/config/config.json -
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. -
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.
-
Conceder permissões de acesso a diretórios necessários:
-
Dê permissões de leitura e gravação ao proprietário
config.json
.sudo chmod 0600 /
greengrass-root
/config/config.json -
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).
-
-
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çõesumount
emount
aos scriptsota_pre_update
eota_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. -
Inicie o daemon.
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd startSe 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.

Para obter mais informações sobre o MQTT e QoS, consulte Introdução
- 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.
-
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.
-
Copie os valores
Id
eLatestVersion
do grupo de destino na saída. -
Obtenha a versão do grupo mais recente.
-
Substitua
group-id
peloId
que você copiou. -
Substitua
latest-group-version-id
peloLatestVersion
que você copiou.
aws greengrass get-group-version \ --group-id
group-id
\ --group-version-idlatest-group-version-id
-
-
No objeto
Definition
da saída, copieCoreDefinitionVersionArn
e os ARNs de todos os outros componentes do grupo, excetoFunctionDefinitionVersionArn
. Você usa esses valores ao criar uma nova versão do grupo. -
No
FunctionDefinitionVersionArn
na saída, copie o ID da definição de função. O ID é o GUID que segue o segmentofunctions
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. -
Adicione uma versão de definição de função à definição da função.
-
Substitua
function-definition-id
peloId
copiado para a definição de função. -
Substitua
arbitrary-function-id
por um nome da função, comospooler-function
. -
Adicione todas as funções do Lambda que você deseja incluir nesta versão para a matriz
functions
. Você pode usar o comandoget-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. -
-
Copie o
Arn
da versão da definição de função da saída. -
Crie uma versão do grupo que contém a função do Lambda definida pelo sistema.
-
Substitua
group-id
peloId
do grupo. -
Substitua
core-definition-version-arn
peloCoreDefinitionVersionArn
copiado da versão do grupo mais recente. -
Substitua
function-definition-version-arn
peloArn
copiado para a nova versão da definição de função. -
Substitua os ARNs de outros componentes do grupo (por exemplo,
SubscriptionDefinitionVersionArn
ouDeviceDefinitionVersionArn
) 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-arncore-definition-version-arn
\ --function-definition-version-arnfunction-definition-version-arn
\ --device-definition-version-arndevice-definition-version-arn
\ --logger-definition-version-arnlogger-definition-version-arn
\ --resource-definition-version-arnresource-definition-version-arn
\ --subscription-definition-version-arnsubscription-definition-version-arn
-
-
Copie a
Version
da saída. Este é o ID da nova versão do grupo. -
Implante o grupo com a nova versão do grupo.
-
Substitua
group-id
peloId
que você copiou para o grupo. -
Substitua
group-version-id
peloVersion
copiado para a nova versão do grupo.
aws greengrass create-deployment \ --group-id
group-id
\ --group-version-idgroup-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 sinalizadorcleanSession
como0
em mensagensCONNECT
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.
-
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.
-
Copie os valores
Id
eLatestVersion
do grupo de destino na saída. -
Obtenha a versão do grupo mais recente.
-
Substitua
group-id
peloId
que você copiou. -
Substitua
latest-group-version-id
peloLatestVersion
que você copiou.
aws greengrass get-group-version \ --group-id
group-id
\ --group-version-idlatest-group-version-id
-
-
No objeto
Definition
da saída, copieCoreDefinitionVersionArn
e os ARNs de todos os outros componentes do grupo, excetoFunctionDefinitionVersionArn
. Você usa esses valores ao criar uma nova versão do grupo. -
No
FunctionDefinitionVersionArn
na saída, copie o ID da definição de função. O ID é o GUID que segue o segmentofunctions
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. -
Adicione uma versão de definição de função à definição da função.
-
Substitua
function-definition-id
peloId
copiado para a definição de função. -
Substitua
arbitrary-function-id
por um nome da função, comospooler-function
. -
Adicione todas as funções do Lambda que você deseja incluir nesta versão para a matriz
functions
. Você pode usar o comandoget-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
ouGG_CONFIG_MAX_SIZE_BYTES
para definir configurações de armazenamento, inclua as varáveis nessa instância de função. -
-
Copie o
Arn
da versão da definição de função da saída. -
Crie uma versão do grupo que contém a função do Lambda definida pelo sistema.
-
Substitua
group-id
peloId
do grupo. -
Substitua
core-definition-version-arn
peloCoreDefinitionVersionArn
copiado da versão do grupo mais recente. -
Substitua
function-definition-version-arn
peloArn
copiado para a nova versão da definição de função. -
Substitua os ARNs de outros componentes do grupo (por exemplo,
SubscriptionDefinitionVersionArn
ouDeviceDefinitionVersionArn
) 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-arncore-definition-version-arn
\ --function-definition-version-arnfunction-definition-version-arn
\ --device-definition-version-arndevice-definition-version-arn
\ --logger-definition-version-arnlogger-definition-version-arn
\ --resource-definition-version-arnresource-definition-version-arn
\ --subscription-definition-version-arnsubscription-definition-version-arn
-
-
Copie a
Version
da saída. Este é o ID da nova versão do grupo. -
Implante o grupo com a nova versão do grupo.
-
Substitua
group-id
peloId
que você copiou para o grupo. -
Substitua
group-version-id
peloVersion
copiado para a nova versão do grupo.
aws greengrass create-deployment \ --group-id
group-id
\ --group-version-idgroup-version-id
\ --deployment-type NewDeployment -
-
(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).
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
-
Execute o comando a seguir para interromper o daemon do Greengrass:
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd stop -
Abra
para editar como o usuário su.greengrass-root
/config/config.json -
No objeto
coreThing
, adicione a propriedadeggMqttPort
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 como9000
.{ "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 }, ... } -
Inicie o daemon.
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd start -
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)
-
-
Na página de configuração do grupo, selecione o núcleo do Greengrass.
-
Na página de detalhes do núcleo, selecione a guia de endpoints do atendente MQTT.
-
Selecione Gerenciar endpoints e, em seguida, Add endpoint (Adicionar endpoint).
-
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 IP192.168.1.8
. -
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 porta9000
para o endereço IP192.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.
-
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.
-
Copie os valores
Id
eLatestVersion
do grupo de destino na saída. -
Obtenha a versão do grupo mais recente.
-
Substitua
group-id
peloId
que você copiou. -
Substitua
latest-group-version-id
peloLatestVersion
que você copiou.
aws greengrass get-group-version \ --group-id
group-id
\ --group-version-idlatest-group-version-id
-
-
No objeto
Definition
da saída, copieCoreDefinitionVersionArn
e os ARNs de todos os outros componentes do grupo, excetoFunctionDefinitionVersionArn
. Você usa esses valores ao criar uma nova versão do grupo. -
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. -
Use o comando
get-function-definition-version
para obter o estado da definição atual. Use ofunction-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-idfunction-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.
-
Adicione uma versão de definição de função à definição da função.
-
Substitua
function-definition-id
peloId
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, comoauto-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 -
-
Copie o
Arn
da versão da definição de função da saída. -
Crie uma versão do grupo que contém a função do Lambda definida pelo sistema.
-
Substitua
group-id
peloId
do grupo. -
Substitua
core-definition-version-arn
peloCoreDefinitionVersionArn
copiado da versão do grupo mais recente. -
Substitua
function-definition-version-arn
peloArn
copiado para a nova versão da definição de função. -
Substitua os ARNs de outros componentes do grupo (por exemplo,
SubscriptionDefinitionVersionArn
ouDeviceDefinitionVersionArn
) 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-arncore-definition-version-arn
\ --function-definition-version-arnfunction-definition-version-arn
\ --device-definition-version-arndevice-definition-version-arn
\ --logger-definition-version-arnlogger-definition-version-arn
\ --resource-definition-version-arnresource-definition-version-arn
\ --subscription-definition-version-arnsubscription-definition-version-arn
-
-
Copie a
Version
da saída. Este é o ID da nova versão do grupo. -
Implante o grupo com a nova versão do grupo.
-
Substitua
group-id
peloId
que você copiou para o grupo. -
Substitua
group-version-id
peloVersion
copiado para a nova versão do grupo.
aws greengrass create-deployment \ --group-id
group-id
\ --group-version-idgroup-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