

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
<a name="building-python-uv"></a>


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

**Topics**
+ [Pré-requisitos](#building-python-uv-prerequisites)
+ [Configurando AWS SAM para usar com funções Python Lambda e uv](#building-python-uv-configure)
+ [Exemplos](#building-python-uv-examples)

## Pré-requisitos
<a name="building-python-uv-prerequisites"></a>

**Python**  
*Para instalar o Python, consulte Baixar o [Python no site do Python](https://www.python.org/downloads/).*

**uv**  
 AWS SAMCLIRequer a instalação de [https://docs.astral.sh/uv/](https://docs.astral.sh/uv/)um instalador e resolvedor de pacotes Python extremamente rápido. Para obter instruções, consulte [Instalação](https://docs.astral.sh/uv/getting-started/installation/) 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`.

1. Adicione o seguinte ao arquivo `samconfig.toml`:

   ```
   [default.build.parameters]
   beta_features = true
   [default.sync.parameters]
   beta_features = true
   ```

1. Use a opção `--beta-features` ao usar um comando do AWS SAM CLI compatível. Por exemplo:

   ```
   $ sam build --beta-features
   ```

1. 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
<a name="building-python-uv-configure"></a>

### Etapa 1: configurar seu AWS SAM modelo
<a name="building-python-uv-configure-template"></a>

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.toml` ou`requirements.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
<a name="building-python-uv-examples"></a>

### Exemplo do Hello World
<a name="building-python-uv-examples-hello"></a>

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