O blog da AWS

Runtime Python 3.14 agora disponível no AWS Lambda

Por Leandro Cavalcante Damascena, Sênior Solution Architect Engineer na Amazon Web Service.

O AWS Lambda agora suporta Python 3.14 tanto como Runtime gerenciado quanto como imagem base de container. Python é uma linguagem popular para construir aplicações Serverless. Os desenvolvedores agora podem aproveitar novos recursos e melhorias ao criar aplicações Serverless no Lambda.

Você pode desenvolver funções Lambda em Python 3.14 usando o AWS Management ConsoleAWS Command Line Interface (AWS CLI)AWS SDK for Python (Boto3)AWS Serverless Application Model (AWS SAM)AWS Cloud Development Kit (AWS CDK), e outras ferramentas de infraestrutura como código.

O Runtime Python 3.14 suporta Powertools for AWS Lambda (Python), um kit de ferramentas para desenvolvedores que ajuda a implementar melhores práticas Serverless. O Powertools inclui observabilidade, processamento em lote, integração com AWS Systems Manager Parameter Store, idempotência, feature flags, métricas do Amazon CloudWatch, registro estruturado e muito mais.

O Lambda@Edge permite que você use Python 3.14 para personalizar conteúdo de baixa latência entregue através do Amazon CloudFront.

Esta publicação destaca atualizações notáveis da linguagem Python, recursos e suporte do Runtime Python Lambda, e como você pode usar o novo Runtime Python 3.14 em suas aplicações Serverless.

Novos recursos do Python

Python 3.14 contém as seguintes atualizações notáveis.

Literal de strings de template

Template strings introduzem um novo mecanismo para processamento personalizado de strings usando o prefixo t em vez de f para f-strings. Diferentemente das f-strings que retornam uma string simples, as t-strings retornam um objeto representando tanto as partes estáticas quanto as interpoladas.

Avaliação de anotações de tipo

Com a implementação da PEP 649, Python 3.14 adia a avaliação de anotações de tipo até que seja necessário. Isso reduz a sobrecarga de tempo de importação e resolve problemas de referência futura.

Mensagens de erro aprimoradas

O interpretador agora fornece sugestões úteis quando detecta erros de digitação em palavras-chave do Python. Isso inclui estruturas de controle de fluxo incorretas, expressões condicionais mal utilizadas, erros de sintaxe de string, uso de tipo incompatível em dicts/sets e incompatibilidades de protocolo de gerenciador de contexto.

whille :

Traceback (most recent call last):
  File "<stdin>", line 1
    whille :
    ^^^^^^
SyntaxError: invalid syntax. Did you mean 'while'?
Python

Biblioteca padrão

A biblioteca padrão inclui um novo módulo compression.zstd que fornece suporte nativo para compressão zstandard, oferecendo melhores taxas de compressão e descompressão mais rápida em comparação com algoritmos existentes.

Python 3.14 também inclui mensagens de erro aprimoradas e capacidades aprimoradas de introspecção asyncio.

Mudanças no Runtime Lambda

O Runtime Python do Lambda contém as seguintes mudanças.

Recursos do Python 3.14 que não estão disponíveis

Python 3.14 inclui alguns recursos que não estão habilitados para o Runtime gerenciado do Lambda ou imagens base. Esses recursos devem ser habilitados quando o Runtime Python é compilado e não podem ser habilitados através de um sinalizador de tempo de execução. O compilador just-in-time (JIT) não está disponível no Runtime Lambda porque ainda está em fase experimental. O modo free-threaded, executando Python sem o global interpreter lock, é suportado no Python 3.14, mas não está habilitado no Runtime Lambda devido ao potencial impacto no desempenho. Para usar esses recursos no Lambda, você pode implantar sua própria compilação do Runtime Python com esses recursos habilitados, usando uma imagem de container ou Runtime personalizado.

Amazon Linux 2023

Assim como os Runtimes Python 3.12 e Python 3.13, o Runtime Python 3.14 é baseado no provided.al2023 Runtime, que é baseado na imagem de container mínima do Amazon Linux 2023. A imagem mínima do Amazon Linux 2023 usa microdnf como gerenciador de pacotes, com link simbólico como dnf. Isso substitui o gerenciador de pacotes yum usado no Python 3.11 e em imagens anteriores baseadas em AL2. Se você implantar suas funções Lambda como imagens de container, você deve atualizar seus Dockerfiles para usar dnf em vez de yum ao atualizar para a imagem base Python 3.14 a partir de imagens base Python 3.11 ou anteriores.

Saiba mais sobre o Runtime provided.al2023 na publicação Introducing the Amazon Linux 2023 Runtime for AWS Lambda e na publicação  de lançamento do Amazon Linux 2023.

Usando Python 3.14 no Lambda

Você pode usar Python 3.14 para suas funções Lambda no AWS Management Console, uma imagem de container do AWS Lambda ou o AWS Cloud Development Kit (AWS CDK).

AWS Management Console

Para usar o Runtime Python 3.14 para desenvolver suas funções Lambda, especifique um valor de parâmetro de Runtime de Python 3.14 ao criar ou atualizar uma função. Na página Create Function do console do AWS Lambda, Python 3.14 está disponível no menu suspenso Runtime.

Para atualizar uma função Lambda existente para Python 3.14, navegue até a função no console do Lambda e escolha Edit no painel Runtime settings . A nova versão do Python está disponível no menu suspenso Runtime.

Atualizando uma função para Python 3.14

Para atualizar uma função para Python 3.14, verifique seu código e dependências quanto à compatibilidade com Python 3.14, execute testes e atualize conforme necessário. Considere usar assistentes de codificação de IA generativa como Amazon Q Developer, Amazon Q Developer for CLI, ou Kiro para ajudar com as atualizações.

Imagem de container do AWS Lambda

Altere a versão da imagem base Python modificando a instrução FROM no seu Dockerfile:

FROM public.ecr.aws/lambda/python:3.14
# Copy function code
COPY lambda_handler.py ${LAMBDA_TASK_ROOT}
Python

AWS Serverless Application Model (AWS SAM)

No AWS SAM defina o atributo Runtime como python3.14 para usar esta versão.

AWSTemplateFormatVersion: ‘2010-09-09’Transform: AWS::Serverless-2016-10-31Description: Simple Lambda Function  MyFunction:    Type: AWS::Serverless::Function    Properties:      Description: My Python Lambda Function      CodeUri: my_function/      Handler: lambda_function.lambda_handler      Runtime: python3.14

O AWS SAM suporta a geração deste template com Python 3.14 para novas aplicações Serverless usando o comando sam init. Consulte a documentação do AWS SAM.

AWS Cloud Development Kit

No AWS CDK, defina o atributo Runtime como lambda.Runtime.PYTHON_3_14 para usar esta versão.

Em Python CDK:

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: Simple Lambda Function
  MyFunction:
    Type: AWS::Serverless::Function
    Properties:
      Description: My Python Lambda Function
      CodeUri: my_function/
      Handler: lambda_function.lambda_handler
      Runtime: python3.14
Code

Em TypeScript CDK:

import * as cdk from 'aws-cdk-lib';
import * as lambda from 'aws-cdk-lib/aws-lambda'
import * as path from 'path';
import { Construct } from 'constructs';
export class SampleLambdaStack extends cdk.Stack {
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);
    // The code that defines your stack goes here
    // The python3.14 enabled Lambda Function
    const lambdaFunction = new lambda.Function(this, 'python314LambdaFunction', {
      runtime: lambda.Runtime.PYTHON_3_14,
      memorySize: 512,
      code: lambda.Code.fromAsset(path.join(__dirname, '/../lambda')),
      handler: 'lambda_handler.handler'
    })
  }
}
JavaScript

Os Patterns do Serverless Land AWS Top Picks for Python, agora usam Python 3.14.

Considerações de desempenho

No lançamento, novos Runtimes Lambda recebem menos uso do que Runtimes estabelecidos existentes. Isso pode resultar em tempos de cold start mais longos devido à residência de cache reduzida dentro dos subsistemas internos do Lambda. Os tempos de cold start normalmente melhoram nas semanas seguintes ao lançamento à medida que o uso aumenta. Como resultado, a AWS recomenda não tirar conclusões de comparações de desempenho lado a lado com outros Runtimes Lambda até que o desempenho tenha se estabilizado. Como o desempenho é altamente dependente da carga de trabalho, clientes com cargas de trabalho sensíveis ao desempenho devem conduzir seus próprios testes em vez de confiar em benchmarks de teste genéricos.

Conclusão

O Lambda agora suporta Python 3.14 como Runtime de linguagem gerenciado para ajudar os desenvolvedores a construir aplicações Serverless mais eficientes, poderosas e escaláveis. As adições da linguagem Python 3.14 incluem melhorias no modelo de dados, mudanças de tipagem e atualizações na biblioteca padrão. O Runtime gerenciado do Lambda não inclui a opção de desabilitar o global interpreter lock (GIL) ou usar o compilador JIT experimental.

Você pode construir e implantar funções usando Python 3.14 usando o AWS Management Console, AWS CLI, AWS SDK, AWS SAM, AWS CDK, ou sua ferramenta de infraestrutura como código de escolha. Você também pode usar a imagem base de container Python 3.14 se preferir construir e implantar suas funções usando imagens de container.

Experimente o Runtime Python 3.14 no Lambda hoje e experimente os benefícios desta versão atualizada da linguagem.

Para encontrar mais exemplos de Python, use a Serverless Patterns Collection. Para mais recursos de aprendizado Serverless, visite Serverless Land.

Este conteúdo foi traduzido da pulicação original do blog, que pode ser encontrado aqui.

Autores

Leandro Cavalcante Damascena é um Sênior Solution Architect Engineer na Amazon Web Service.

Tradutores

Daniel Abib é Arquiteto de Soluções Sênior e Especialista em Amazon Bedrock na AWS, com mais de 25 anos trabalhando com gerenciamento de projetos, arquiteturas de soluções escaláveis, desenvolvimento de sistemas e CI/CD, microsserviços, arquitetura Serverless & Containers e especialização em Machine Learning. Ele trabalha apoiando Startups, ajudando-os em sua jornada para a nuvem.

https://www.linkedin.com/in/danielabib/

Rodrigo Peres é Arquiteto de Soluções na AWS, com mais de 20 anos de experiência trabalhando com arquitetura de soluções, desenvolvimento de sistemas e modernização de sistemas legados.