Chamando uma função AWS Lambda de outra função Lambda

Chamando uma função AWS Lambda de outra função Lambda

Chamando uma função AWS Lambda de outra função Lambda 1
cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


Neste artigo, vou explicar como criar uma função do AWS Lambda e, em seguida, chamar essa função de outra função do Lambda na mesma região. Esse é um cenário útil no qual podemos precisar executar uma segunda função lambda com base no resultado de alguma lógica anterior. Outro cenário pode ser executar uma segunda função lambda várias vezes usando parâmetros diferentes.

Para fins deste artigo, consideraremos um aplicativo típico de revendedor, no qual podemos comprar produtos diferentes de um site de revendedor usando uma função lambda.

Diagrama de arquitetura

Figura 1 – Diagrama da arquitetura

Se você considerar o diagrama da arquitetura acima, poderá ver que temos uma função lambda da AWS – a ParentFunction, que assume uma função específica do IAM (Invocar outra função Lambda) e chama outra função lambda – a função ChildFunction com uma carga útil. Uma vez que a execução do ChildFunction for concluída, ele retorna uma resposta, que é então repassada para o ParentFunction. o ParentFunction recebe a resposta e lida com o trabalho adequadamente.

Como neste exemplo, vamos assumir que o ParentFunction vai chamar o ChildFunction com uma carga útil de ProductName, Quantity e o UnitPrice desse produto. o ChildFunction, por sua vez, processará essa carga útil, calculará o valor total das vendas, gerará um ID de referência da transação e retornará essas informações ao ParentFunction.

Criando a primeira função do AWS Lambda – ChildFunction

Vamos primeiro criar a ChildFunction, que processará a carga útil de entrada e retornará os resultados à ParentFunction.

Acesse https://console.aws.amazon.com/ e faça login com suas credenciais. Quando estiver no console, comece a pesquisar por “Lambda”E clique no primeiro resultado que aparece no menu suspenso.

Função de pesquisa do AWS Lambda

Figura 2 – Pesquisa da função AWS Lambda

Isso levará você à página inicial da Função Lambda, onde você pode criar uma nova função lambda pressionando a tecla “Criar FunçãoBotão

Criar função do AWS Lambda

Figura 3 – Criar a função AWS Lambda

Deixe o nome desta função ser – “ChildFunction” e selecione Python 3.8 como o tempo de execução.

Nome da função do AWS Lambda

Figura 4 – Nome da função

Selecione a opção para Crie uma nova função com permissões básicas lambda e clique em Criar Função.

Selecionando a função

Figura 5 – Selecionando a função

Uma nova função lambda será criada onde você pode escrever e testá-lo.

Função AWS Lambda criada

Figura 6 – Função Lambda da AWS criada

Vamos agora para o Visual Studio Code e começar a escrever nosso código para o ChildFunction da seguinte maneira. Esta é uma aplicação muito simples que irá executar os seguintes passos:

  1. Ler dados do ParentFunction

  2. Gere o ID de referência da transação

  3. Calcular as informações da empresa

  4. Retorne o resultado para a função pai

Código da Função Criança

Figura 7 – Código da função filho

Depois que o código for escrito e testado na máquina local, você poderá copiar e colar o script na função lambda para testá-lo na AWS.

Copiando código para a função Lambda

Figura 8 – Copiando código para a função Lambda

Para testar a ChildFunction, você precisa criar o Evento de Teste, no qual é possível passar as informações da carga útil que usaremos para chamar da ParentFunction. Para configurar eventos de teste, clique em Evento de Teste, e selecione Configurar.

Configurar eventos de teste

Figura 9 – Configurar evento de teste

Dê um nome ao evento de teste e especifique aqui as informações da carga útil para testá-lo.

Configurar evento de teste

Figura 10 – Configurar evento de teste

Dar em cima Teste para executar o ChildFunction com as informações da carga útil.

Testando a função

Figura 11 – Testando a função

Se a execução for bem-sucedida, você obterá um retorno bem-sucedido com os cálculos concluídos da seguinte forma. Como você pode ver na figura abaixo, a função retorna os seguintes itens.

  1. ID da transação

  2. Nome do Produto

  3. Montante

Esta informação também estará visível para a ParentFunction quando chamar a ChildFunction.

Função filho executada

Figura 12 – Função filho executada

Além disso, copie o ARN da função filho, que pode ser usado posteriormente para solicitar políticas e funções.

Copiar ARN

Figura 13 – Copiar ARN

Configurando a política do ParentFunction

Para permitir que a ParentFunction chame a ChildFunction, precisamos fornecer à ParentFunction direitos específicos para chamar outra função lambda. Isso pode ser feito adicionando políticas específicas a uma função e, em seguida, atribua essa função à função lambda.

Vá para o módulo IAM dentro do portal da AWS e selecione Políticas. Clique em Criar política para criar um novo.

Criar política

Figura 14 – Criar política

Na página Criar Política, selecione a guia JSON e inclua o seguinte resumo de política, da seguinte maneira. Lembre-se de atualizar o URL do Recurso que você copiou na etapa anterior. Atribua à política um nome adequado e crie-o. Vou nomear essa política como – “InvokeOtherLambdaPolicy”.

Adicionando JSON de política

Figura 15 – Adicionando JSON da política

Navegue até o Funções e clique em Criar função.

Criar função

Figura 16 – Criar função

Selecione Lambda como o caso de uso e clique em Avançar para adicionar as permissões necessárias.

Escolha Caso de Uso

Figura 17 – Escolha um caso de uso

Adicione as duas políticas a seguir a esta função e crie a função.

  1. AWSLambdaBasicExecutionRole

  2. InvokeOtherLambdaPolicy

Adicionando função de execução básica do AWS Lambda

Figura 18 – Adicionando a função de execução básica do AWS Lambda

Adicionando Invocar Outra Política Lambda

Figura 19 – Adicionando invocar outra política lambda

Clique em Avançar e prossiga e crie a função. Dê a essa função um nome adequado, por exemplo, “InvokeOtherLambdaRole”.

Criando a função AWS Lambda – ParentFunction

Vá para a página Função Lambda e clique em Crie um novo Função Lambda. Estou chamando essa função lambda – “ParentFunction”. Escolha o tempo de execução como Python 3.8 e atribua o Função InvokeOtherLambdaRole que acabamos de criar na etapa anterior.

Criando a função pai

Figura 20 – Criando a função pai

Vamos agora novamente ao Visual Studio Code para escrever o código e copiá-lo e colá-lo novamente no editor lambda. Como vamos usar um recurso da AWS nessa função, precisamos usar o Boto3 biblioteca python para usar os recursos da AWS. Essa biblioteca pode ser usada para interagir com outros recursos da AWS, como e quando necessário.

Código para a Função Pai

Figura 21 – Código para a função pai

Como você pode ver no código acima, criamos um cliente boto para interagir com a função lambda. Além disso, criamos uma carga útil que pode ser passada para o ChildFunction ao chamá-lo. E uma vez executada a ChildFunction, ela retornará a resposta, que será armazenada na variável “response”.

Por fim, podemos analisar as informações da carga útil da resposta e usá-las de acordo com nossas necessidades. Nesse caso, vamos apenas imprimi-lo na tela. Copie o código do VS Code para o editor lambda.

Função dos pais

Figura 22 – Função dos pais

Crie um evento de teste de amostra para esta função, pois não vamos passar nenhuma carga útil para esta função pai aqui. Salve o evento e clique no botão Teste.

Configurando evento de teste

Figura 23 – Configurando evento de teste

Depois de executar a ParentFunction, ela passará as informações da carga útil para a ChildFunction, onde o resultado será calculado e a resposta final será enviada de volta da ChildFunction para a ParentFunction. Você pode ver os logs de execução e confirmar isso da seguinte maneira.

Função pai executada

Figura 24 – Função pai executada

Conclusão

Neste artigo, expliquei como podemos chamar ou executar uma função do AWS Lambda de outra função lambda na mesma região. Usando a função AWS Lambda, você pode escrever facilmente aplicativos sem servidor sem precisar se preocupar com a infraestrutura em execução por trás dele. Freqüentemente, torna-se necessário que possamos chamar funções diferentes do AWS Lambda de dentro de outro lambda devido ao tratamento de lógica de negócios complexa ou algo assim.

Aveek Das
Últimas mensagens de Aveek Das (ver todos)

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br
Leia Também  Usando uma tabela de dimensão de data no Power BI