Crie e empacote uma função do Lambda - 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á.

Crie e empacote uma função do Lambda

O exemplo de função do Lambda em Python deste módulo usa o SDK do AWS IoT Greengrass Core para que o Python publique mensagens MQTT.

Nesta etapa:

  • Faça download do SDK do AWS IoT Greengrass Core para Python para o computador (e não para o dispositivo de núcleo do AWS IoT Greengrass).

  • Crie um pacote de implantação de funções do Lambda que contém o código da função e as dependências.

  • Use o console do Lambda para criar uma função do Lambda e fazer upload do pacote de implantação.

  • Publique uma versão da função do Lambda e crie um alias que aponte para a versão.

Para concluir este módulo, o Python 3.7 deve ser instalado no dispositivo principal.

 

  1. Na página de downloads do SDK do AWS IoT Greengrass Core, baixe o AWS IoT Greengrass SDK do Core para Python em seu computador.

  2. Descompacte o pacote baixado para obter o código da função do Lambda e o SDK.

    A função do Lambda neste módulo usa:

    • O arquivo greengrassHelloWorld.py em examples\HelloWorld. Este é o código da função do Lambda. A cada cinco segundos, a função publica uma das duas possíveis mensagens no tópico hello/world.

    • A pasta greengrasssdk. Esse é o SDK.

  3. Copie a pasta greengrasssdk para a pasta HelloWorld que contém greengrassHelloWorld.py.

  4. Para criar o pacote de implantação de funções do Lambda, salve greengrassHelloWorld.py o greengrasssdk e a pasta zip em um arquivo compactado denominado hello_world_python_lambda.zip. O arquivo py e a pasta greengrasssdk devem estar na raiz do diretório.

    Captura de tela mostrando o conteúdo compactado de hello_word_python_lambda.zip.

    Para sistemas semelhantes ao UNIX (incluindo o terminal Mac), é possível usar o comando a seguir para empacotar o arquivo e a pasta:

    zip -r hello_world_python_lambda.zip greengrasssdk greengrassHelloWorld.py
    nota

    Dependendo da sua distribuição, pode ser necessário instalar zip primeiro (por exemplo, ao executar sudo apt-get install zip). O comando de instalação pode ser diferente para sua distribuição.

    Agora, você está pronto para criar sua função do Lambda e fazer upload do pacote de implantação.

  5. Abra o console do Lambda e selecione Criar função.

  6. Escolha Author from scratch.

  7. Dê à função o nome Greengrass_HelloWorld e defina os campos restantes da seguinte forma:

    • Em Runtime (Tempo de execução), escolha Python 3.7.

    • Em Permissões, mantenha a configuração padrão. Isso cria uma função de execução que concede permissões básicas do Lambda. Essa função não é usada pelo AWS IoT Greengrass.

    Escolha Criar função.

  8. Faça upload do pacote de implantação da função Lambda:

    1. Na guia Código, em Fonte do código, selecione Fazer upload a partir de. No menu suspenso, selecione arquivo .zip.

      O menu suspenso Fazer upload a partir de com o arquivo .zip destacado.
    2. Escolha Upload e, em seguida, selecione seu pacote de implantação hello_world_python_lambda.zip. Escolha Save (Salvar).

    3. Na guia Código da função, em Configurações de runtime, selecione Editar e insira os valores a seguir.

      • Em Runtime (Tempo de execução), escolha Python 3.7.

      • Em Handler (Manipulador), insira greengrassHelloWorld.function_handler.

      A seção "Runtime settings" (Informações básicas) com o campo "Runtime" definido como "Python 3.7" e o campo "Manipulador" definido como "greengrassHelloWorld.function_handler".
    4. Escolha Save (Salvar).

      nota

      O botão Testar no console do AWS Lambda não funciona com essa função. O SDK do AWS IoT Greengrass Core não contém módulos necessários para executar suas funções do Lambda do Greengrass de forma independente no console do AWS Lambda. Esses módulos (por exemplo, greengrass_common) são fornecidos às funções depois de serem implantados no núcleo do Greengrass.

  9. Publique a função do Lambda:

    1. No menu Ações na parte superior da página, selecione Publicar versão nova.

      Captura de tela do menu Actions (Ações) com Publish new version (Publicar nova versão) em destaque.
    2. Em Version description (Descrição da versão), insira First version e, em seguida, selecione Publish (Publicar).

      Captura de tela do campo Version description (Descrição da versão) definido como First version (Primeira versão) e o botão Publish (Publicar) em destaque.
  10. Crie um alias para a versão da função do Lambda:

    nota

    Os grupos do Greengrass podem fazer referência a uma função do Lambda por alias (recomendado) ou por versão. Usar um alias facilita o gerenciamento de atualizações de código porque você não precisa alterar a tabela de assinaturas nem a definição do grupo ao atualizar a função do código. Em vez disso, você pode simplesmente apontar o alias para a nova versão da função.

    1. No menu Ações na parte superior da página, selecione Criar alias.

      Captura de tela do menu Actions (Ações) definido como Create alias (Criar alias).
    2. Nomeie o alias como GG_HelloWorld, defina a versão como 1 (que corresponde à versão que você acabou de publicar) e selecione Salvar.

      nota

      O AWS IoT Greengrass não oferece suporte a alias do Lambda para as versões $LATEST.

       

      Captura de tela de Criar outro alias com o campo Nome definido como GG_HelloWorld, o campo Versão definido como 1.