0
0
Lập trình
Harry Tran
Harry Tran106580903228332612117

Hướng dẫn Tạo Lambda Layer tự động với AWS CodeBuild và S3

Đăng vào 1 tuần trước

• 4 phút đọc

Hướng dẫn tạo Lambda Layer tự động với AWS CodeBuild và S3

Trong bài viết này, chúng ta sẽ cùng nhau tìm hiểu cách tạo ra một Lambda Layer sử dụng AWS CodeBuild để tự động hóa quá trình xây dựng và đóng gói, và lưu trữ vào S3 Bucket. Việc này sẽ giúp bạn dễ dàng quản lý các thư viện và phụ thuộc cần thiết cho các hàm Lambda của bạn.

1. Chuẩn bị môi trường làm việc

Trước khi bắt đầu, bạn cần thực hiện các bước chuẩn bị sau:

Tạo S3 Bucket

Bạn cần tạo một S3 Bucket để lưu trữ các file zip chứa Lambda Layer.

Tạo IAM Role

Tạo một IAM Role với các quyền cần thiết cho CodeBuild, S3 và Lambda để đảm bảo quy trình hoạt động trơn tru.

2. Tạo CodeBuild Project trên AWS Console

Bước 1: Khởi tạo Dự án CodeBuild

  1. Truy cập AWS CodeBuild và chọn Create build project.
  2. Tên dự án: Đặt tên cho dự án của bạn, ví dụ: langchain.
  3. Nguồn mã: Chọn No Source.

Bước 2: Cấu hình Môi trường Build

  1. Hình ảnh môi trường: Chọn "Managed Image", rồi chọn môi trường build phù hợp, ví dụ: "Lambda" và chọn runtime là Python.
  2. Service Role: Sử dụng một IAM role đã tồn tại hoặc tạo IAM role mới với các quyền phù hợp cho CodeBuild.

Bước 3: Tạo Buildspec

  1. Dưới phần Buildspec, hãy chọn Insert build commands và nhấn Switch to editor.

  2. Dán đoạn mã sau vào editor:

    Copy
    version: 0.2
    
    phases:
      build:
        commands:
          - pip config set global.target ""
          - mkdir -p package/python
          - pip install --target package/python langchain-core==0.2.19
          - pip install --target package/python langchain-community==0.2.7
          - pip install --target package/python langchain==0.2.8
          - pip install --target package/python langchain-aws==0.1.11
          - cd package && zip ../langchain-layer.zip * -r
    
    artifacts:
      files:
        - 'langchain-layer.zip'
  3. Artifact: Artifact chính là kết quả của quá trình xây dựng, trong trường hợp này là file .zip chứa Lambda Layer. Sau khi quá trình build hoàn tất, artifact sẽ được lưu trữ trong S3 Bucket để dễ dàng phục vụ cho việc triển khai hoặc cập nhật Lambda Layer.

Cuối cùng, hãy nhấn Create build project để tạo dự án.

3. Khởi động Build và Tải Layer lên Lambda

Sau khi tạo xong dự án CodeBuild, bạn có thể bắt đầu một build mới. Quá trình này sẽ tự động cài đặt các thư viện và tạo file .zip, sau đó tải lên S3 Bucket.

Bước 1: Bắt đầu Build

Chọn "Start build" trong AWS CodeBuild Console để khởi động quá trình xây dựng và đóng gói Lambda Layer.

Bước 2: Theo dõi quá trình Build

  1. Chờ đợi cho đến khi quá trình build hoàn tất. Bạn có thể theo dõi tiến trình trong phần "Build logs" của CodeBuild Console để kiểm tra xem quá trình cài đặt và đóng gói có thành công hay không.
  2. Khi build thành công, trạng thái build sẽ hiển thị là "SUCCEEDED" và file .zip của layer sẽ được lưu trữ trong S3 Bucket mà bạn đã chỉ định.

Bước 3: Lấy URL của File .zip và Tạo Lambda Layer

  1. Truy cập vào S3 Bucket mà bạn đã chỉ định và tìm file .zip vừa tải lên. Sao chép URL của file này.
  2. Sử dụng AWS CLI để tạo Lambda Layer với URL của file .zip đó.

4. Sử dụng Lambda Layer trong Hàm Lambda

Sau khi tạo thành công Lambda Layer, bạn có thể thêm layer này vào hàm Lambda của mình như sau:

Bước 1: Cập nhật Lambda Console

  1. Đi đến AWS Lambda Console và chọn hàm Lambda mà bạn muốn sử dụng.
  2. Chọn phần "Layers" và nhấn vào "Add a layer".
  3. Chọn layer mà bạn đã tạo và gán nó vào hàm Lambda.

Kết luận

Việc sử dụng AWS CodeBuild cùng với S3 Bucket giúp tự động hóa quá trình tạo Lambda Layer, đảm bảo rằng các thư viện và phụ thuộc luôn được đóng gói một cách nhất quán và hiệu quả. Điều này không chỉ tiết kiệm thời gian mà còn đảm bảo khả năng tái sử dụng và giảm thiểu lỗi cho nhiều hàm Lambda khác nhau.

Hy vọng với bài viết này, bạn sẽ dễ dàng hơn trong việc triển khai và quản lý Lambda Layers! Nếu bạn có bất kỳ câu hỏi nào hoặc cần thêm hỗ trợ, đừng ngần ngại hỏi nhé!

Lời cảm ơn

Đặc biệt xin gửi lời cảm ơn đến đồng nghiệp của tôi, Khang Nguyen, người đã đồng hành và hỗ trợ tôi trong suốt quá trình viết bài này!
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào