Các chức năng AWS Lambda là một cách để chạy mã mà không cần cung cấp hoặc quản lý các máy chủ của riêng bạn. Thay vì chạy một ứng dụng luôn trực tuyến, họ chạy một chức năng duy nhất trong đám mây, có thể được kích hoạt để đáp ứng với các sự kiện API hoặc các sự kiện khác trong tài khoản AWS của bạn.
Làm thế nào để bạn sử dụng chức năng Lambda?
Lambda là một dịch vụ tính toán, đơn giản và đơn giản, và có lẽ nó là đơn giản nhất trong tất cả. Thay vì thuê một máy chủ có số lượng lõi và dung lượng RAM cụ thể, bạn chỉ cần tải lên mã của mình và chạy chức năng. Thông thường, bạn sẽ không chạy nó bằng tay; thay vào đó, bạn sẽ đặt nó chạy dựa trên các hành động từ các dịch vụ AWS khác. Ví dụ: chạy một chức năng để thay đổi kích thước hình ảnh bất cứ khi nào một tệp mới được đặt vào S3 ( một phương pháp được sử dụng bởi Thời báo Seattle để có hiệu quả lớn ) hoặc truy vấn cơ sở dữ liệu bất cứ khi nào yêu cầu được gửi đến API Gateway.
Tài nguyên máy tính được tự động cung cấp cho chức năng đang chạy và nó sẽ sử dụng nhiều bộ nhớ khi nó cần miễn là nhiệm vụ tiếp tục. Bạn chỉ được lập hóa đơn dựa trên số lần gọi hàm và dung lượng bộ nhớ mà mỗi lần gọi sử dụng.
Điều này làm cho Lambda rất linh hoạt để sử dụng như một phụ trợ. Các ứng dụng truyền thống chủ yếu là nguyên khối; bạn có một máy chủ (hoặc một nhóm trong số họ) đang chạy ứng dụng của bạn. Bạn có thể có các máy chủ riêng biệt để lưu trữ web, cơ sở dữ liệu và những thứ khác, nhưng rất nhiều ứng dụng được xây dựng theo cách này, một trong những bộ phận thực thi lớn, nhiều bộ phận chuyển động.
Với mọi thứ liên kết với nhau và không có trật tự nghiêm ngặt, điều này có thể trở nên lộn xộn rất nhanh. Nó cũng khó hơn để mở rộng hiệu quả; nếu bạn thấy rằng một phần trong ứng dụng của bạn là nút cổ chai, có thể khó loại bỏ nếu không mở rộng toàn bộ ứng dụng và làm tăng đáng kể hóa đơn AWS của bạn trong quá trình này.
Thay vào đó, bạn có thể cắt bỏ hoàn toàn nút cổ chai và chuyển nó sang Lambda. Rốt cuộc, Lambda không quan tâm nếu bạn chạy chức năng của mình mười lần một tháng, hay mười triệu lần một tháng.
Điều này cho phép Lambda có hiệu quả cao và khi được thực hiện đúng cách có thể giúp bạn tiết kiệm rất nhiều tiền (https://dashbird.io/blog/saving-money-switching-serverless/) . Adam Pash từ Postlight đã có thể giảm hóa đơn AWS hàng tháng của họ từ hơn 10.000 đô la xuống chỉ còn 370 đô la, chỉ bằng cách chuyển sang Lambda và tối ưu hóa việc sử dụng bộ nhớ.
Mặc dù mọi thứ sẽ không trở nên quyết liệt hay dễ dàng cho mọi ứng dụng, Lambda có một số lợi ích tuyệt vời khiến nó trở thành một phần quan trọng trong dòng dịch vụ tính toán của AWS.
Đối với các ứng dụng quan trọng không phải là nhiệm vụ, nó cũng trình bày một cách rất rẻ để chạy một ứng dụng cần thực hiện các yêu cầu API. Ví dụ: bạn có thể phục vụ một ứng dụng web tĩnh mà không cần bất kỳ máy chủ nào , bằng cách lưu trữ trang web của bạn trong S3, phục vụ nó thông qua CloudFront và kết nối với phụ trợ Lambda thông qua API Gateway giao tiếp với bảng DynamoDB .(https://aws.amazon.com/dynamodb/?tag=reviewgeek-20)
Những thứ này có giá bao nhiêu?
Giống như hầu hết các AWS, giá của Lambda là rất nhiều mô hình Trả tiền khi bạn đi. Thay vì trả một mức giá cố định cho toàn bộ máy chủ, bạn sẽ chỉ trả cho số lượng tài nguyên chính xác mà ứng dụng của bạn đang sử dụng, bạn không bao giờ trả tiền cho thời gian nhàn rỗi, thậm chí không một giây. Điều này rõ ràng làm cho Lambda khá hiệu quả, trên hết là có thể loại bỏ các tắc nghẽn trong các ứng dụng nguyên khối.
Phí của Lambda như sau, cho us-east-1
:
- $ 0,20 cho mỗi yêu cầu 1 triệu
- $ 0,000016667 cho mỗi GB-giây
Khoản phí đầu tiên có ý nghĩa nhất; nếu bạn có 100 triệu yêu cầu trong một tháng, bạn sẽ phải trả một khoản phí 20 đô la cho việc đó.
Khoản phí thứ hai khó hiểu hơn nhiều. Về cơ bản, bạn bị tính phí dựa trên việc sử dụng bộ nhớ cho các chức năng của mình, vì đó thường là yếu tố giới hạn cho AWS. Nếu chức năng của bạn khởi động, phân bổ 1024 MB RAM và chạy trong một giây, bạn sẽ phải trả $ 0,000001667 cho việc đó. Đó là một con số khá thấp, nhưng trên 1 triệu yêu cầu, đó là $ 1,667.
Đương nhiên, bạn sẽ muốn chọn thời gian chạy hiệu quả cho bộ nhớ. NodeJS thường được sử dụng, vì nó khá nhẹ so với thời gian chạy như Java. Tuy nhiên, Java có thể nhanh hơn đối với các tác vụ mất nhiều thời gian hơn để hoàn thành và vì bạn không phải trả thời gian cho việc khởi tạo thời gian chạy (nghĩa là, một khởi động lạnh lùng của Wap), nó không phải lúc nào cũng tệ như trên giấy.
Đây hoàn toàn là một trò chơi cân bằng, nhưng bạn muốn tìm cách giảm thiểu hai điều sử dụng bộ nhớ và thời gian chạy chức năng. Không có phí rõ ràng cho các chức năng chạy lâu hơn, nhưng bạn bị tính phí bởi giây, trên mỗi GB, do đó, chức năng 256 MB chạy trong hai giây sẽ khiến bạn tốn kém như chức năng 512 MB chạy cho một chức năng.
Bắt đầu
Đăng nhập vào tài khoản AWS của bạn và truy cập Bảng điều khiển quản lý Lambda .(https://console.aws.amazon.com/lambda/home?tag=reviewgeek-20)
Có hai tab chính ở đây. Đầu tiên là cho Ứng dụng; Các ứng dụng Lambda quản lý nhiều chức năng và được triển khai tự động cụ thể bằng mẫu SAM. Điều này cho phép chúng được theo dõi trên Git và phiên bản được quản lý, giúp ích rất nhiều khi làm việc với hàng trăm chức năng.
Tab thứ hai dành cho các chức năng riêng lẻ. Nếu bạn chỉ đang thực hiện một chức năng Lambda độc lập hoặc chỉ loay hoay để cảm nhận về nó, bạn nên bắt đầu ở đây và tạo một chức năng từ đầu, vì nó đơn giản hơn nhiều.
Bạn có thể tạo một chức năng mới từ tab Chức năng của Mt.
Bạn có một vài lựa chọn ở đây. Bạn có thể tạo chức năng hoàn toàn từ đầu, việc này sẽ khởi tạo chức năng không có gì khác hơn là một thế giới xin chào. Bạn cũng có thể chọn sử dụng một mẫu dựng sẵn hoặc thậm chí tải xuống một chức năng từ kho ứng dụng không có máy chủ Lambda.
Nếu bạn tự tạo nó, bạn sẽ phải chọn thời gian chạy. Lambda có một vài lựa chọn theo mặc định:
Bạn cũng có thể mang thời gian chạy của riêng mình để chạy bất kỳ ngôn ngữ nào bạn muốn.
Khi nó được tạo, bạn có thể chỉnh sửa nó từ trang của hàm. Hàm NodeJS tiêu chuẩn xuất một trình xử lý, được gọi bất cứ khi nào hàm phản ứng với các sự kiện.
Chúng tôi khuyên bạn nên sử dụng IDE Cloud9 của AWS để làm việc với các chức năng Lambda. Đó là một IDE dựa trên web được xây dựng trên cùng một trình soạn thảo được sử dụng trên trình soạn thảo chức năng mặc định, nhưng với lợi ích bổ sung là kiểm tra và gỡ lỗi dễ dàng hơn nhiều.
Nếu bạn muốn chức năng của mình đáp ứng các yêu cầu API, phương pháp đơn giản nhất để thiết lập điều đó là với API Gateway. Bạn có thể tạo API mới và yêu cầu nó định tuyến một số điểm cuối nhất định trực tiếp đến một chức năng Lambda cụ thể, nó sẽ xử lý yêu cầu và trả về phản hồi.
Mặt khác, bạn có thể chỉ định một trình kích hoạt trong Nhà thiết kế trực tuyến ở trên cùng, chẳng hạn như bất cứ khi nào một đối tượng được đặt trong nhóm S3 cụ thể. Bạn cũng có thể chỉ định đích mà kết quả được gửi đến, chẳng hạn như hàng đợi SQS, chủ đề SNS hoặc chức năng Lambda khác.
Hàm Lambda sẽ chạy với các đặc quyền được trao cho nó bởi vai trò thực thi đã được tạo cho nó. Nếu bạn đang truy cập các tài nguyên AWS khác, bạn sẽ cần cấp cho nó quyền đó trong Bảng điều khiển quản lý IAM.