Conceitos básicos do Lambda - AWS Lambda

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á.

Conceitos básicos do Lambda

Para começar a usar o Lambda, use o console do Lambda para criar uma função. Em alguns minutos, você pode criar e implantar uma função e testá-la no console.

Ao executar o tutorial, você aprenderá alguns conceitos fundamentais do Lambda, como passar argumentos para sua função usando o objeto de evento do Lambda. Você também aprenderá a retornar as saídas de log da sua função e a visualizar os registros de invocação da função em Logs. CloudWatch

Para simplificar, você cria sua função usando o runtime do Python ou do Node.js. Com essas linguagens interpretadas, você pode editar o código da função diretamente no editor de código integrado do console. Com linguagens compiladas como Java e C#, você precisa criar um pacote de implantação em sua máquina de compilação local e carregá-lo no Lambda. Para saber mais sobre a implantação de funções no Lambda usando outros runtimes, consulte os links na seção Recursos adicionais e próximas etapas.

dica

Para saber como construir soluções com tecnologia sem servidor, confira o Guia do desenvolvedor com tecnologia sem servidor.

Pré-requisitos

Se você ainda não tiver uma Conta da AWS, siga as etapas a seguir para criar uma.

Como cadastrar-se para uma Conta da AWS
  1. Abra https://portal.aws.amazon.com/billing/signup.

  2. Siga as instruções on-line.

    Parte do procedimento de cadastramento envolve o recebimento de uma chamada telefônica e a inserção de um código de verificação no teclado do telefone.

    Quando você se cadastra para uma Conta da AWS, um Usuário raiz da conta da AWS é criado. O usuário raiz tem acesso a todos os Serviços da AWS e atributos na conta. Como prática recomendada de segurança, atribua acesso administrativo a um usuário administrativo e utilize somente o usuário raiz para executar as tarefas que exigem acesso do usuário raiz.

A AWS envia um e-mail de confirmação depois que o processo de cadastramento é concluído. A qualquer momento, é possível visualizar as atividades da conta atual e gerenciar sua conta acessando https://aws.amazon.com/ e selecionando Minha conta.

Depois de se inscrever em uma Conta da AWS, proteja seu Usuário raiz da conta da AWS, habilite o AWS IAM Identity Center e crie um usuário administrativo para não usar o usuário raiz em tarefas cotidianas.

Proteção da Usuário raiz da conta da AWS
  1. Faça login no AWS Management Console como o proprietário da conta ao escolher a opção Usuário raiz e inserir o endereço de e-mail da Conta da AWS. Na próxima página, insira a senha.

    Para obter ajuda ao fazer login usando o usuário raiz, consulte Fazer login como usuário raiz no Guia do usuário do Início de Sessão da AWS.

  2. Ative a autenticação multifator (MFA) para o usuário raiz.c

    Para obter instruções, consulte Ativar um dispositivo MFA virtual para o usuário raiz da Conta da AWS (console) no Guia do usuário do IAM.

Criar um usuário administrativo
  1. Habilitar o IAM Identity Center.

    Para obter instruções, consulte Enabling AWS IAM Identity Center no Manual do Usuário do AWS IAM Identity Center.

  2. No Centro de Identidade do IAM, conceda acesso administrativo a um usuário administrativo.

    Para ver um tutorial sobre como usar o Diretório do Centro de Identidade do IAM como fonte de identidade, consulte Configure user access with the default Diretório do Centro de Identidade do IAM no Manual do Usuário do AWS IAM Identity Center.

Login como usuário administrativo
  • Para fazer login com o usuário do Centro de Identidade do IAM, utilize o URL de login enviado ao seu endereço de e-mail quando você criou o usuário do Centro do Usuário do IAM.

    Para obter ajuda com o login utilizando um usuário do Centro de Identidade do IAM, consulte Fazer login no portal de acesso da AWS, no Guia do usuário do Início de Sessão da AWS.

Criar uma função do Lambda com o console

Neste exemplo, sua função usa um objeto JSON contendo dois valores inteiros rotulados "length" e "width". A função multiplica esses valores para calcular uma área e a retorna como uma string JSON.

Sua função também imprime a área calculada, junto com o nome do grupo de CloudWatch registros. Posteriormente no tutorial, você aprenderá a usar o CloudWatch Logs para visualizar os registros da invocação de suas funções.

Para criar sua função, primeiro é necessário criar uma função básica Hello world. Na etapa a seguir, você então adiciona seu próprio código de função.

Criar uma função do Lambda hello world com o console
  1. Abra a página Funções do console do Lambda.

  2. Escolha a opção Criar função.

  3. Selecione Criar do zero.

  4. No painel Informações básicas, para Nome da função, insira myLambdaFunction.

  5. Em Runtime, escolha Node.js 20.x ou Python 3.12

  6. Deixe arquitetura definido como x86_64 e escolha Criar função.

O Lambda cria uma função que retorna a mensagem Hello from Lambda!. O Lambda também cria um perfil de execução para sua função. Um perfil de execução é um perfil do AWS Identity and Access Management (IAM) que concede a uma função do Lambda permissão para acessar recursos e Serviços da AWS. Para sua função, a função que o Lambda cria concede permissões básicas para CloudWatch gravar em Logs.

Agora você usa o editor de código integrado do console para substituir o código Hello world criado pelo Lambda com seu próprio código de função.

Node.js
Modificar o código no console
  1. Escolha a guia Código.

    No editor de código integrado do console, você deve ver o código da função que o Lambda criou. Se você não vir a guia index.mjs no editor de código, selecione index.mjs no explorador de arquivos, conforme mostrado no diagrama a seguir.

    
                  Diagrama mostrando o editor de código do console com uma seta destacando o arquivo index.mjs no explorador de arquivos
  2. Cole o código a seguir na guia index.mjs, substituindo o código que o Lambda criou.

    export const handler = async (event, context) => { const length = event.length; const width = event.width; let area = calculateArea(length, width); console.log(`The area is ${area}`); console.log('CloudWatch log group: ', context.logGroupName); let data = { "area": area, }; return JSON.stringify(data); function calculateArea(length, width) { return length * width; } };
  3. Selecione Implantar para atualizar a função do seu código. Quando o Lambda implementa as alterações, o console exibe um banner informando que sua função foi atualizada com sucesso.

Entender seu código de função

Antes de passar para a próxima etapa, vamos analisar o código da função e entender alguns conceitos-chave do Lambda.

  • O manipulador do Lambda:

    Sua função Lambda contém uma função Node.js chamada handler. Uma função do Lambda em Node.js pode conter mais de uma função Node.js, mas a função manipuladora é sempre o ponto de entrada para seu código. Quando sua função é invocada, o Lambda executa esse método.

    Quando você criou sua função Hello world usando o console, o Lambda definiu automaticamente o nome do método manipulador para sua função como handler. Certifique-se de não editar o nome dessa função Node.js. Caso faça isso, o Lambda não poderá executar seu código quando você invocar sua função.

    Para saber mais sobre o manipulador Lambda em Node.js, consulte Manipulador da função do AWS Lambda em Node.js.

  • O objeto do evento Lambda:

    A função handler recebe dois argumentos, event e context. Um evento no Lambda corresponde a um documento formatado em JSON que contém dados para a sua função processar.

    Se sua função for invocada por outro AWS service (Serviço da AWS), o objeto de evento via conter informações sobre o evento que causou a invocação. Por exemplo, se um bucket do Amazon Simple Storage Service (Amazon S3) invocar sua função quando um objeto for carregado, o evento vai conter o nome do bucket do Amazon S3 e a chave do objeto.

    Neste exemplo, você criará um evento no console inserindo um documento formatado em JSON com dois pares de valores-chave.

  • O objeto de contexto Lambda:

    O segundo argumento que sua função assume é context. O Lambda passa o objeto de contexto para sua função automaticamente. O objeto de contexto contém informações sobre a invocação da função e o ambiente de execução.

    Você pode usar o objeto de contexto para gerar informações sobre a invocação da sua função para fins de monitoramento. Neste exemplo, sua função usa o logGroupName parâmetro para gerar o nome de seu grupo de CloudWatch registros.

    Para saber mais sobre o objeto de contexto do Lambda em Node.js, consulte Objeto de contexto do AWS Lambda em Node.js.

  • Registro em log no Lambda:

    Com o Node.js, você pode usar métodos de console, como console.log e console.error, para enviar informações para o log da sua função. O código de exemplo usa console.log instruções para gerar a área calculada e o nome do grupo CloudWatch Logs da função. Você também pode usar qualquer biblioteca de registro em log que grava em stdout ou stderr.

    Para saber mais, consulte Registro em log da função do AWS Lambda em Node.js. Para saber mais sobre registro em log em outros runtimes, consulte as páginas “Criar com” para ver os runtimes nos quais você está interessado.

Python
Modificar o código no console
  1. Escolha a guia Código.

    No editor de código integrado do console, você deve ver o código da função que o Lambda criou. Se você não vir a guia lambda_function.py no editor de código, selecione lambda_function.py no explorador de arquivos, conforme mostrado no diagrama a seguir.

    
                  Diagrama mostrando o editor de código do console com uma seta destacando o arquivo lambda_function.py no explorador de arquivos
  2. Cole o código a seguir na guia lambda_function.py, substituindo o código que o Lambda criou.

    import json import logging logger = logging.getLogger() logger.setLevel(logging.INFO) def lambda_handler(event, context): # Get the length and width parameters from the event object. The # runtime converts the event object to a Python dictionary length=event['length'] width=event['width'] area = calculate_area(length, width) print(f"The area is {area}") logger.info(f"CloudWatch logs group: {context.log_group_name}") # return the calculated area as a JSON string data = {"area": area} return json.dumps(data) def calculate_area(length, width): return length*width
  3. Selecione Implantar para atualizar a função do seu código. Quando o Lambda implementa as alterações, o console exibe um banner informando que sua função foi atualizada com sucesso.

Entender seu código de função

Antes de passar para a próxima etapa, vamos analisar o código da função e entender alguns conceitos-chave do Lambda.

  • O manipulador do Lambda:

    Sua função do Lambda contém uma função Python chamada lambda_handler. Uma função do Lambda em Python pode conter mais de uma função Python, mas a função manipulador é sempre o ponto de entrada para seu código. Quando sua função é invocada, o Lambda executa esse método.

    Quando você criou sua função Hello world usando o console, o Lambda definiu automaticamente o nome do método manipulador para sua função como lambda_handler. Certifique-se de não editar o nome dessa função Python. Caso faça isso, o Lambda não poderá executar seu código quando você invocar sua função.

    Para saber mais sobre o manipulador Lambda em Python, consulte Manipulador de função do Lambda em Python.

  • O objeto do evento Lambda:

    A função lambda_handler recebe dois argumentos, event e context. Um evento no Lambda corresponde a um documento formatado em JSON que contém dados para a sua função processar.

    Se sua função for invocada por outro AWS service (Serviço da AWS), o objeto de evento via conter informações sobre o evento que causou a invocação. Por exemplo, se um bucket do Amazon Simple Storage Service (Amazon S3) invocar sua função quando um objeto for carregado, o evento vai conter o nome do bucket do Amazon S3 e a chave do objeto.

    Neste exemplo, você criará um evento no console inserindo um documento formatado em JSON com dois pares de valores-chave.

  • O objeto de contexto Lambda:

    O segundo argumento que sua função assume é context. O Lambda passa o objeto de contexto para sua função automaticamente. O objeto de contexto contém informações sobre a invocação da função e o ambiente de execução.

    Você pode usar o objeto de contexto para gerar informações sobre a invocação da sua função para fins de monitoramento. Neste exemplo, sua função usa o log_group_name parâmetro para gerar o nome de seu grupo de CloudWatch registros.

    Para saber mais sobre o objeto de contexto do Lambda em Python, consulte AWS LambdaObjeto de contexto em Python.

  • Registro em log no Lambda:

    Com o Python, você pode usar uma instrução print ou uma biblioteca de registro em log do Python para enviar informações ao log da sua função. Para ilustrar a diferença no que é capturado, o código de exemplo usa os dois métodos. Em uma aplicação de produção, recomendamos que você use uma biblioteca de registro em log.

    Para saber mais, consulte Registro em log da função do AWS Lambda em Python. Para saber mais sobre registro em log em outros runtimes, consulte as páginas “Criar com” para ver os runtimes nos quais você está interessado.

Invocar a função do Lambda usando o console

Para invocar sua função usando o console do Lambda, primeiro você cria um evento de teste para enviar à sua função. O evento é um documento formatado em JSON contendo dois pares de valores-chave com as chaves "length" e "width".

Criar o evento de teste
  1. No painel Origem do código, escolha Testar.

  2. Selecione Criar novo evento.

  3. Em Nome do evento, insira myTestEvent.

  4. No painel Evento JSON, substitua os valores padrão colando o seguinte:

    { "length": 6, "width": 7 }
  5. Escolha Salvar.

Agora você testa sua função e usa o console Lambda e CloudWatch os registros para visualizar os registros da invocação da função.

Para testar sua função e visualizar os registros de invocação no console
  • No painel Origem do código, escolha Testar. Quando sua função terminar de ser executada, você verá os logs de resposta e função exibidos na guia Resultados da execução. Você deve ver resultados semelhantes ao seguinte:

    Node.js
    Test Event Name myTestEvent Response "{\"area\":42}" Function Logs START RequestId: 5c012b0a-18f7-4805-b2f6-40912935034a Version: $LATEST 2023-08-31T23:39:45.313Z 5c012b0a-18f7-4805-b2f6-40912935034a INFO The area is 42 2023-08-31T23:39:45.331Z 5c012b0a-18f7-4805-b2f6-40912935034a INFO CloudWatch log group: /aws/lambda/myLambdaFunction END RequestId: 5c012b0a-18f7-4805-b2f6-40912935034a REPORT RequestId: 5c012b0a-18f7-4805-b2f6-40912935034a Duration: 20.67 ms Billed Duration: 21 ms Memory Size: 128 MB Max Memory Used: 66 MB Init Duration: 163.87 ms Request ID 5c012b0a-18f7-4805-b2f6-40912935034a
    Python
    Test Event Name myTestEvent Response "{\"area\": 42}" Function Logs START RequestId: 2d0b1579-46fb-4bf7-a6e1-8e08840eae5b Version: $LATEST The area is 42 [INFO] 2023-08-31T23:43:26.428Z 2d0b1579-46fb-4bf7-a6e1-8e08840eae5b CloudWatch logs group: /aws/lambda/myLambdaFunction END RequestId: 2d0b1579-46fb-4bf7-a6e1-8e08840eae5b REPORT RequestId: 2d0b1579-46fb-4bf7-a6e1-8e08840eae5b Duration: 1.42 ms Billed Duration: 2 ms Memory Size: 128 MB Max Memory Used: 39 MB Init Duration: 123.74 ms Request ID 2d0b1579-46fb-4bf7-a6e1-8e08840eae5b

Neste exemplo, você invocou seu código usando o atributo de teste do console. Isso significa que você pode ver os resultados da execução da função diretamente no console. Quando sua função é invocada fora do console, você precisa usar CloudWatch Logs.

Para ver os registros de invocação da sua função em Logs CloudWatch
  1. Abra a página Grupos de registros do CloudWatch console.

  2. Escolha o nome do grupo de logs para sua função (/aws/lambda/myLambdaFunction). Esse é o nome do grupo de logs que sua função imprimiu no console.

  3. Na guia Fluxos de log, escolha o fluxo de logs para a invocação da sua função.

    Você deve ver saída semelhante a:

    Node.js
    INIT_START Runtime Version: nodejs:20.v13 Runtime Version ARN: arn:aws:lambda:us-west-2::runtime:e3aaabf6b92ef8755eaae2f4bfdcb7eb8c4536a5e044900570a42bdba7b869d9 START RequestId: aba6c0fc-cf99-49d7-a77d-26d805dacd20 Version: $LATEST 2023-08-23T22:04:15.809Z 5c012b0a-18f7-4805-b2f6-40912935034a INFO The area is 42 2023-08-23T22:04:15.810Z aba6c0fc-cf99-49d7-a77d-26d805dacd20 INFO CloudWatch log group: /aws/lambda/myLambdaFunction END RequestId: aba6c0fc-cf99-49d7-a77d-26d805dacd20 REPORT RequestId: aba6c0fc-cf99-49d7-a77d-26d805dacd20 Duration: 17.77 ms Billed Duration: 18 ms Memory Size: 128 MB Max Memory Used: 67 MB Init Duration: 178.85 ms
    Python
    INIT_START Runtime Version: python:3.12.v16 Runtime Version ARN: arn:aws:lambda:us-west-2::runtime:ca202755c87b9ec2b58856efb7374b4f7b655a0ea3deb1d5acc9aee9e297b072 START RequestId: 9d4096ee-acb3-4c25-be10-8a210f0a9d8e Version: $LATEST The area is 42 [INFO] 2023-09-01T00:05:22.464Z 9315ab6b-354a-486e-884a-2fb2972b7d84 CloudWatch logs group: /aws/lambda/myLambdaFunction END RequestId: 9d4096ee-acb3-4c25-be10-8a210f0a9d8e REPORT RequestId: 9d4096ee-acb3-4c25-be10-8a210f0a9d8e Duration: 1.15 ms Billed Duration: 2 ms Memory Size: 128 MB Max Memory Used: 40 MB

Limpeza

Quando você tiver terminado de trabalhar com a função de exemplo, exclua-a. Você também pode excluir o grupo de logs que armazena os logs da função e a função de execução que o console criou.

Para excluir uma função do Lambda
  1. Abra a página Funções do console do Lambda.

  2. Escolha uma função.

  3. Escolha Ações, Excluir.

  4. Na caixa de diálogo Delete function (Excluir função), digite delete (excluir) e escolha Delete (Excluir).

Para excluir o grupo de logs
  1. Abra a página de grupos de log do console do CloudWatch.

  2. Selecione o grupo de logs da função (/aws/lambda/my-function).

  3. Selecione Actions (Ações), Delete log group(s) (Excluir grupo(s) de log).

  4. Na caixa de diálogo Delete log group(s) (Excluir grupo(s) de logs), escolha Delete (Excluir).

Para excluir a função de execução
  1. Abra a página Roles (Funções) no console do AWS Identity and Access Management (IAM).

  2. Selecione o perfil de execução da função (por exemplo, myLambdaFunction-role-31exxmpl).

  3. Escolha Excluir.

  4. Na caixa de diálogo Delete role (Excluir perfil), insira o nome do perfil e, em seguida, escolha Delete (Excluir).

Você pode automatizar a criação e a limpeza de funções, papéis e grupos de log com o AWS CloudFormation e a AWS Command Line Interface (AWS CLI).

Recursos adicionais e próximas etapas

Agora que você criou e testou uma função do Lambda simples usando o console, siga estes próximos passos: