Executar AWS Lambda funções - AWS IoT Greengrass

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

Executar AWS Lambda funções

nota

AWS IoT Greengrassatualmente não oferece suporte a esse recurso nos dispositivos principais do Windows.

Você pode importar AWS Lambda funções como componentes que são executados nos dispositivos AWS IoT Greengrass principais. Talvez você queira fazer isso nos seguintes casos:

As funções Lambda incluem dependências nos seguintes componentes. Você não precisa definir esses componentes como dependências ao importar a função. Quando você implanta o componente da função Lambda, a implantação inclui essas dependências do componente Lambda.

Requisitos

Seus dispositivos principais e funções do Lambda devem atender aos seguintes requisitos para que você execute as funções no software AWS IoT Greengrass Core:

  • Seu dispositivo principal deve atender aos requisitos para executar as funções do Lambda. Se você quiser que o dispositivo principal execute funções Lambda em contêineres, o dispositivo deve atender aos requisitos para fazer isso. Para ter mais informações, consulte Requisitos da função do Lambda.

  • Você deve instalar as linguagens de programação que a função Lambda usa em seus dispositivos principais.

    dica

    Você pode criar um componente que instala a linguagem de programação e, em seguida, especificar esse componente como uma dependência do seu componente da função Lambda. O Greengrass é compatível com todas as versões compatíveis com o Lambda dos tempos de execução Python, Node.js e Java. O Greengrass não aplica nenhuma restrição adicional às versões obsoletas de tempo de execução do Lambda. Você pode executar funções do Lambda que usam esses tempos de execução obsoletosAWS IoT Greengrass, mas não pode criá-las no. AWS Lambda Para obter mais informações sobre compatibilidade da AWS IoT Greengrass com runtime do Lambda, consulte Executar AWS Lambda funções.

Configurar o ciclo de vida da função Lambda

O ciclo de vida da função do Lambda do Greengrass determina quando uma função começa e como ela cria e usa contêineres. O ciclo de vida também determina como o software AWS IoT Greengrass Core retém as variáveis e a lógica de pré-processamento que estão fora do manipulador de funções.

AWS IoT Greengrasssuporta ciclos de vida sob demanda (padrão) e de longa duração:

  • As funções sob demanda começam quando são invocadas e param quando não há mais tarefas para serem executadas. Cada invocação da função cria um contêiner separado, também chamado de sandbox, para processar invocações, a menos que um contêiner existente esteja disponível para reutilização. Qualquer um dos contêineres pode processar dados que você envia para a função.

    Várias invocações de uma função sob demanda podem ser executadas simultaneamente.

    As variáveis e a lógica de pré-processamento que você define fora do manipulador de funções não são retidas quando novos contêineres são criados.

  • As funções de longa duração (ou fixas) começam quando o software AWS IoT Greengrass principal é iniciado e executado em um único contêiner. O mesmo contêiner processa todos os dados que você envia para a função.

    Várias invocações são colocadas em fila até que o software AWS IoT Greengrass Core execute invocações anteriores.

    As variáveis e a lógica de pré-processamento que você define fora do manipulador de funções são mantidas para cada invocação do manipulador.

    Use funções Lambda de longa duração quando precisar começar a trabalhar sem nenhuma entrada inicial. Por exemplo, uma função de longa duração pode carregar e começar a processar um modelo de aprendizado de máquina para ficar pronta quando a função receber dados do dispositivo.

    nota

    Funções de longa duração têm tempos limite associados a cada invocação de seu manipulador. Se você quiser invocar um código que é executado indefinidamente, inicie-o fora do manipulador. Certifique-se de que não haja nenhum código de bloqueio fora do manipulador que possa impedir a inicialização da função.

    Essas funções são executadas a menos que o software AWS IoT Greengrass principal pare, como durante uma implantação ou reinicialização. Essas funções não serão executadas se a função encontrar uma exceção não detectada, exceder seus limites de memória ou entrar em um estado de erro, como o tempo limite do manipulador.

Para obter mais informações sobre a reutilização de contêineres, consulte Entendendo a reutilização de contêineres AWS Lambda no blog de AWScomputação.

Configurar a conteinerização da função Lambda

Por padrão, as funções Lambda são executadas dentro de um AWS IoT Greengrass contêiner. Os contêineres do Greengrass fornecem isolamento entre suas funções e o host. Esse isolamento aumenta a segurança do host e das funções no contêiner.

Recomendamos que você execute funções do Lambda em um contêiner do Greengrass, a menos que seu caso de uso exija que elas sejam executadas sem conteinerização. Ao executar suas funções do Lambda em um contêiner do Greengrass, você tem mais controle sobre como restringir o acesso aos recursos.

Você pode executar uma função Lambda sem conteinerização nos seguintes casos:

  • Você deseja executar AWS IoT Greengrass em um dispositivo que não seja compatível com o modo contêiner. Um exemplo seria se você quisesse usar uma distribuição Linux especial ou ter uma versão anterior do kernel que esteja desatualizada.

  • Você deseja executar a função do Lambda em outro ambiente de contêiner com seu próprio OverlayFS, mas encontra conflitos de OverlayFS ao executar em um contêiner do Greengrass.

  • Você precisa acessar recursos locais com caminhos que não podem ser determinados no momento da implantação ou cujos caminhos podem mudar após a implantação. Um exemplo desse recurso seria um dispositivo conectável.

  • Você tem um aplicativo anterior que foi escrito como um processo e encontra problemas ao executá-lo em um contêiner do Greengrass.

Diferenças de conteinerização
Conteinerização Observações

Contêiner do Greengrass

  • Todos os atributos do AWS IoT Greengrass estão disponíveis quando você executa uma função do Lambda em um contêiner do Greengrass.

  • As funções do Lambda que são executadas em um contêiner do Greengrass não têm acesso ao código implantado de outras funções do Lambda, mesmo que sejam executadas com o mesmo grupo de sistemas. Em outras palavras, suas funções do Lambda são executadas com maior isolamento umas das outras.

  • Como o software AWS IoT Greengrass Core executa todos os processos secundários no mesmo contêiner da função Lambda, os processos secundários param quando a função Lambda para.

Nenhum contêiner

  • Os seguintes recursos não estão disponíveis para funções Lambda não conteinerizadas:

    • Limites de memória de funções do Lambda.

    • Recursos de volume e dispositivo locais. Você deve acessar esses recursos usando seus caminhos de arquivo no dispositivo principal em vez de como recursos da função Lambda.

  • Se sua função do Lambda não conteinerizada acessar um recurso de machine learning, você deverá identificar um proprietário do recurso e definir permissões de acesso no recurso, não na função do Lambda.

  • As funções Lambda não conteinerizadas têm acesso somente de leitura ao código implantado de outras funções do Lambda que são executadas com o mesmo grupo de sistemas.

Se você alterar a conteinerização de uma função Lambda ao implantá-la, a função pode não funcionar conforme o esperado. Se a função Lambda usar recursos locais que não estão mais disponíveis com a nova configuração de conteinerização, a implantação falhará.

  • Quando você altera uma função Lambda de executada em um contêiner do Greengrass para execução sem conteinerização, os limites de memória da função são descartados. Você deve acessar o sistema de arquivos diretamente em vez de usar recursos locais anexados. Você deve remover todos os recursos anexados antes de implantar a função Lambda.

  • Quando você altera uma função do Lambda da execução sem conteinerização para execução em um contêiner, sua função do Lambda perde o acesso direto ao sistema de arquivos. Você deve definir um limite de memória para cada função ou aceitar o limite de memória padrão de 16 MB. Você pode definir essas configurações para cada função do Lambda ao implantá-la.

Para alterar as configurações de conteinerização de um componente da função Lambda, defina o valor do parâmetro de containerMode configuração como uma das opções a seguir ao implantar o componente.

  • NoContainer— O componente não é executado em um ambiente de execução isolado.

  • GreengrassContainer— O componente é executado em um ambiente de execução isolado dentro do AWS IoT Greengrass contêiner.

Para obter mais informações sobre como implantar e configurar componentes, consulte Implemente AWS IoT Greengrass componentes em dispositivos Atualizar configurações de componentes e.