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 uv
um 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:
-
Use as variáveis de ambiente:
SAM_CLI_BETA_PYTHON_UV=1. -
Adicione o seguinte ao arquivo
samconfig.toml:[default.build.parameters] beta_features = true [default.sync.parameters] beta_features = true -
Use a opção
--beta-featuresao usar um comando do AWS SAM CLI compatível. Por exemplo:$sam build --beta-features -
Escolha a opção
yquando AWS SAM CLI solicitar que você se inscreva. Este é um exemplo:$sam buildStarting 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:
-
BuildMethod –
python-uv. -
CodeUri— caminho para seu diretório de código de função contendo
pyproject.tomlourequirements.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 buildStarting 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]:yExperimental 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.