Yêu cầu Python tải lên tệp zip

Mã của hàm AWS Lambda của bạn bao gồm các tập lệnh hoặc chương trình đã biên dịch và phần phụ thuộc của chúng. Bạn sử dụng gói triển khai để triển khai mã chức năng của mình cho Lambda. Lambda hỗ trợ hai loại gói triển khai. hình ảnh vùng chứa và. kho lưu trữ tệp zip

Để tạo gói triển khai cho một. zip, bạn có thể sử dụng một tệp lưu trữ tích hợp. tiện ích lưu trữ tệp zip hoặc bất kỳ tiện ích nào khác. tiện ích tệp zip (chẳng hạn như 7zip) cho công cụ dòng lệnh của bạn. Lưu ý các yêu cầu sau để sử dụng một. zip làm gói triển khai của bạn

  • Các. zip chứa mã chức năng của bạn và mọi phần phụ thuộc được sử dụng để chạy mã chức năng của bạn (nếu có) trên Lambda. Nếu chức năng của bạn chỉ phụ thuộc vào các thư viện tiêu chuẩn hoặc thư viện AWS SDK, thì bạn không cần đưa các thư viện này vào. tập tin zip. Các thư viện này được bao gồm trong môi trường thời gian chạy Lambda được hỗ trợ

  • Nếu. zip lớn hơn 50 MB, chúng tôi khuyên bạn nên tải tệp đó lên chức năng của mình từ nhóm Amazon Simple Storage Service (Amazon S3)

  • Nếu gói triển khai của bạn chứa các thư viện gốc, thì bạn có thể xây dựng gói triển khai với AWS Serverless Application Model (AWS SAM). Bạn có thể sử dụng lệnh AWS SAM CLI

    my-math-function$
    | lambda_function.py
    0 với
    my-math-function$
    | lambda_function.py
    1 để tạo gói triển khai của mình. Tùy chọn này xây dựng gói triển khai bên trong hình ảnh Docker tương thích với môi trường thực thi Lambda

    Để biết thêm thông tin, hãy xem bản dựng sam trong Hướng dẫn dành cho nhà phát triển mô hình ứng dụng AWS Serverless

  • Bạn cần xây dựng gói triển khai để tương thích với kiến ​​trúc tập lệnh này của chức năng

  • Lambda sử dụng quyền truy cập tệp POSIX, vì vậy bạn có thể cần đặt quyền cho thư mục gói triển khai trước khi tạo tệp. kho lưu trữ tệp zip

Gói python có thể chứa mã khởi tạo trong __init__. tập tin py. Trước Python 3. 9, Lambda không chạy __init__. mã py cho các gói trong thư mục xử lý hàm hoặc thư mục mẹ. Trong Trăn 3. 9 trở lên, Lambda chạy mã khởi tạo cho các gói trong các thư mục này trong quá trình khởi chạy

Lưu ý rằng Lambda chỉ chạy mã init khi môi trường thực thi được khởi tạo lần đầu, chứ không chạy cho mỗi lệnh gọi hàm trong môi trường được khởi tạo đó

điều kiện tiên quyết

Bạn cần AWS Command Line Interface (AWS CLI) để gọi các hoạt động API dịch vụ. Để cài đặt AWS CLI, hãy xem Cài đặt AWS CLI trong Hướng dẫn sử dụng giao diện dòng lệnh AWS

một phụ thuộc thời gian chạy là gì?

Cần có gói triển khai để tạo hoặc cập nhật hàm Lambda có hoặc không có phụ thuộc thời gian chạy. Gói triển khai đóng vai trò là gói nguồn để chạy mã chức năng của bạn và các thành phần phụ thuộc (nếu có) trên Lambda

Phần phụ thuộc có thể là bất kỳ phần phụ thuộc gói, mô-đun hoặc tập hợp nào khác không được bao gồm trong môi trường thời gian chạy Lambda cho mã chức năng của bạn

Phần sau đây mô tả hàm Lambda không phụ thuộc vào thời gian chạy

  • Nếu mã chức năng của bạn bằng Python 3. 8 trở lên và nó chỉ phụ thuộc vào các thư viện nhật ký và toán học tiêu chuẩn của Python, bạn không cần đưa các thư viện này vào. tập tin zip. Các thư viện này được bao gồm trong thời gian chạy Python

  • Nếu mã chức năng của bạn phụ thuộc vào AWS SDK dành cho Python (Boto3), thì bạn không cần đưa thư viện boto3 vào. tập tin nén. Các thư viện này được bao gồm trong Python3. 8 và thời gian chạy mới hơn

Ghi chú. Lambda cập nhật định kỳ các thư viện Boto3 để kích hoạt bộ tính năng và cập nhật bảo mật mới nhất. Để có toàn quyền kiểm soát các phần phụ thuộc mà hàm của bạn sử dụng, hãy đóng gói tất cả các phần phụ thuộc với gói triển khai của bạn

Gói triển khai không có phụ thuộc

tạo. zip cho gói triển khai của bạn

Để tạo gói triển khai

  1. Mở dấu nhắc lệnh và tạo thư mục dự án

    my-math-function$
    | lambda_function.py
    2. Ví dụ: trên macOS

    mkdir my-math-function
  2. Điều hướng đến thư mục dự án

    my-math-function$
    | lambda_function.py
    2

    cd my-math-function
  3. Sao chép nội dung của mã Python mẫu từ GitHubvà lưu nó vào một tệp mới có tên

    my-math-function$
    | lambda_function.py
    4. Cấu trúc thư mục của bạn sẽ trông như thế này

    my-math-function$
    | lambda_function.py
  4. Thêm tệp

    my-math-function$
    | lambda_function.py
    4 vào thư mục gốc của. tập tin zip

    zip my-deployment-package.zip lambda_function.py

    Điều này tạo ra một tệp

    my-math-function$
    | lambda_function.py
    6 trong thư mục dự án của bạn. Lệnh tạo ra đầu ra sau

    adding: lambda_function.py (deflated 50%)

Gói triển khai với các phụ thuộc

tạo. zip cho gói triển khai của bạn

Để tạo gói triển khai

  1. Mở dấu nhắc lệnh và tạo thư mục dự án

    my-math-function$
    | lambda_function.py
    7. Ví dụ: trên macOS

    mkdir my-sourcecode-function
  2. Điều hướng đến thư mục dự án

    my-math-function$
    | lambda_function.py
    7

    cd my-sourcecode-function
  3. Sao chép nội dung của mã Python mẫu sau và lưu nó vào một tệp mới có tên

    my-math-function$
    | lambda_function.py
    4

    import requests
    def lambda_handler(event, context):   
        response = requests.get("https://www.example.com/")
        print(response.text)
        return response.text

    Cấu trúc thư mục của bạn sẽ trông như thế này

    my-sourcecode-function$
    | lambda_function.py
  4. Cài đặt thư viện yêu cầu vào thư mục

    zip my-deployment-package.zip lambda_function.py
    0 mới

    pip install --target ./package requests
  5. Tạo gói triển khai với thư viện đã cài đặt ở thư mục gốc

    cd my-math-function
    0

    Điều này tạo ra một tệp

    my-math-function$
    | lambda_function.py
    6 trong thư mục dự án của bạn. Lệnh tạo ra đầu ra sau

    cd my-math-function
    1
  6. Thêm tệp

    my-math-function$
    | lambda_function.py
    4 vào thư mục gốc của tệp zip

    cd my-math-function
    2

Để cập nhật hàm Python bằng môi trường ảo

  1. Kích hoạt môi trường ảo. Ví dụ

    cd my-math-function
    3
  2. Cài đặt thư viện với pip

    cd my-math-function
    4
  3. Vô hiệu hóa môi trường ảo

    cd my-math-function
    5
  4. Tạo gói triển khai với các thư viện đã cài đặt ở gốc

    cd my-math-function
    6

    Lệnh cuối cùng lưu gói triển khai vào thư mục gốc của thư mục

    zip my-deployment-package.zip lambda_function.py
    3

    Một thư viện có thể xuất hiện trong

    zip my-deployment-package.zip lambda_function.py
    4 hoặc
    zip my-deployment-package.zip lambda_function.py
    5 và thư mục đầu tiên
    zip my-deployment-package.zip lambda_function.py
    6 hoặc
    zip my-deployment-package.zip lambda_function.py
    7. Bạn có thể sử dụng lệnh
    zip my-deployment-package.zip lambda_function.py
    8 để định vị một gói cụ thể

  5. Thêm các tệp mã chức năng vào thư mục gốc của gói triển khai của bạn

    cd my-math-function
    7

    Sau khi bạn hoàn thành bước này, bạn sẽ có cấu trúc thư mục sau

    cd my-math-function
    8

Triển khai của bạn. zip vào hàm

Để triển khai mã mới cho chức năng của bạn, bạn tải mã mới lên. gói triển khai tệp zip. Bạn có thể sử dụng để tải lên một. zip vào hàm hoặc bạn có thể sử dụng lệnh UpdateFunctionCode CLI

Ví dụ sau tải lên một tệp có tên my-deployment-package. khóa kéo. Sử dụng tiền tố tệp để tải tệp nhị phân lên. zip sang Lambda