AWS Lambda - Tổng quan
AWS Lambdalà một dịch vụ thực hiện tính toán không máy chủ, bao gồm tính toán mà không cần bất kỳ máy chủ nào. Mã được thực thi dựa trên phản hồi của các sự kiện trong dịch vụ AWS như thêm / xóa tệp trong nhóm S3, cập nhật bảng Amazon động dB, yêu cầu HTTP từ cổng API Amazon, v.v.
Để làm việc với AWS Lambda, chúng tôi chỉ cần đẩy mã trong dịch vụ AWS Lambda. Tất cả các nhiệm vụ và tài nguyên khác như cơ sở hạ tầng, hệ điều hành, bảo trì máy chủ, giám sát mã, nhật ký và bảo mật đều do AWS đảm nhận.
AWS Lambdahỗ trợ các ngôn ngữ như Java, NodeJS, Python, C # và Go. Lưu ý rằngAWS Lambda sẽ chỉ hoạt động với các dịch vụ AWS.
AWS Lambda là gì?
Định nghĩa về AWS Lambda theo tài liệu chính thức của nó như sau:
AWS Lambda là một dịch vụ máy tính cho phép bạn chạy mã mà không cần cấp phép hoặc quản lý máy chủ. AWS Lambda chỉ thực thi mã của bạn khi cần thiết và tự động mở rộng 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. Bạn chỉ trả tiền cho thời gian tính toán mà bạn sử dụng - không tính phí khi mã của bạn không chạy.
AWS Lambda hoạt động như thế nào?
Sơ đồ khối giải thích hoạt động của AWS Lambda trong năm bước đơn giản được hiển thị bên dưới:
Step 1 − Tải lên mã AWS lambda bằng bất kỳ ngôn ngữ nào mà AWS lambda hỗ trợ, đó là NodeJS, Java, Python, C # và Go.
Step 2 − Đây là một số dịch vụ AWS mà AWS lambda có thể được kích hoạt.
Step 3 −AWS Lambda có mã tải lên và chi tiết sự kiện mà trình kích hoạt đã xảy ra. Ví dụ: sự kiện từ Amazon S3, Amazon API Gateway, Dynamo dB, Amazon SNS, Amazon Kinesis, CloudFront, Amazon SES, CloudTrail, ứng dụng di động, v.v.
Step 4 − Thực thi AWS Lambda Code chỉ khi được kích hoạt bởi các dịch vụ AWS trong các tình huống như -
- Người dùng tải lên các tệp trong nhóm S3
- URL điểm cuối http get / post bị truy cập
- dữ liệu được thêm / cập nhật / xóa trong bảng động dB
- thông báo đẩy
- thu thập luồng dữ liệu
- lưu trữ trang web
- gửi email
- ứng dụng di động, v.v.
Step 5 − Hãy nhớ rằng AWS chỉ tính phí khi mã AWS lambda thực thi và không tính phí theo cách khác.
Ưu điểm của việc sử dụng AWS Lambda
AWS Lambda cung cấp nhiều lợi ích khi bạn đang làm việc trên nó. Phần này thảo luận chi tiết về chúng -
Dễ dàng làm việc với mã
AWS Lambda cung cấp cho bạn cơ sở hạ tầng để tải lên mã của bạn. Nó đảm nhận việc duy trì mã và kích hoạt mã bất cứ khi nào sự kiện bắt buộc xảy ra. Nó cho phép bạn chọn bộ nhớ và thời gian chờ cần thiết cho mã.
AWS Lambda cũng có thể thực hiện các yêu cầu song song theo các trình kích hoạt sự kiện.
Cung cấp nhật ký
AWS Lambda cung cấp thông tin chi tiết về số lần mã được thực thi và thời gian thực thi, bộ nhớ tiêu thụ, v.v. AWS CloudWatch thu thập tất cả các nhật ký, giúp hiểu được quy trình thực thi và gỡ lỗi mã.
Thanh toán dựa trên mức sử dụng
Thanh toán AWS Lambda được thực hiện dựa trên việc sử dụng bộ nhớ, yêu cầu được thực hiện và việc thực hiện, được thanh toán theo gia số tối thiểu 100ms. Vì vậy, đối với một lần thực thi 500 mili giây, thanh toán sẽ sau mỗi 100 mili giây. Nếu bạn chỉ định mã lambda AWS của mình sẽ được thực thi trong 500 mili giây và thời gian thực thi chỉ là 200 mili giây, AWS sẽ chỉ lập hóa đơn cho bạn về thời gian thực hiện, đó là 200 mili giây thực thi thay vì 500 mili giây. AWS luôn tính phí cho thời gian thực thi được sử dụng. Bạn không cần phải trả tiền nếu chức năng không được thực thi.
Hỗ trợ đa ngôn ngữ
AWS Lambda hỗ trợ các ngôn ngữ phổ biến như Node. js, Python, Java, C # và Go. Đây là những ngôn ngữ được sử dụng rộng rãi và bất kỳ nhà phát triển nào cũng sẽ thấy dễ dàng khi viết mã cho AWS Lambda.
Dễ dàng tạo và triển khai mã
Có nhiều tùy chọn có sẵn cho Lambda để tạo và triển khai mã. Để viết mã, bạn có thể sử dụng trình chỉnh sửa trực tuyến AWS, Visual Studio IDE hoặc Eclipse IDE. Nó cũng có hỗ trợ cho khung máy chủ giúp việc viết và triển khai mã AWS Lambda trở nên dễ dàng. Bên cạnh bảng điều khiển AWS, chúng tôi có AWS-cli để tạo và triển khai mã.
Các tính năng khác
Bạn có thể sử dụng AWS Lambda miễn phí bằng cách đăng nhập vào cấp miễn phí AWS. Nó cung cấp cho bạn dịch vụ miễn phí trong 1 năm. Hãy xem các dịch vụ miễn phí được cung cấp bởi cấp miễn phí AWS.
Nhược điểm của việc sử dụng AWS Lambda
Mặc dù có nhiều ưu điểm nhưng AWS Lambda lại sở hữu những nhược điểm sau:
Nó không thích hợp cho các dự án nhỏ.
Bạn cần phân tích kỹ mã của mình và quyết định bộ nhớ và thời gian chờ. Trong trường hợp nếu hàm của bạn cần nhiều thời gian hơn những gì được phân bổ, nó sẽ bị chấm dứt theo thời gian chờ được chỉ định trên đó và mã sẽ không được thực thi đầy đủ.
Vì AWS Lambda hoàn toàn dựa vào AWS cho cơ sở hạ tầng, bạn không thể cài đặt bất kỳ phần mềm bổ sung nào nếu mã của bạn yêu cầu.
Sự kiện kích hoạt AWS Lambda
Các sự kiện có thể kích hoạt AWS Lambda như sau:
- Nhập vào một đối tượng S3
- Chèn, cập nhật và xóa dữ liệu trong bảng Dynamo DB
- Thông báo đẩy từ SNS
- GET / POST các lệnh gọi tới API Gateway
- Sửa đổi tiêu đề ở người xem hoặc yêu cầu / phản hồi gốc trong CloudFront
- Ghi nhật ký các mục trong luồng dữ liệu AWS Kinesis
- Nhật ký lịch sử trong CloudTrail
Các trường hợp sử dụng của AWS Lambda
AWS Lambda là một dịch vụ máy tính chủ yếu được sử dụng để chạy các quy trình nền. Nó có thể kích hoạt khi được sử dụng với các dịch vụ AWS khác. Dưới đây là danh sách các dịch vụ AWS mà chúng tôi có thể sử dụng AWS Lambda:
Đối tượng S3 và AWS Lambda
Amazon S3 chuyển chi tiết sự kiện cho AWS Lambda khi có bất kỳ tệp nào tải lên trong S3. Chi tiết về quá trình tải lên tệp hoặc xóa tệp hoặc di chuyển tệp được chuyển đến AWS Lambda. Mã trong AWS Lambda có thể thực hiện bước cần thiết khi nhận được thông tin chi tiết về sự kiện. Ví dụ: tạo thumbnail của hình ảnh chèn vào S3.
DynamoDB và AWS Lambda
DynamoDB có thể kích hoạt AWS Lambda khi có dữ liệu được thêm, cập nhật và xóa trong bảng. Sự kiện AWS Lambda có tất cả các chi tiết của bảng AWS DynamoDB về việc chèn / cập nhật hoặc xóa.
API Gateway và AWS Lambda
API Gateway có thể kích hoạt AWS Lambda trên các phương thức GET / POST. Chúng tôi có thể tạo biểu mẫu và chia sẻ thông tin chi tiết với điểm cuối API Gateway và sử dụng nó với AWS Lambda để xử lý thêm, chẳng hạn như tạo mục nhập dữ liệu trong bảng DynamoDB.
SNS và AWS Lambda
SNS được sử dụng để thông báo đẩy, gửi SMS, v.v. Chúng tôi có thể kích hoạt AWS lambda khi có bất kỳ thông báo đẩy nào xảy ra trong SNS. Chúng tôi cũng có thể gửi SMS đến số điện thoại từ AWS Lambda khi nó nhận được trình kích hoạt.
Sự kiện đã lên lịch và AWS Lambda
Sự kiện đã lên lịch có thể được sử dụng cho các công việc cron. Nó có thể kích hoạt AWS Lambda thực hiện nhiệm vụ theo mẫu thời gian thông thường.
CloudTrail và AWS Lambda
CloudTrail có thể hữu ích trong việc theo dõi nhật ký trên tài khoản. Chúng tôi có thể sử dụng AWS Lambda để xử lý thêm nhật ký CloudTrail.
Kinesis và AWS Lambda
Kinesis được sử dụng để thu thập / lưu trữ dữ liệu theo dõi thời gian thực đến từ các lần nhấp vào trang web, nhật ký, nguồn cấp dữ liệu truyền thông xã hội và một trình kích hoạt để AWS Lambda có thể thực hiện xử lý bổ sung trên các nhật ký này.
CloudFront và Lambda @ Edge
CloudFront là một mạng phân phối nội dung, nơi bạn có thể lưu trữ trang web của mình và Lambda @ Edge có thể được sử dụng để xử lý các tiêu đề đến từ yêu cầu của người xem, yêu cầu gốc, phản hồi gốc và phản hồi của người xem. Sửa đổi tiêu đề bao gồm các tác vụ như sửa đổi dữ liệu cookie, ghi lại URL, được sử dụng cho thử nghiệm AB để thay đổi phản hồi gửi lại cho người dùng, thêm thông tin tiêu đề bổ sung cho mục đích bảo mật, v.v.