Este post foi escrito por Julian Wood, senior developer advocate, e Leandro Cavalcante Damascena, engenheiro sênior de arquitetura de soluções.
O AWS Lambda agora oferece suporte ao Python 3.13 como um runtime gerenciado e uma imagem base de container. Python é uma linguagem popular para criar aplicativos Serverless. A versão 3.13 do Python inclui várias mudanças na linguagem, na implementação e na biblioteca padrão. Com essa versão, os desenvolvedores de Python agora podem aproveitar esses novos recursos e aprimoramentos ao criar aplicativos Serverless no Lambda. O Python 3.13 também inclui suporte experimental para vários recursos, que não estão disponíveis no Lambda.
Você pode desenvolver funções do Lambda no Python 3.13 usando o AWS Management Console, a AWS Command Line Interface (AWS CLI), o AWS SDK para Python (Boto3), o AWS Serverless Application Model (AWS SAM), o AWS Cloud Development Kit (AWS CDK) e outras infraestruturas como ferramentas de código.
O runtime do Python 3.13 permite que você implemente as melhores práticas Serverless usando Powertools for AWS Lambda (Python). Este é um kit de ferramentas para desenvolvedores que inclui observabilidade, processamento em lote, integração com o AWS Systems Manager Parameter Store, idempotência, sinalizadores de recursos, métricas do Amazon CloudWatch, logs estruturado e muito mais.
O Lambda @Edge permite que você use o Python 3.13 para personalizar o conteúdo de baixa latência entregue pelo Amazon CloudFront.
Mudanças no runtime do AWS Lambda
Amazon Linux 2023
Assim como no runtime do Python 3.12, o runtime do Python 3.13 é baseado no runtime provided.al2023
, que se baseia na imagem mínima do container Amazon Linux 2023. A imagem mínima do Amazon Linux 2023 usa microdnf
como gerenciador de pacotes e symlinked
como dnf
. Isso substitui o gerenciador de pacotes yum usado no Python 3.11 e nas imagens anteriores baseadas em AL2. Se você implantar suas funções do Lambda como imagens de container, deverá atualizar seus Dockerfiles para usar dnf
em vez de yum
ao atualizar para a imagem base do Python 3.13 a partir do Python 3.11 ou imagens base anteriores.
Saiba mais sobre o runtime provided.al2023
na postagem do blog Apresentando o runtime do Amazon Linux 2023 para o AWS Lambda e na postagem do blog de lançamento do Amazon Linux 2023.
Novos recursos do Python
Melhorias no modelo de dados
Há melhorias no modelo de dados do Python. __static_attributes__ armazena os nomes dos atributos acessados por meio do Self.x
em qualquer função no corpo de uma classe.
Alterações de digitação (typing)
Com a implementação do PEP 702, agora você pode usar o novo decorador warnings.deprecated ()
para para suprimir notificações (warnings) s no sistema de tipos e em runtime.
O Python 3.13 também adiciona o PEP 696, que introduz valores padrão para parâmetros de tipo. Esse aprimoramento permite que os desenvolvedores especifiquem tipos padrão para TypeVar
, ParamSpec
e TypeVarTuple
ao omitir argumentos de tipo.
Biblioteca padrão
A biblioteca padrão inclui melhorias para uma nova exceção PythonFinalizationError, gerada quando uma operação é bloqueada durante a finalização.
As novas funções base64.z85encode () e base64.z85decode () suportam codificação e decodificação de dados Z85.
O módulo copy agora tem uma função copy.replace (), com suporte para vários tipos integrados e qualquer classe que defina o método __replace__ ().
O módulo os tem um conjunto de novas funções para trabalhar com os descritores de arquivos de notificação temporizada do Linux.
Há uma mudança na semântica de mutação definida para locals ().
Recursos experimentais que não estão disponíveis
O Python 3.13 inclui vários recursos experimentais que não estão habilitados para o runtime gerenciado do Lambda ou para as imagens básicas. Esses recursos devem ser habilitados quando o runtime do Python é compilado. Como o runtime do Python 3.13 fornecido pelo Lambda é destinado a cargas de trabalho de produção, esses recursos não estão habilitados na versão Lambda do Python 3.13 e não podem ser habilitados por meio de um sinalizador (flag) de runtime. Para usar esses recursos no Lambda, você pode implantar seu próprio runtime do Python usando um runtime personalizado ou uma imagem de container com esses recursos habilitados.
CPython nas threads livre
Você não pode ativar o suporte experimental para executar o Python em um modo de execução livre, com o bloqueio global do intérprete (GIL) desativado.
Compilador Just-in-Time (JIT)
Você também não pode habilitar o compilador JIT experimental no runtime gerenciado do Lambda ou na imagem base.
Considerações sobre desempenho
No lançamento, os novos runtime do Lambda recebem menos uso do que os já estabelecidos. Isso pode resultar em tempos de inicialização a frio (coldstart) mais longos devido à redução da residência do cache nos subsistemas internos do Lambda. Os coldstarts geralmente 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 do Lambda até que o desempenho se estabilize. Como o desempenho é altamente dependente da carga de trabalho, os clientes com cargas de trabalho sensíveis ao desempenho devem realizar seus próprios testes, em vez de confiar em benchmarks de teste genéricos.
Usando o Python 3.13 no Lambda
Console de gerenciamento da AWS
Para usar o runtime do Python 3.13 para desenvolver suas funções do Lambda, especifique um valor de parâmetro de runtime Python 3.13 ao criar ou atualizar uma função. A versão 3.13 do Python está disponível no menu suspenso Runtime na página Criar função:
Para atualizar uma função Lambda existente para o Python 3.13, navegue até a função no console do Lambda e escolha Editar no painel de configurações do Runtime. A nova versão do Python está disponível no menu suspenso Runtime.
Talvez seja necessário verificar a compatibilidade do código e das dependências com o Python 3.13 e atualizar conforme necessário.
Imagem do container AWS Lambda
Altere a versão da imagem base do Python modificando a instrução FROM
em seu Dockerfile
Modelo de aplicativo Serverless da AWS (AWS SAM)
No AWS SAM, defina o atributo Runtime como python3.13 para usar essa versão.
O AWS SAM oferece suporte à geração desse modelo com o Python 3.13 para novos aplicativos Serverless usando o comando sam init
. Consulte a documentação do AWS SAM.
AWS Cloud Developer Kit (AWS CDK)
No AWS CDK, defina o atributo de runtime como runtime.python_3_13
para usar essa versão. No Python CDK:
No TypeScript CDK:
Conclusão
O Lambda agora oferece suporte ao Python 3.13 como um runtime de linguagem gerenciado. Esta versão usa o sistema operacional Amazon Linux 2023 e inclui adições à linguagem Python 3.13, incluindo melhorias no modelo de dados, alterações de digitação e atualizações na biblioteca padrão. Esta versão não oferece suporte à opção experimental de desativar o bloqueio global do interpretador ou o compilador JIT experimental.
Você pode criar e implantar funções usando o Python 3.13 usando o AWS Management Console, o AWS CLI, o AWS SDK, o AWS SAM, o AWS CDK ou a infraestrutura de sua escolha como ferramenta de código. Você também pode usar a imagem base de container do Python 3.13 se preferir criar e implantar suas funções usando imagens de container.
O suporte ao runtime do Python 3.13 ajuda os desenvolvedores a criar aplicativos Serverless mais eficientes, poderosos e escaláveis. Experimente o runtime do Python 3.13 no Lambda hoje e experimente os benefícios dessa versão atualizada da linguagem.
Para obter mais recursos de aprendizado Serverless, visite Serverless Land.
Este blog é uma tradução do conteúdo original em inglês (link aqui).
Biografia dos autores
Julian Wood é Developer Advocate Sênior na Amazon Web Services (AWS) e ajuda desenvolvedores e criadores a adotar Serverless como a tecnologias que podem transformar a maneira como criam e executam aplicativos. | |
Leandro Cavalcante Damascena é um engenheiro sênior de arquitetura de soluções responsavel pelo Lambda Power Tools for Python |
Biografia do tradutor
Daniel Abib é Senior Solution Architect 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 segurança. Ele trabalha apoiando clientes corporativos, ajudando-os em sua jornada para a nuvem. |