O 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, o AWS IoT Greengrass V1 não lançará atualizações que forneçam recursos, aprimoramentos, correções de erros ou patches de segurança. Os dispositivos que funcionam com o 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 adicionará novos recursos significativos e suporte para plataformas adicionais.
Como executar o AWS IoT Greengrass em um contêiner do Docker
O AWS IoT Greengrass pode ser configurado para ser executado em um contêiner Docker
Você pode baixar um Dockerfile por meio do Amazon CloudFront que tenha o software do núcleo do AWS IoT Greengrass e dependências instalados. Para modificar a imagem do Docker para executar em diferentes arquiteturas de plataforma ou reduzir o tamanho da imagem do Docker, consulte o arquivo README
no download do pacote do Docker.
Para ajudar você a começar a testar o AWS IoT Greengrass, a AWS também oferece imagens do Docker pré-compiladas que têm as dependências e o software do núcleo do AWS IoT Greengrass instalados. Faça download de uma imagem do Docker Hub
Importante
Em 30 de junho de 2022, o AWS IoT Greengrass encerrou a manutenção das imagens do Docker da versão v1.x do software AWS IoT Greengrass Core que são publicadas no Amazon Elastic Container Registry (Amazon ECR) e no Docker Hub. Você pode continuar baixando essas imagens do Docker do Amazon ECR e do Docker Hub até 30 de junho de 2023, ou seja, um ano após o término da manutenção. No entanto, as imagens do Docker da versão v1.x do software AWS IoT Greengrass Core não recebem mais patches de segurança ou correções de erros após o término da manutenção em 30 de junho de 2022. Se você executa uma workload de produção que depende dessas imagens do Docker, recomendamos criar suas próprias imagens do Docker usando os Dockerfiles que o AWS IoT Greengrass fornece. Para ter mais informações, consulte Software do Docker do AWS IoT Greengrass.
Este tópico descreve como fazer download da imagem do Docker do AWS IoT Greengrass no Amazon ECR e executá-la nas plataformas Windows, macOS, ou Linux (x86_64). O tópico inclui as etapas a seguir:
Os atributos a seguir não são compatíveis quando o AWS IoT Greengrass é executado em um contêiner do Docker:
Conectores executados no modo de contêiner do Greengrass. Para executar um conector em um contêiner do Docker, o conector deve ser executado no modo Sem contêiner. Para localizar conectores compatíveis com o modo Sem contêiner consulte Conectores do Greengrass fornecidos pela AWS. Alguns desses conectores têm um parâmetro de modo de isolamento que você deve definir como Sem contêiner.
Recursos de volume e dispositivo locais. Suas funções do Lambda definidas pelo usuário executadas no contêiner do Docker devem acessar dispositivos e volumes diretamente no núcleo.
Esses atributos não são compatíveis quando o ambiente de runtime do Lambda para o grupo do Greengrass está definido como Nenhum contêiner, o que é necessário para a execução do AWS IoT Greengrass em um contêiner do Docker.
Pré-requisitos
Antes de começar este tutorial, você deve fazer o seguinte.
-
Você deve instalar os seguintes softwares e versões em seu computador host com base na versão AWS Command Line Interface (AWS CLI) que você escolher.
-
Para acessar os recursos do Amazon Elastic Container Registry (Amazon ECR), você deve conceder a seguinte permissão.
-
O Amazon ECR exige que os usuários concedam a permissão
ecr:GetAuthorizationToken
por meio de uma política do IAM AWS Identity and Access Management antes que possam fazer a autenticação para um registro e enviar ou extrair imagens de um repositório do Amazon ECR. Para obter mais informações, consulte Exemplos de políticas do repositório do Amazon ECR e Acessando um repositório do Amazon ECR no Guia do usuário do Amazon Elastic Container Registry.
-
Etapa 1: obtenha a imagem de contêiner do AWS IoT Greengrass do Amazon ECR
A AWS oferece as imagens do Docker que têm o software do núcleo do AWS IoT Greengrass instalado.
Atenção
A partir da versão v1.11.6 do software AWS IoT Greengrass Core, as imagens do Docker do Greengrass não incluem mais o Python 2.7 porque esta versão chegou ao fim da vida útil em 2020 e não recebe mais atualizações de segurança. Se você optar por atualizar essas imagens do Docker, recomendamos verificar se seus aplicativos funcionam com as novas imagens do Docker antes de implantar as atualizações nos dispositivos de produção. Se você precisar do Python 2.7 para seu aplicativo que usa uma imagem do Docker do Greengrass, poderá modificar o Dockerfile do Greengrass para incluir o Python 2.7 em seu aplicativo.
Para ver as etapas que mostram como obter a imagem latest
do Amazon ECR, selecione o seu sistema operacional:
Execute os seguintes comandos no terminal do computador.
Faça login no registro AWS IoT Greengrass no Amazon ECR.
aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin https://216483018798.dkr.ecr.us-west-2.amazonaws.com
Se for bem-sucedido, a saída imprimirá
Login Succeeded
.Recupere a imagem de contêiner do AWS IoT Greengrass.
docker pull 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
nota
A
latest
imagem contém a versão estável mais recente do software do núcleo do AWS IoT Greengrass instalado na imagem de base do Amazon Linux 2. Você também pode extrair outras imagens do repositório. Para encontrar todas as imagens disponíveis, verifique a página Tags no Hub do Dockerou use o comando aws ecr list-images. Por exemplo: aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
Habilite as proteções symlink e hardlink. Se você estiver testando a execução do AWS IoT Greengrass em um contêiner, só poderá habilitar as configurações para a inicialização atual.
nota
Talvez você precise usar sudo para executar esses comandos.
-
Para habilitar as configurações só para a inicialização atual:
echo 1 > /proc/sys/fs/protected_hardlinks echo 1 > /proc/sys/fs/protected_symlinks
-
Para habilitar as configurações de modo que sejam mantidas nas reinicializações:
echo '# AWS IoT Greengrass' >> /etc/sysctl.conf echo 'fs.protected_hardlinks = 1' >> /etc/sysctl.conf echo 'fs.protected_symlinks = 1' >> /etc/sysctl.conf sysctl -p
-
Habilite o encaminhamento de rede IPv4, que é necessário para que a implantação em nuvem e as comunicações MQTT do AWS IoT Greengrass funcionem no Linux. No arquivo
/etc/sysctl.conf
, definanet.ipv4.ip_forward
como 1 e, em seguida, recarreguesysctls
.sudo nano /etc/sysctl.conf # set this net.ipv4.ip_forward = 1 sudo sysctl -p
nota
Você pode usar o editor de sua selecione no lugar do nano.
Execute os seguintes comandos no terminal do computador.
Faça login no registro AWS IoT Greengrass no Amazon ECR.
aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin https://216483018798.dkr.ecr.us-west-2.amazonaws.com
Se for bem-sucedido, a saída imprimirá
Login Succeeded
.Recupere a imagem de contêiner do AWS IoT Greengrass.
docker pull 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
nota
A
latest
imagem contém a versão estável mais recente do software do núcleo do AWS IoT Greengrass instalado na imagem de base do Amazon Linux 2. Você também pode extrair outras imagens do repositório. Para encontrar todas as imagens disponíveis, verifique a página Tags no Hub do Dockerou use o comando aws ecr list-images. Por exemplo: aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
Execute os seguintes comandos em um prompt de comando. Antes de você poder usar comandos do Docker no Windows, o Docker Desktop deve estar em execução.
Faça login no registro AWS IoT Greengrass no Amazon ECR.
aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin https://216483018798.dkr.ecr.us-west-2.amazonaws.com
Se for bem-sucedido, a saída imprimirá
Login Succeeded
.Recupere a imagem de contêiner do AWS IoT Greengrass.
docker pull 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
nota
A
latest
imagem contém a versão estável mais recente do software do núcleo do AWS IoT Greengrass instalado na imagem de base do Amazon Linux 2. Você também pode extrair outras imagens do repositório. Para encontrar todas as imagens disponíveis, verifique a página Tags no Hub do Dockerou use o comando aws ecr list-images. Por exemplo: aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
Etapa 2: Criar e configurar o núcleo e o grupo do Greengrass
A imagem do Docker tem o software do núcleo do AWS IoT Greengrass instalado, mas você deve criar um núcleo e um grupo do Greengrass. Isso inclui o download de certificados e do arquivo de configuração do núcleo.
-
Siga as etapas em Módulo 2: Instalação do software do AWS IoT Greengrass Core. Ignore a etapa em que você faz download e executa o software Core AWS IoT Greengrass. O software do núcleo e suas dependências de runtime já estão configurados na imagem do Docker.
Etapa 3: Executar o AWS IoT Greengrass localmente
Depois que seu grupo estiver configurado, você estará pronto para configurar e iniciar o núcleo. Para ver as etapas que mostram como fazer isso, selecione o seu sistema operacional:
Execute os seguintes comandos no terminal do computador.
-
Crie uma pasta para os recursos de segurança do dispositivo e mova o certificado e as chaves para essa pasta. Execute os seguintes comandos. Substitua
path-to-security-files
pelo caminho para os recursos de segurança e substitua ocertificateID
pelo ID do certificado nos nomes dos arquivos.mkdir /tmp/certs mv
path-to-security-files
/certificateId
-certificate.pem.crt /tmp/certs mvpath-to-security-files
/certificateId
-public.pem.key /tmp/certs mvpath-to-security-files
/certificateId
-private.pem.key /tmp/certs mvpath-to-security-files
/AmazonRootCA1.pem /tmp/certs -
Crie uma pasta para a configuração do dispositivo e mova o arquivo de configuração do Core AWS IoT Greengrass para essa pasta. Execute os seguintes comandos. Substitua
path-to-config-file
pelo caminho para o arquivo de configuração.mkdir /tmp/config mv
path-to-config-file
/config.json /tmp/config Inicie o AWS IoT Greengrass e salve os certificados e arquivos de configuração como bind mount no contêiner do Docker.
Substitua
/tmp
pelo caminho onde você descompactou seus certificados e o arquivo de configuração.docker run --rm --init -it --name aws-iot-greengrass \ --entrypoint /greengrass-entrypoint.sh \ -v /tmp/certs:/greengrass/certs \ -v /tmp/config:/greengrass/config \ -p 8883:8883 \ 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
A saída deve ser semelhante a este exemplo:
Setting up greengrass daemon Validating hardlink/softlink protection Waiting for up to 30s for Daemon to start Greengrass successfully started with PID: 10
Execute os seguintes comandos no terminal do computador.
-
Crie uma pasta para os recursos de segurança do dispositivo e mova o certificado e as chaves para essa pasta. Execute os seguintes comandos. Substitua
path-to-security-files
pelo caminho para os recursos de segurança e substitua ocertificateID
pelo ID do certificado nos nomes dos arquivos.mkdir /tmp/certs mv
path-to-security-files
/certificateId
-certificate.pem.crt /tmp/certs mvpath-to-security-files
/certificateId
-public.pem.key /tmp/certs mvpath-to-security-files
/certificateId
-private.pem.key /tmp/certs mvpath-to-security-files
/AmazonRootCA1.pem /tmp/certs -
Crie uma pasta para a configuração do dispositivo e mova o arquivo de configuração do Core AWS IoT Greengrass para essa pasta. Execute os seguintes comandos. Substitua
path-to-config-file
pelo caminho para o arquivo de configuração.mkdir /tmp/config mv
path-to-config-file
/config.json /tmp/config Inicie o AWS IoT Greengrass e salve os certificados e arquivos de configuração como bind mount no contêiner do Docker.
Substitua
/tmp
pelo caminho onde você descompactou seus certificados e o arquivo de configuração.docker run --rm --init -it --name aws-iot-greengrass \ --entrypoint /greengrass-entrypoint.sh \ -v /tmp/certs:/greengrass/certs \ -v /tmp/config:/greengrass/config \ -p 8883:8883 \ 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
A saída deve ser semelhante a este exemplo:
Setting up greengrass daemon Validating hardlink/softlink protection Waiting for up to 30s for Daemon to start Greengrass successfully started with PID: 10
-
Crie uma pasta para os recursos de segurança do dispositivo e mova o certificado e as chaves para essa pasta. Execute os seguintes comandos em um prompt de comando. Substitua
path-to-security-files
pelo caminho para os recursos de segurança e substitua ocertificateID
pelo ID do certificado nos nomes dos arquivos.mkdir C:\Users\%USERNAME%\Downloads\certs move
path-to-security-files
\certificateId
-certificate.pem.crt C:\Users\%USERNAME%\Downloads\certs movepath-to-security-files
\certificateId
-public.pem.key C:\Users\%USERNAME%\Downloads\certs movepath-to-security-files
\certificateId
-private.pem.key C:\Users\%USERNAME%\Downloads\certs movepath-to-security-files
\AmazonRootCA1.pem C:\Users\%USERNAME%\Downloads\certs -
Crie uma pasta para a configuração do dispositivo e mova o arquivo de configuração do Core AWS IoT Greengrass para essa pasta. Execute os seguintes comandos em um prompt de comando. Substitua
path-to-config-file
pelo caminho para o arquivo de configuração.mkdir C:\Users\%USERNAME%\Downloads\config move
path-to-config-file
\config.json C:\Users\%USERNAME%\Downloads\config -
Inicie o AWS IoT Greengrass e salve os certificados e arquivos de configuração como bind mount no contêiner do Docker. Execute os seguintes comandos em seu prompt de comando.
docker run --rm --init -it --name aws-iot-greengrass --entrypoint /greengrass-entrypoint.sh -v c:/Users/%USERNAME%/Downloads/certs:/greengrass/certs -v c:/Users/%USERNAME%/Downloads/config:/greengrass/config -p 8883:8883 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
Quando o Docker solicitar que você compartilhe sua unidade
C:\
com o daemon do Docker, permita que ele salve o diretórioC:\
como bind mount dentro do contêiner do Docker. Para obter mais informações, consulte Unidades compartilhadasna documentação do Docker. A saída deve ser semelhante a este exemplo:
Setting up greengrass daemon Validating hardlink/softlink protection Waiting for up to 30s for Daemon to start Greengrass successfully started with PID: 10
nota
Se o contêiner não abrir o shell e sair imediatamente, você poderá depurar o problema fazendo uma montagem bind dos logs de runtime do ao iniciar a imagem. Para ter mais informações, consulte Como manter os logs de runtime do Greengrass fora do contêiner do Docker.
Etapa 4: Configurar a conteinerização "Sem contêiner" para o grupo do Greengrass
Quando você executa o AWS IoT Greengrass em um contêiner do Docker, todas as funções do Lambda devem ser executadas sem conteinerização. Nesta etapa, você definirá a conteinerização padrão para o grupo como No container (Nenhum contêiner). Você deve fazer isso antes de implantar o grupo pela primeira vez.
No painel de navegação do console de AWS IoT, em Gerenciar, expanda Dispositivos Greengrass e, em seguida selecione Grupos (V1).
Selecione o grupo cujas configurações você deseja alterar.
-
Selecione a guia Funções do Lambda.
-
Em Ambiente de runtime da função do Lambda padrão, selecione Editar.
-
Em Editar o ambiente padrão de runtime da função do Lambda, em Conteinerização padrão da função do Lambda, altere as configurações de conteinerização.
Selecione Salvar.
As alterações entram em vigor quando o grupo é implantado.
Para ter mais informações, consulte Definir a conteinerização padrão para funções do Lambda em um grupo.
nota
Por padrão, as funções do Lambda usam a configuração de conteinerização do grupo. Se você substituir a configuração Nenhum contêiner de qualquer função do Lambda quando o AWS IoT Greengrass estiver em execução em um contêiner do Docker, a implantação falhará.
Etapa 5: implantar funções do Lambda para o contêiner do Docker do AWS IoT Greengrass
Você pode implantar funções do Lam de longa duração para o contêiner do Docker do Greengrass.
-
Siga as etapas em Módulo 3 (parte 1): Funções do Lambda no AWS IoT Greengrass para implantar uma função do Lambda de longa duração "Hello World" para o contêiner.
Etapa 6: (opcional) implantar dispositivos cliente que interagem com o Greengrass em execução no contêiner do Docker
Você também pode implantar dispositivos cliente que interagem com o AWS IoT Greengrass quando ele está em execução em um contêiner do Docker.
-
Siga as etapas em Módulo 4: Interagir com dispositivos cliente em um grupo do AWS IoT Greengrass para implantar dispositivos cliente que se conectam ao núcleo e enviam mensagens MQTT.
Interromper o contêiner do Docker do AWS IoT Greengrass
Para interromper o contêiner do Docker do AWS IoT Greengrass, pressione Ctrl+C no terminal ou no prompt de comando. Essa ação envia SIGTERM
para o processo de daemon do Greengrass a fim de descartar esse processo e todos os processos do Lambda que foram iniciados pelo processo de daemon. O contêiner do Docker é inicializado com o processo /dev/init
como PID 1, o que ajuda a eliminar quaisquer processos zumbis restantes. Para obter mais informações, consulte a Referência de execução do Docker
Solução de problemas do AWS IoT Greengrass em um contêiner do Docker
Use as informações a seguir para ajudá-lo a solucionar problemas comuns com a execução do AWS IoT Greengrass em um contêiner do Docker.
Erro: não é possível realizar um login interativo em um dispositivo não TTY.
Solução: este erro pode ocorrer ao executar o comando aws ecr get-login-password
. Verifique se você instalou a versão 2 ou a versão 1 mais recente do AWS CLI. É recomendável usar a versão 2 mais recente do AWS CLI. Para obter mais informações, consulte Instalar a AWS CLI no Guia do usuário da AWS Command Line Interface.
Erro: Opções desconhecidas: -no-include-email
Solução: este erro pode ocorrer ao executar o comando aws ecr get-login
. Verifique se você tem a versão mais recente da AWS CLI instalada (por exemplo, execute: pip install awscli --upgrade --user
). Se você estiver usando o Windows e tiver instalado a CLI usando o instalador MSI, repita o processo de instalação. Para obter informações, consulte Instalar a AWS Command Line Interface no Microsoft Windows no Guia do usuário do AWS Command Line Interface.
Aviso: IPv4 está desabilitado. As redes não funcionarão.
Solução: esse aviso ou uma mensagem semelhante pode ser recebida ao executar o AWS IoT Greengrass em um computador Linux. Habilite o encaminhamento de rede IPv4 conforme descrito nesta etapa. A implantação da nuvem e as comunicações MQTT do AWS IoT Greengrass não funcionam quando o encaminhamento IPv4 não está habilitado. Para obter mais informações, consulte Configurar parâmetros de kernel com namespace (sysctls) em runtime
Erro: Um firewall está bloqueando o compartilhamento de arquivos entre janelas e os contêineres.
Solução: esse erro ou uma mensagem Firewall Detected
pode ser recebida ao executar o Docker em um computador Windows. Esse erro também poderá ocorrer se você estiver conectado em uma rede privada virtual (VPN), e as configurações de rede estiverem impedindo a montagem da unidade compartilhada. Nesse caso, desative a VPN e execute novamente o contêiner do Docker.
Erro: ocorreu um erro (AccessDeniedException) ao chamar a operação GetAuthorizationToken: O usuário: arn:aws:iam::<account-id>:user/<user-name> não está autorizado a executar: ecr:GetAuthorizationToken no recurso: *
É possível que você receba esse erro ao executar o comando aws ecr get-login-password
se não tiver permissões suficientes para acessar um repositório do Amazon ECR. Para obter mais informações, consulte Exemplos de políticas de repositório do Amazon ECR e Como acessar um repositório do Amazon ECR no Guia do usuário do Amazon ECR.
Para obter ajuda geral com a solução de problemas do AWS IoT Greengrass, consulte Solução de problemas de AWS IoT Greengrass.
Depurar o AWS IoT Greengrass em um contêiner do Docker
Para depurar problemas com um contêiner do Docker, você pode manter os logs de runtime do Greengrass ou anexar um shell interativo ao contêiner do Docker.
Como manter os logs de runtime do Greengrass fora do contêiner do Docker
Você pode executar o contêiner do Docker do AWS IoT Greengrass depois de fazer uma montagem bind do diretório /greengrass/ggc/var/log
. Os logs serão mantidos mesmo depois que o contêiner for encerrado ou removido.
- No Linux ou macOS
-
Pare qualquer contêiner do Docker do Greengrass em execução no host e, em seguida, execute o comando a seguir em um terminal. Isso faz a montagem bind do diretório
log
do Greengrass e inicia a imagem do Docker.Substitua
/tmp
pelo caminho onde você descompactou seus certificados e o arquivo de configuração.docker run --rm --init -it --name aws-iot-greengrass \ --entrypoint /greengrass-entrypoint.sh \ -v /tmp/certs:/greengrass/certs \ -v /tmp/config:/greengrass/config \ -v /tmp/log:/greengrass/ggc/var/log \ -p 8883:8883 \ 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
Em seguida, você poderá verificar seus logs em
/tmp/log
no host para ver o que aconteceu enquanto o Greengrass estava em execução dentro do contêiner do Docker. - No Windows
-
Pare qualquer contêiner do Docker do Greengrass em execução no host e, em seguida, execute o comando a seguir em um prompt de comando. Isso faz a montagem bind do diretório
log
do Greengrass e inicia a imagem do Docker.cd C:\Users\%USERNAME%\Downloads mkdir log docker run --rm --init -it --name aws-iot-greengrass --entrypoint /greengrass-entrypoint.sh -v c:/Users/%USERNAME%/Downloads/certs:/greengrass/certs -v c:/Users/%USERNAME%/Downloads/config:/greengrass/config -v c:/Users/%USERNAME%/Downloads/log:/greengrass/ggc/var/log -p 8883:8883 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
Em seguida, você poderá verificar seus logs em
C:/Users/%USERNAME%/Downloads/log
no host para ver o que aconteceu enquanto o Greengrass estava em execução dentro do contêiner do Docker.
Como anexar um shell interativo ao contêiner do Docker
Você pode anexar um shell interativo ao contêiner do Docker em execução no AWS IoT Greengrass. Isso pode ajudar a investigar o estado do contêiner do Docker do Greengrass.
- No Linux ou macOS
-
Enquanto o contêiner do Docker do Greengrass estiver em execução, execute o comando a seguir em um terminal à parte.
docker exec -it $(docker ps -a -q -f "name=aws-iot-greengrass") /bin/bash
- No Windows
-
Enquanto o contêiner do Docker do Greengrass estiver em execução, execute os comandos a seguir em um prompt de comando à parte.
docker ps -a -q -f "name=aws-iot-greengrass"
Substitua
gg-container-id
pelo resultado decontainer_id
do comando anterior.docker exec -it
gg-container-id
/bin/bash