Criar funções do Lambda com Python - AWS Lambda

Criar funções do Lambda com Python

Você pode executar o código Python noAWS Lambda. O Lambda fornece runtimes para o Python que executa o seu código para processar eventos. Seu código é executado em um ambiente que inclui o SDK for Python (Boto 3), com as credenciais de uma função do AWS Identity and Access Management (IAM) que você gerencia. Para saber mais sobre as versões do SDK incluídas nos runtimes do Python, consulte Versões do SDK incluídas no runtime.

O Lambda oferece suporte aos seguintes runtimes Python.

Nome Identificador Sistema operacional Data da substituição Bloquear a criação de funções Bloquear a atualização de funções

Python 3.12

python3.12

Amazon Linux 2023

Não programado

Não programado

Não programado

Python 3.11

python3.11

Amazon Linux 2

Não programado

Não programado

Não programado

Python 3.10

python3.10

Amazon Linux 2

Não programado

Não programado

Não programado

Python 3.9

python3.9

Amazon Linux 2

Não programado

Não programado

Não programado

Para criar uma função em Python
  1. Abra o console do lambda.

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

  3. Configure as seguintes opções:

    • Nome da função: digite um nome para a função.

    • Runtime: escolha Python 3.12.

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

  5. Para configurar um evento de teste, escolha Test (Testar).

  6. Em Nome do evento, insira test.

  7. Escolha Salvar alterações.

  8. Escolha Test (Testar) para invocar a função.

O console cria uma função do Lambda com um único arquivo de origem chamado lambda_function. Você pode editar esse arquivo e adicionar mais arquivos no editor de códigos integrado. Para salvar suas alterações, selecione Salvar. Em seguida, para executar seu código, escolha Teste.

Sua função do Lambda é fornecida com um grupo de logs do CloudWatch Logs. O runtime envia detalhes sobre cada invocação para o CloudWatch Logs. Ele retransmite quaisquer logs que sua função produz durante a invocação. Se a função retornar um erro, o Lambda formatará o erro e o retornará para o invocador.

Versões do SDK incluídas no runtime

A versão do AWS SDK incluída no runtime do Python depende da versão do runtime e da Região da AWS. Para encontrar a versão do SDK incluída no runtime que você está usando, crie uma função do Lambda com o código a seguir.

import boto3 import botocore def lambda_handler(event, context): print(f'boto3 version: {boto3.__version__}') print(f'botocore version: {botocore.__version__}')

Formato de resposta

Nos runtimes do Python 3.12 e posteriores, as funções retornam caracteres Unicode como parte da resposta JSON. Os runtimes anteriores do Python retornam sequências de escape para caracteres Unicode nas respostas. Por exemplo, no Python 3.11, se você retornar uma string Unicode, como “こんにちは”, ela escapará dos caracteres Unicode e retornará “\u3053\u3093\u306b\u3061\u306f”. O runtime do Python 3.12 retorna o “こんにちは” original.

O uso de respostas Unicode reduz o tamanho das respostas do Lambda, facilitando o ajuste de respostas maiores para o tamanho máximo de carga útil de 6 MB para funções síncronas. No exemplo anterior, a versão com escape é de 32 bytes, em comparação com 17 bytes com a string Unicode.

Ao atualizar para o Python 3.12, talvez seja necessário ajustar o código para levar em conta o novo formato de resposta. Se o chamador espera Unicode de escape, você deve adicionar código à função de retorno para escapar do Unicode manualmente ou ajustar o chamador para lidar com o retorno do Unicode.

Desligamento normal para extensões

Os runtimes do Python 3.12 e versões posteriores oferecem recursos aprimorados de desligamento normal para funções com extensões externas. Quando o Lambda desliga um ambiente de execução, ele envia um sinal SIGTERM para o runtime e, depois, um evento SHUTDOWN para cada extensão externa registrada. Você pode capturar o sinal SIGTERM na função do Lambda e apagar recursos, como conexões de banco de dados que foram criadas pela função.

Para saber mais sobre o ciclo de vida do ambiente de execução, consulte Entender o ciclo de vida do ambiente de execução do Lambda. Para ver exemplos de como usar o desligamento normal com extensões, consulte o AWS Samples GitHub repository.