Membangun fungsi Lambda Python dengan in uv AWS SAM - AWS Serverless Application Model

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Membangun fungsi Lambda Python dengan in uv AWS SAM

Fitur ini dalam rilis pratinjau untuk AWS SAM dan dapat berubah.

Gunakan AWS Serverless Application Model Command Line Interface (AWS SAMCLI) denganuv, installer dan resolver paket Python cepat, untuk membangun fungsi Python Anda. AWS Lambda

Prasyarat

Python

Untuk menginstal Python, lihat Unduh Python di situs web Python.

uv

AWS SAMCLIMemerlukan instalasi uv, penginstal dan resolver paket Python yang sangat cepat. Untuk petunjuk penginstalan, lihat Instalasi dalam uvdokumentasi.

Ikut serta dalam fitur AWS SAMCLI beta

Karena fitur ini dalam pratinjau, Anda harus memilih untuk menggunakan salah satu metode berikut:

  1. Gunakan variabel lingkungan:SAM_CLI_BETA_PYTHON_UV=1.

  2. Tambahkan hal berikut ke file samconfig.toml Anda:

    [default.build.parameters] beta_features = true [default.sync.parameters] beta_features = true
  3. Gunakan --beta-features opsi saat menggunakan AWS SAMCLI perintah yang didukung. Contoh:

    $ sam build --beta-features
  4. Pilih opsi y saat AWS SAMCLI meminta Anda untuk ikut serta. Berikut ini adalah contohnya:

    $ 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

Mengkonfigurasi AWS SAM untuk digunakan dengan fungsi Python Lambda dan uv

Langkah 1: Konfigurasikan AWS SAM template Anda

Konfigurasikan AWS SAM template Anda dengan yang berikut ini:

  • BuildMethodpython-uv.

  • CodeUri— jalur ke direktori kode fungsi Anda yang berisi pyproject.toml ataurequirements.txt.

  • Handler — handler fungsi Anda (misalnya,app.lambda_handler).

  • Runtime - Versi runtime Python (misalnya,). python3.12

Berikut adalah contoh AWS SAM template yang dikonfigurasi:

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

Contoh

Contoh Hello World

Dalam contoh ini, kita membangun contoh aplikasi Hello World menggunakan Python dengan uv sebagai manajer paket.

uvdapat menggunakan salah satu pyproject.toml atau requirements.txt untuk membaca dependensi. Jika keduanya diberikan, sam build akan dibaca dari requirements.txt untuk dependensi.

Berikut ini adalah struktur aplikasi Hello World kami:

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

pyproject.tomlberkas:

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

Dalam AWS SAM template kami, fungsi Python kami didefinisikan sebagai berikut:

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

Selanjutnya, kami menjalankan sam build untuk membangun aplikasi kami dan mempersiapkan penerapan. AWS SAMCLIMembuat .aws-sam direktori dan mengatur artefak build kami di sana. Dependensi fungsi kami diinstal menggunakan uv dan disimpan di. .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
catatan

Metode python-uv build dikonfigurasi per fungsi di Metadata bagian. Setiap fungsi dalam template Anda dapat menggunakan metode build yang berbeda, memungkinkan Anda untuk mencampur fungsi uv berbasis dengan fungsi pip berbasis dalam AWS SAM template yang sama. Jika tidak ada metode build yang pip ditentukan, digunakan secara default.