Blog

TOP 20 CÂU HỎI PHỎNG VẤN AWS LAMBDA HAY NHẤT NĂM 2024

AWS Lambda là một dịch vụ điện toán không máy chủ được Amazon Web Services (AWS) cung cấp, và ngày càng trở nên phổ biến trong ngành công nghệ. Để giúp bạn chuẩn bị tốt hơn cho các cuộc phỏng vấn về AWS Lambda, bài viết này tổng hợp top 20 câu hỏi phỏng vấn hay nhất năm 2024 kèm theo câu trả lời chi tiết. Hãy cùng khám phá để tự tin và thành công trong buổi phỏng vấn sắp tới của bạn.

Câu hỏi phỏng vấn AWS Lambda cơ bản

AWS Lambda

AWS Lambda là gì?

AWS Lambda là dịch vụ điện toán serverless cho phép bạn chạy mã mà không cần cung cấp hay quản lý máy chủ. Lambda chỉ chạy mã khi cần và tự động thay đổi quy mô, từ một vài yêu cầu mỗi ngày đến hàng nghìn yêu cầu mỗi giây.

Các thành phần chính của hàm Lambda là gì?

Các thành phần chính của hàm Lambda là:

  • Trình xử lý: Đây là điểm vào cho hàm của chúng tôi, một phương thức trong mã của chúng tôi xử lý sự kiện gọi. Hãy coi nó như chức năng “chính” của mã Lambda của chúng ta.
  • Sự kiện: Đây là dữ liệu đầu vào có định dạng JSON kích hoạt việc thực thi hàm. Nó mang thông tin về những gì đã bắt đầu lệnh gọi hàm.
  • Ngữ cảnh: Đây là một đối tượng chứa thông tin thời gian chạy về môi trường thực thi của hàm. Nó bao gồm các chi tiết như tên hàm, phiên bản, giới hạn bộ nhớ, ID yêu cầu và thời gian thực hiện còn lại.
  • Các biến môi trường: Đây là các cặp khóa-giá trị mà bạn có thể đặt để định cấu hình hành vi của hàm Lambda mà không cần sửa đổi mã. Chúng thường được sử dụng để lưu trữ khóa API, thông tin xác thực cơ sở dữ liệu hoặc các cài đặt khác.

Lambda hỗ trợ những ngôn ngữ nào?

Lambda vốn hỗ trợ Node.js, Python, Ruby, Java, Go, C# và PowerShell. Điều này có nghĩa là chúng ta có thể viết trực tiếp các hàm Lambda bằng các ngôn ngữ này mà không cần thiết lập thêm. Bên cạnh đó, nó cũng cho phép chúng ta sử dụng thời gian chạy tùy chỉnh, mang lại sự linh hoạt để đóng gói mã hàm và các phần phụ thuộc trong hình ảnh vùng chứa. Ngoài ra, Lambda hỗ trợ hầu như mọi ngôn ngữ lập trình, cho phép chúng tôi chọn công cụ phù hợp nhất với nhu cầu của mình.

Làm cách nào để tạo hàm Lambda?

Bước 1: Đăng Nhập AWS Management Console

  1. Truy cập AWS Management Console.
  2. Đăng nhập vào tài khoản AWS của bạn.

Bước 2: Mở AWS Lambda Console

  1. Trên AWS Management Console, tìm kiếm “Lambda” trong thanh tìm kiếm.
  2. Chọn “Lambda” từ danh sách kết quả.

Bước 3: Tạo Hàm Lambda

  1. Trong AWS Lambda Console, chọn “Create function” (Tạo hàm).
  2. Chọn phương pháp tạo hàm:
    • Author from scratch (Tạo mới từ đầu): Tạo một hàm mới từ đầu.
    • Use a blueprint (Sử dụng mẫu có sẵn): Sử dụng mẫu có sẵn với mã và cấu hình cơ bản.
    • Browse serverless app repository (Duyệt kho ứng dụng serverless): Sử dụng ứng dụng từ kho ứng dụng serverless.
  3. Chọn “Author from scratch” để tạo một hàm mới từ đầu.

Bước 4: Cấu Hình Hàm Lambda

  1. Function name: Nhập tên cho hàm của bạn 
  2. Runtime: Chọn ngôn ngữ lập trình mà bạn muốn sử dụng 
  3. Permissions: Chọn hoặc tạo IAM role mà hàm Lambda sẽ sử dụng để có quyền truy cập vào các tài nguyên AWS khác : chọn “Create a new role with basic Lambda permissions” nếu bạn chưa có IAM role nào.
  4. Chọn “Create function” để tạo hàm.

Bước 5: Viết Mã Hàm Lambda

  1. Sau khi hàm được tạo, bạn sẽ được chuyển đến trang cấu hình hàm. 
  2. Trong phần “Function code” (Mã hàm), bạn có thể viết mã cho hàm Lambda của mình.       
  3. Sau khi viết xong mã, chọn “Deploy” để triển khai mã.

Bước 6: Cấu Hình Trình Kích Hoạt (Trigger)

  1. Trong phần “Designer”, chọn “Add trigger” (Thêm trình kích hoạt).
  2. Chọn dịch vụ AWS mà bạn muốn sử dụng làm trình kích hoạt cho hàm Lambda 
  3. Cấu hình trình kích hoạt và chọn “Add” để thêm.

Bước 7: Kiểm Tra Hàm Lambda

  1. Trong phần “Test” (Kiểm tra), chọn “Configure test event” (Cấu hình sự kiện kiểm tra).
  2. Chọn mẫu sự kiện kiểm tra phù hợp hoặc tạo sự kiện mới.
  3. Đặt tên cho sự kiện kiểm tra và chọn “Create” (Tạo).
  4. Chọn “Test” để kiểm tra hàm Lambda với sự kiện kiểm tra đã cấu hình.

Bước 8: Giám Sát Và Ghi Log

  1. Sau khi hàm Lambda được chạy, bạn có thể xem kết quả trong phần “Execution result” (Kết quả thực thi).
  2. Để xem log chi tiết, chọn “Monitor” (Giám sát) và mở AWS CloudWatch Logs.

5. Có những cách nào để gọi Hàm Lambda?

Chúng ta có thể gọi hàm Lambda theo nhiều cách:

  • Lệnh gọi đồng bộ: Máy khách đợi hàm hoàn thành và trả về phản hồi.
  • Lệnh gọi không đồng bộ: Máy khách không chờ phản hồi—Lambda thực thi chức năng ở chế độ nền.
  • Ánh xạ nguồn sự kiện: Lambda tự động thăm dò các dịch vụ như DynamoDB hoặc Kinesis và gọi các hàm dựa trên sự kiện.
  • Các phương pháp khác: Chúng bao gồm API Gateway, AWS SDK hoặc lệnh gọi theo lịch trình thông qua Amazon Event Bridge.

Câu hỏi phỏng vấn AWS Lambda trung cấp

Làm cách nào chúng tôi có thể triển khai các phần phụ thuộc cùng với mã Lambda?

Có một số tùy chọn để đóng gói các phần phụ thuộc bằng mã Lambda:

  • Bao gồm trực tiếp: Đối với các ngôn ngữ được thông dịch, chúng tôi có thể đặt các tệp phụ thuộc cùng với mã chức năng của chúng tôi trong gói triển khai .zip.
  • Lớp Lambda: Đối với các ngôn ngữ được biên dịch hoặc các phần phụ thuộc lớn hơn, chúng ta có thể sử dụng các lớp Lambda để đóng gói riêng biệt và chia sẻ các phần phụ thuộc chung giữa các hàm.
  • Hình ảnh vùng chứa: Chúng tôi cũng có thể đóng gói các phần phụ thuộc trong hình ảnh vùng chứa cùng với mã hàm Lambda và thời gian chạy tùy chỉnh.

Làm cách nào để tối ưu hóa hiệu suất của các hàm Lambda ?

Chúng tôi có một số tùy chọn để tối ưu hóa các hàm Lambda:

Phân bổ bộ nhớ: Việc chọn kích thước bộ nhớ phù hợp là rất quan trọng để cân bằng giữa chi phí và hiệu suất. Các công cụ như AWS Lambda Power Tuning có thể giúp tìm ra cấu hình tối ưu.

Kích thước gói: Các gói chức năng nhỏ hơn dẫn đến khởi động nguội nhanh hơn (thời gian cần thiết để hàm Lambda khởi tạo trong lần gọi đầu tiên). Giảm thiểu kích thước gói bằng cách loại bỏ các phần phụ thuộc không cần thiết và nén mã.

Lambda SnapStart: Tính năng này khởi tạo trước các môi trường chức năng, giảm đáng kể thời gian khởi động nguội cho các thời gian chạy cụ thể.

Đồng thời được cung cấp: Định cấu hình đồng thời được cung cấp để giữ cho các phiên bản chức năng luôn ấm áp, đảm bảo thời gian phản hồi nhất quán cho khối lượng công việc quan trọng.

Thời gian chờ và giới hạn đồng thời: Đặt thời gian chờ thích hợp và đồng thời dự trữ để ngăn các chức năng chạy trốn và duy trì môi trường Lambda ổn định.

Bạn có thể sử dụng công cụ nào để giám sát và gỡ lỗi các hàm Lambda ?

Lambda tự động gửi số liệu tới Amazon CloudWatch, bao gồm số lượng yêu cầu, độ trễ, tỷ lệ lỗi, v.v. Chúng ta có thể sử dụng CloudWatch Logs để truy cập nhật ký mà mã hàm và thời gian chạy Lambda tạo ra. Vì vậy, để theo dõi và khắc phục sự cố hiệu suất của các ứng dụng Lambda được phân phối, chúng ta có thể sử dụng AWS X-Ray.

Tiện ích mở rộng Lambda dùng để làm gì ?

Tiện ích mở rộng Lambda cho phép chúng ta nâng cao chức năng của mình bằng cách tích hợp với các công cụ giám sát, khả năng quan sát, bảo mật và quản trị.

Các tiện ích mở rộng có thể chạy dưới dạng các quy trình riêng biệt trong môi trường thực thi để nắm bắt thông tin chẩn đoán hoặc gửi dữ liệu đến các đích tùy chỉnh.

Các ví dụ bao gồm tiện ích mở rộng Datadog dành cho số liệu và dấu vết cũng như tiện ích mở rộng AWS App Config dành cho cập nhật cấu hình động.

Ánh xạ nguồn sự kiện là gì ?

Ánh xạ nguồn sự kiện là tài nguyên Lambda đọc các mục từ nguồn sự kiện và gọi hàm. Chúng tôi có thể sử dụng ánh xạ nguồn sự kiện để xử lý các mục từ luồng Amazon DynamoDB, luồng Amazon Kinesis, hàng đợi Amazon MQ, hàng đợi Apache Kafka tự quản lý, hàng đợi Amazon SQS, v.v. Bên cạnh đó, Lambda cung cấp cơ chế thăm dò để đọc các lô bản ghi từ các nguồn sự kiện và gọi hàm.

Câu hỏi phỏng vấn AWS Lambda nâng cao

AWS LAMBDA

Bạn kiểm soát quyền truy cập vào các hàm Lambda bằng cách nào?

AWS Lambda sử dụng IAM (Quản lý danh tính và quyền truy cập) để kiểm soát quyền truy cập ở hai cấp độ:

Chính sách dựa trên tài nguyên chỉ định tài khoản, dịch vụ và tài nguyên AWS nào được phép gọi hàm.

Vai trò thực thi của hàm xác định những dịch vụ và tài nguyên AWS nào mà mã hàm có thể truy cập. Tuân theo nguyên tắc đặc quyền tối thiểu, các chính sách này phải hạn chế nhất có thể trong khi vẫn cho phép chức năng thực hiện các nhiệm vụ đã định.

Làm cách nào bạn có thể giảm thiểu việc khởi động nguội ở Lambda?

Khởi động nguội xảy ra khi Lambda cần khởi tạo môi trường thực thi mới để xử lý yêu cầu gọi. Để giảm thiểu khởi động nguội và cải thiện khả năng phản hồi của hàm Lambda, chúng ta có thể sử dụng một số chiến lược:

Sử dụng SnapStart: Tính năng này (có sẵn trong một số thời gian chạy nhất định) cho phép chúng tôi duy trì các môi trường đã khởi tạo, giảm đáng kể thời gian khởi động cho các lần gọi tiếp theo.

Cho phép hoạt động đồng thời được cung cấp: Bằng cách luôn sẵn sàng một nhóm môi trường khởi tạo, chúng tôi có thể loại bỏ việc khởi động nguội đối với khối lượng công việc có thể dự đoán được.

Tối ưu hóa kích thước gói: Giảm kích thước gói chức năng của chúng tôi bằng cách loại bỏ các phần phụ thuộc không cần thiết và tối ưu hóa mã có thể đẩy nhanh quá trình khởi tạo.

Lựa chọn ngôn ngữ: Việc chọn các ngôn ngữ như Go hoặc Rust, được biết đến với thời gian khởi động nhanh hơn các ngôn ngữ JVM, cũng có thể giúp giảm thiểu sự chậm trễ khi khởi động nguội.

Tái sử dụng bối cảnh thực thi: Việc tách biệt mã hàm Lambda khỏi logic thiết lập ban đầu cho phép chúng tôi sử dụng lại bối cảnh thực thi giữa các lệnh gọi, giúp giảm thêm chi phí.

Một số phương pháp hay nhất về bảo mật API phổ biến dành cho Lambda là gì?

Khi hiển thị các hàm Lambda qua API Gateway, một số biện pháp bảo mật tốt nhất bao gồm:

Sử dụng trình ủy quyền IAM hoặc Lambda để xác thực và ủy quyền các yêu cầu.

Kích hoạt nhóm người dùng Amazon Cognito để quản lý người dùng.

Xác định chính sách tài nguyên để cho phép hoặc từ chối quyền truy cập dựa trên các thuộc tính yêu cầu như IP nguồn.

Thiết lập mTLS để liên lạc an toàn giữa máy khách và máy chủ.

Sử dụng AWS WAF để bảo vệ khỏi các API nhắm mục tiêu khai thác web phổ biến.

Sự khác biệt giữa hình ảnh vùng chứa Lambda và gói triển khai .zip là gì?

Gói Triển Khai .zip

Ưu điểm:

  1. Đơn giản và nhanh chóng: Gói triển khai .zip là phương pháp truyền thống và dễ dàng sử dụng. Bạn chỉ cần nén mã nguồn và các dependencies vào một tệp .zip và tải lên Lambda.
  2. Tích hợp tốt với các dịch vụ AWS: .zip package dễ dàng tích hợp với các dịch vụ AWS khác và phù hợp cho các ứng dụng nhỏ, nhanh gọn.
  3. Quản lý dễ dàng: Quản lý và triển khai các bản cập nhật mã nguồn rất đơn giản thông qua AWS Management Console, CLI hoặc SDK.

Nhược điểm:

  1. Giới hạn kích thước: Gói .zip có giới hạn kích thước 50 MB cho tệp nén và 250 MB sau khi giải nén, giới hạn khả năng tích hợp các thư viện lớn hoặc nhiều dependencies.
  2. Hỗ trợ ngôn ngữ và môi trường: Chỉ hỗ trợ một số ngôn ngữ lập trình nhất định như Python, Node.js, Java, v.v.

Hình Ảnh Vùng Chứa (Container Image)

Ưu điểm:

  1. Không giới hạn kích thước: Container image cho phép sử dụng hình ảnh lên đến 10 GB, phù hợp với các ứng dụng lớn và phức tạp có nhiều thư viện và dependencies.
  2. Tùy chỉnh môi trường: Với container, bạn có toàn quyền kiểm soát môi trường thực thi, có thể cài đặt bất kỳ phần mềm và thư viện nào bạn cần.
  3. Hỗ trợ nhiều ngôn ngữ: Bạn có thể sử dụng bất kỳ ngôn ngữ lập trình nào bằng cách tùy chỉnh Dockerfile, mở rộng khả năng sử dụng cho nhiều loại ứng dụng.

Nhược điểm:

  1. Độ phức tạp cao: Triển khai container yêu cầu kiến thức về Docker và containerization, có thể khó khăn đối với người mới bắt đầu.
  2. Thời gian khởi động lâu hơn: Container có thể có thời gian khởi động lâu hơn so với gói .zip do kích thước lớn và quá trình tải hình ảnh.

5. Hàm Lambda có thể gọi các hàm Lambda khác không?

Câu trả lời là có, các hàm Lambda có thể gọi trực tiếp các hàm khác bằng AWS SDK. Các trường hợp sử dụng phổ biến bao gồm điều phối chức năng, tổng hợp kết quả từ nhiều chức năng và xử lý sự kiện theo từng giai đoạn. Khi một hàm Lambda gọi một hàm khác, chính sách dựa trên tài nguyên của hàm được gọi phải cấp quyền truy cập một cách rõ ràng để cho phép lệnh gọi từ hàm gọi.

Câu hỏi phỏng vấn AWS Lambda thực tế

1. Làm cách nào để triển khai API REST đơn giản bằng Lambda và API Gateway?

Chúng ta có thể triển khai API REST đơn giản bằng Lambda và API Gateway bằng cách thực hiện các bước sau:

  1. Tạo hàm Lambda: Phát triển hàm Lambda nhận đầu vào từ API Gateway dưới dạng đối tượng sự kiện và trả về đối tượng phản hồi cùng với dữ liệu và mã trạng thái.
  2. Tạo API Gateway: Trong API Gateway, chúng ta tạo một REST API mới với tài nguyên và phương thức tương ứng với đường dẫn API và phương thức HTTP.
  3. Định cấu hình tích hợp: Chúng tôi định cấu hình loại tích hợp của phương thức làm proxy Lambda và chỉ định hàm sẽ gọi
  4. Triển khai API: Triển khai API để tạo điểm cuối URL công khai để truy cập.
  5. Kiểm tra kỹ lưỡng: Chúng ta có thể sử dụng các công cụ như cURL hoặc Postman để đảm bảo API hoạt động chính xác, với hàm Lambda xử lý các yêu cầu và trả về phản hồi thích hợp.

2. Làm cách nào để định cấu hình hàm Lambda để xử lý các sự kiện từ bộ chứa S3?

Chúng ta có thể định cấu hình hàm Lambda để xử lý các sự kiện từ bộ chứa S3 bằng cách thực hiện các bước bên dưới:

  1. Tạo hàm Lambda với các quyền thích hợp để truy cập vào nhóm S3. Trong bảng điều khiển S3, hãy định hình cấu hình thông báo sự kiện trên nhóm nguồn.
  2. Chọn loại sự kiện để kích hoạt thông báo, chẳng hạn như tạo hoặc xóa đối tượng.
  3. Chỉ định hàm Lambda làm đích thông báo.
  4. Kiểm tra bằng cách thực hiện các hành động trên nhóm S3 phù hợp với loại sự kiện đã định cấu hình.
  5. Xác minh rằng hàm Lambda được gọi bằng một sự kiện chứa thông tin chi tiết về hành động S3.

3. Làm cách nào để định cấu hình hàm Lambda để ghi dữ liệu vào bảng DynamoDB?

Chúng ta có thể đặt cấu hình hàm Lambda để ghi dữ liệu vào bảng DynamoDB bằng cách thực hiện sáu bước sau:

  1. Tạo bảng DynamoDB với khóa chính thích hợp và mọi chỉ mục phụ bắt buộc.
  2. Tạo vai trò IAM cho hàm Lambda với quyền truy cập DynamoDB.
  3. Tạo hàm Lambda và gắn vai trò IAM.
  4. Sử dụng SDK DynamoDB để tạo một phiên bản máy khách có tên bảng.
  5. Sử dụng phương thức put_item để ghi các mục vào bảng, chỉ định các thuộc tính chính và các trường khác.
  6. Kiểm tra hàm bằng các sự kiện mẫu và sử dụng truy vấn DynamoDB để xác minh dữ liệu được ghi chính xác.

4. Bạn triển khai hàm Lambda theo lịch trình như thế nào?

Chúng ta có thể triển khai hàm Lambda đã lên lịch bằng cách thực hiện các bước sau – chúng ta:

  1. Tạo hàm Lambda để thực hiện tác vụ mong muốn theo lịch trình.
  2. Mở bảng điều khiển Amazon EventBridge và tạo quy tắc mới.
  3. Xác định biểu thức lịch trình cho quy tắc bằng cú pháp tỷ lệ hoặc cron.
  4. Chọn hàm Lambda làm mục tiêu cho quy tắc.
  5. Lưu quy tắc và kiểm tra bằng cách chờ sự kiện được lên lịch tiếp theo.
  6. Xác minh việc thực thi hàm trong nhật ký và số liệu CloudWatch.

5. Làm cách nào để chuyển dần lưu lượng truy cập sang phiên bản mới của hàm Lambda?

Để chuyển lưu lượng truy cập sang phiên bản mới của hàm Lambda, chúng ta:

  1. Xuất bản phiên bản mới của hàm Lambda với mã được cập nhật.
  2. Tạo bí danh trỏ đến phiên bản ổn định cũ hơn.
  3. Cập nhật bí danh để phân chia lưu lượng truy cập giữa phiên bản cũ và phiên bản mới bằng cách sử dụng trọng số (ví dụ: 90/10).
  4. Dần dần điều chỉnh trọng số để chuyển nhiều lưu lượng truy cập hơn sang phiên bản mới đồng thời theo dõi các số liệu.
  5. Sau khi hài lòng, hãy cập nhật bí danh để gửi 100% lưu lượng truy cập sang phiên bản mới.
  6. Lặp lại quy trình cho lần cập nhật chức năng tiếp theo, coi phiên bản trước là phiên bản ổn định mới.

Kết Luận

Chuẩn bị cho phỏng vấn AWS Lambda đòi hỏi bạn phải nắm vững các kiến thức cơ bản và thực tế về dịch vụ này. Bằng cách làm quen với top 20 câu hỏi và câu trả lời phổ biến, bạn sẽ tự tin hơn và tăng cơ hội thành công trong các cuộc phỏng vấn. AWS Lambda không chỉ là một dịch vụ điện toán không máy chủ mạnh mẽ mà còn là công cụ hữu ích giúp bạn tối ưu hóa và tự động hóa các tác vụ trong ứng dụng của mình.

Leave a Reply

Your email address will not be published. Required fields are marked *