Construindo funções Python Lambda com o uv AWS SAM - AWS Serverless Application Model

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

Construindo funções Python Lambda com o uv AWS SAM

Esse recurso está na versão prévia AWS SAM e está sujeito a alterações.

Use a AWS Serverless Application Model Command Line Interface (AWS SAMCLI) com uv um rápido instalador e resolvedor de pacotes Python para criar suas funções em Python. AWS Lambda

Pré-requisitos

Python

Para instalar o Python, consulte Baixar o Python no site do Python.

uv

AWS SAMCLIRequer a instalação de uvum instalador e resolvedor de pacotes Python extremamente rápido. Para obter instruções, consulte Instalação na Documentação do uv.

Opte pelo recurso AWS SAMCLI beta

Como esse recurso está em versão prévia, opte por usar um dos seguintes métodos:

  1. Use as variáveis de ambiente: SAM_CLI_BETA_PYTHON_UV=1.

  2. Adicione o seguinte ao arquivo samconfig.toml:

    [default.build.parameters] beta_features = true [default.sync.parameters] beta_features = true
  3. Use a opção --beta-features ao usar um comando do AWS SAM CLI compatível. Por exemplo:

    $ sam build --beta-features
  4. Escolha a opção y quando AWS SAM CLI solicitar que você se inscreva. Este é um exemplo:

    $ sam build Starting Build use cache Build method "python-uv" is a beta feature. Please confirm if you would like to proceed You can also enable this beta feature with "sam build --beta-features". [y/N]: y

Configurando AWS SAM para usar com funções Python Lambda e uv

Etapa 1: configurar seu AWS SAM modelo

Configure seu AWS SAM modelo com o seguinte:

  • BuildMethodpython-uv.

  • CodeUri— caminho para seu diretório de código de função contendo pyproject.toml ourequirements.txt.

  • Handler — seu manipulador de funções (por exemplo,app.lambda_handler).

  • Runtime — versão de tempo de execução do Python (por exemplo,python3.12).

Aqui está um exemplo de um AWS SAM modelo configurado:

AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 ... Resources: MyFunction: Type: AWS::Serverless::Function Properties: CodeUri: ./my_function Handler: app.lambda_handler Runtime: python3.12 Metadata: BuildMethod: python-uv ...

Exemplos

Exemplo do Hello World

Neste exemplo, criamos uma amostra do aplicativo Hello World usando Python uv como gerenciador de pacotes.

uvpode usar uma pyproject.toml ou requirements.txt para ler dependências. Se ambos forem fornecidos, sam build lerá requirements.txt as dependências.

A seguir está a estrutura do nosso aplicativo Hello World:

hello-python-uv
├── README.md
├── events
│   └── event.json
├── hello_world
│   ├── __init__.py
│   ├── app.py
│   └── pyproject.toml
├── samconfig.toml
└── template.yaml

Arquivo pyproject.toml:

[project] name = "my-function" version = "0.1.0" requires-python = ">=3.12" dependencies = [ "requests>=2.31.0", "boto3>=1.28.0", ]

Em nosso AWS SAM modelo, nossa função Python é definida da seguinte forma:

AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 ... Resources: HelloWorldFunction: Type: AWS::Serverless::Function Properties: CodeUri: hello_world/ Handler: app.lambda_handler Runtime: python3.12 Architectures: - x86_64 Metadata: BuildMethod: python-uv

Em seguida, executamos sam build para criar nosso aplicativo e nos preparar para a implantação. O AWS SAMCLI cria um diretório .aws-sam e organiza nossos artefatos de construção lá. Nossas dependências de função são instaladas usando uv e armazenadas em.aws-sam/build/HelloWorldFunction/.

hello-python-uv$ sam build Starting Build use cache Build method "python-uv" is a beta feature. Please confirm if you would like to proceed You can also enable this beta feature with "sam build --beta-features". [y/N]: y Experimental features are enabled for this session. Visit the docs page to learn more about the AWS Beta terms https://aws.amazon.com/service-terms/. Cache is invalid, running build and copying resources for following functions (HelloWorldFunction) Building codeuri: /Users/.../hello-python-uv/hello_world runtime: python3.12 metadata: {'BuildMethod': 'python-uv'} architecture: x86_64 functions: HelloWorldFunction Running PythonUvBuilder:UvBuild Running PythonUvBuilder:CopySource Build Succeeded Built Artifacts : .aws-sam/build Built Template : .aws-sam/build/template.yaml Commands you can use next ========================= [*] Validate SAM template: sam validate [*] Invoke Function: sam local invoke [*] Test Function in the Cloud: sam sync --stack-name {{stack-name}} --watch [*] Deploy: sam deploy --guided
nota

O método de python-uv construção é configurado por função na Metadata seção. Cada função em seu modelo pode usar um método de construção diferente, permitindo que você misture funções uv pip baseadas com funções baseadas no mesmo AWS SAM modelo. Se nenhum método de construção for especificado, pip é usado por padrão.