Thông tin chung

Câu hỏi: AWS Lambda là gì?

AWS Lambda cho phép bạn chạy mã mà không cần cung cấp hay quản lý máy chủ. Bạn chỉ phải trả tiền cho thời gian xử lý thông tin đã sử dụng – không tính phí khi mã của bạn không chạy. Với Lambda, bạn có thể chạy mã cho gần như toàn bộ các loại ứng dụng hay dịch vụ backend – tất cả đều không cần quản trị. Chỉ cần tải đoạn mã của bạn lên và Lambda sẽ lo hết những gì cần làm để chạy và mở rộng mã của bạn với mức độ có sẵn cao. Bạn có thể thiết lập mã để tự động kích hoạt từ các dịch vụ AWS khác hoặc gọi trực tiếp từ bất cứ ứng dụng web hay di động nào.

Câu hỏi: Điện toán serverless là gì?

Điện toán serverless đem đến cho bạn khả năng dựng và chạy ứng dụng và dịch vụ mà không phải bận tâm đến máy chủ. Với điện toán serverless, ứng dụng của bạn sẽ chạy trên các máy chủ, nhưng toàn bộ công việc quản lý máy chủ sẽ do AWS đảm nhiệm. Cốt lõi của điện toán serverless là AWS Lambda, cho phép bạn chạy mã mà không cần cung cấp hay quản lý máy chủ.

Câu hỏi: Những sự kiện nào có thể kích hoạt một hàm AWS Lambda?

Vui lòng tham khảo tài liệu để biết danh sách đầy đủ các nguồn sự kiện.

Câu hỏi: Tôi nên dùng AWS Lambda thay vì Amazon EC2 khi nào?

Amazon Web Services mang đến bộ dịch vụ điện toán đáp ứng hàng loạt nhu cầu khác nhau.

Amazon EC2 mang đến tính linh hoạt, với nhiều loại phiên bản phiên bản đa dạng và tùy chọn tùy chỉnh cài đặt hệ điều hành, mạng và bảo mật cũng như toàn bộ ngăn xếp phần mềm, nhờ đó cho phép bạn dễ dàng di chuyển các ứng dụng hiện tại lên đám mây. Với Amazon EC2, bạn đảm nhiệm việc cung cấp công suất, giám sát tình trạng và hiệu suất của danh mục thiết bị, cũng như thiết kế dung sai và khả năng thay đổi quy mô. AWS Elastic Beanstalk mang đến dịch vụ triển khai và thay đổi quy mô ứng dụng web đơn giản, trong đó bạn duy trì quyền sở hữu và toàn quyền kiểm soát các phiên bản EC2 chạy nền. Amazon EC2 Container Service là dịch vụ quản lý có quy mô linh hoạt, hỗ trợ các bộ chứa Docker và cho phép bạn dễ dàng chạy ứng dụng phân tán trên cụm phiên bản Amazon EC2 được quản lý.

AWS Lambda giúp dễ dàng thực thi mã để phản ứng với các sự kiện, ví dụ như thay đổi với các bộ chứa Amazon S3, cập nhật bảng Amazon DynamoDB hay các sự kiện do ứng dụng và thiết bị của bạn tạo ra. Với Lambda, bạn không cần phải cung cấp các phiên bản của riêng mình; Lambda thay bạn thực hiện tất cả các hoạt động vận hành và quản trị, bao gồm cung cấp công suất, giám sát tình trạng danh mục thiết bị, áp dụng bản vá bảo mật cho các tài nguyên điện toán chạy nền, triển khai mã, chạy phần lớp front end của dịch vụ web, cũng như giám sát và ghi nhật ký mã. AWS Lambda mang đến khả năng thay đổi quy mô dễ dàng và độ sẵn sàng cao cho mã của bạn mà không cần đầu tư thêm công sức.

Câu hỏi: Loại mã nào chạy được trên AWS Lambda?

AWS Lambda giúp dễ dàng thực hiện nhiều ứng dụng trên đám mây. Ví dụ: bạn có thể dùng AWS Lambda để xây dựng lớp back-end của ứng dụng di động đảm nhiệm việc truy xuất và chuyển đổi dữ liệu từ Amazon DynamoDB, các bộ xử lý đảm nhiệm việc nén hoặc chuyển đổi các đối tượng khi được tải lên Amazon S3, nhờ đó có thể kiểm tra và báo cáo các lời gọi API gửi đến dịch vụ Amazon Web Services bất kỳ và xử lý serverless bằng Amazon Kinesis cho dữ liệu truyền phát.

Câu hỏi: AWS Lambda hỗ trợ những ngôn ngữ nào?

Về bản chất, AWS Lambda hỗ trợ Java, Go, PowerShell, Node.js, C#, Python và Ruby, cũng như cung cấp Runtime API cho phép bạn sử dụng bất kỳ ngôn ngữ lập trình nào khác để lập trình các chức năng của mình. Vui lòng đọc tài liệu về cách sử dụng Node.js, Python, Java, Ruby, C#, GoPowerShell.

Câu hỏi: Tôi có được phép truy cập cơ sở hạ tầng chạy AWS Lambda không?

Không. AWS Lambda thay mặt bạn vận hành cơ sở hạ tầng điện toán, cho phép thực hiện các hoạt động kiểm tra tình trạng, áp dụng bản vá bảo mật và công việc bảo trì định kỳ khác.

Câu hỏi: AWS Lambda cô lập mã của tôi bằng cách nào?

Mỗi hàm AWS Lambda chạy trong một môi trường cô lập riêng, với các tài nguyên và chế độ xem hệ thống tệp riêng. AWS Lambda sử dụng các kỹ thuật giống như trên Amazon EC2 để cung cấp khả năng bảo mật và biệt lập ở cơ sở hạ tầng và các cấp độ thực thi.

Câu hỏi: AWS Lambda bảo mật mã của tôi bằng cách nào?

AWS Lambda lưu mã trên Amazon S3 và mã hóa mã khi lưu trữ. AWS Lambda thực hiện các hoạt động kiểm tra độ toàn vẹn bổ sung khi mã đang được sử dụng.

Câu hỏi: Khu vực AWS nào có cung cấp AWS Lambda?

Vui lòng tham khảo Bảng khu vực cơ sở hạ tầng toàn cầu của AWS.

Hàm AWS Lambda

Câu hỏi: Hàm AWS Lambda là gì?

Mã mà bạn chạy trên AWS Lambda được tải lên dưới dạng “hàm Lambda”. Mỗi hàm có các thông tin cấu hình liên kết, ví dụ như tên, mô tả, điểm bắt đầu và các yêu cầu về tài nguyên. Mã phải được viết theo kiểu “không có trạng thái”, tức là mã phải giả định không có bố trí với cơ sở hạ tầng điện toán chạy ngầm. Khả năng truy cập hệ thống tệp cục bộ, các quá trình phụ và các đồ tạo tác tương tự không được kéo dài vượt quá vòng đời của yêu cầu và mọi trạng thái bền vững đều phải được lưu trên Amazon S3, Amazon DynamoDB hoặc dịch vụ lưu trữ có trên Internet. Hàm Lambda có thể sử dụng các thư viện, kể cả thư viện gốc.

Câu hỏi: AWS Lambda có sử dụng lại các phiên bản hàm không?

Để cải thiện hiệu suất, AWS Lambda có thể chọn giữ lại phiên bản hàm và sử dụng lại để phục vụ cho yêu cầu sau đó thay vì tạo bản sao mới. Để tìm hiểu thêm về cách Lambda sử dụng lại các phiên bản hàm, hãy truy xem tài liệu hướng dẫn của chúng tôi. Mã của bạn không được giả định rằng điều này sẽ luôn xảy ra.

Câu hỏi: Tôi phải làm gì nếu muốn tạo dung lượng trống trên ổ đĩa cho hàm AWS Lambda?

Mỗi hàm Lambda nhận được 500MB dung lượng đĩa trống không bền vững trong chính thư mục /tmp của hàm.

Câu hỏi: Tại sao các hàm AWS Lambda không được phép có trạng thái?

Việc duy trì hàm không có trạng thái cho phép AWS Lambda khởi chạy nhanh chóng số lượng bản sao cần thiết để thay đổi quy mô theo tốc độ của các sự kiện đến. Mặc dù mô hình lập trình của AWS Lambda là không có trạng thái, mã của bạn vẫn có thể truy cập dữ liệu có trạng thái bằng cách gọi các dịch vụ web khác, như Amazon S3 hoặc Amazon DynamoDB.

Câu hỏi: Tôi có thể sử dụng các luồng và quy trình trong mã hàm AWS Lambda không?

Có. AWS Lambda cho phép bạn sử dụng ngôn ngữ và các tính năng hệ điều hành thông thường như tạo các luồng và quy trình bổ sung. Các nguồn tài nguyên phân bổ cho hàm Lambda, bao gồm bộ nhớ, thời gian thực thi, ổ đĩa và mức sử dụng mạng, phải được chia sẻ với tất cả các luồng và quy trình mà hàm sử dụng. Bạn có thể khởi chạy các quy trình bằng bất kỳ ngôn ngữ nào Amazon Linux hỗ trợ.

Câu hỏi: Những hạn chế nào áp dụng cho mã hàm AWS Lambda?

Lambda cố gắng đặt ra ít hạn chế nhất có thể về các hoạt động ngôn ngữ và hệ điều hành thông thường, tuy nhiên, có một số hoạt động bị vô hiệu hóa: AWS Lambda chặn kết nối mạng đến và đối với kết nối đi thì chỉ ổ cắm TCP/IP và UDP/IP được hỗ trợ, đồng thời các lệnh gọi hệ thống ptrace (gỡ lỗi) bị chặn. Lưu lượng cổng 25 của giao thức TCP cũng bị chặn để chống thư rác.

Câu hỏi: Làm thế nào để tạo hàm AWS Lambda bằng bảng điều khiển Lambda?

Nếu đang sử dụng Node.js hoặc Python, bạn có thể tạo mã cho hàm bằng trình biên tập mã trên bảng điều khiển AWS Lambda mà tại đó bạn có thể tạo và kiểm thử hàm, cũng như xem kết quả thực thi hàm trong một môi trường mạnh mẽ, giống như IDE. Đi tới bảng điều khiển để bắt đầu.

Bạn cũng có thể đóng gói mã (và mọi thư viện phụ thuộc) dưới dạng ZIP và tải gói lên bằng bảng điều khiển AWS Lambda từ môi trường cục bộ hoặc chỉ định vị trí Amazon S3 chứa tệp ZIP. Các tệp tải lên không được phép lớn hơn 50MB (nén). Bạn cũng có thể sử dụng phần bổ trợ AWS Eclipse để tạo và triển khai các hàm Lambda trong Java. Bạn có thể sử dụng phần bổ trợ Visual Studio để tạo và triển khai các hàm Lambda trong C# và Node.js.

Câu hỏi: Làm thế nào để tạo hàm AWS Lambda bằng CLI của Lambda?

Bạn cũng có thể đóng gói mã (và mọi thư viện phụ thuộc) dưới dạng ZIP và tải gói lên AWS CLI từ môi trường cục bộ hoặc chỉ định vị trí Amazon S3 chứa tệp ZIP. Các tệp tải lên không được phép lớn hơn 50MB (nén). Tham khảo hướng dẫn Bắt đầu với Lambda để bắt đầu.

Câu hỏi: AWS Lambda có hỗ trợ các biến môi trường không?

Có. Bạn có thể dễ dàng tạo và chỉnh sửa các biến môi trường từ Bảng điều khiển, CLI hay các SDK của AWS Lambda. Để tìm hiểu thêm về các biến môi trường, hãy xem tài liệu.

Câu hỏi: Tôi có thể lưu trữ thông tin nhạy cảm trong các biến môi trường không?

Đối với thông tin nhạy cảm, như mật khẩu cơ sở dữ liệu, bạn nên sử dụng mã hóa phía máy khách thông qua AWS Key Management Service và lưu các giá trị thu được dưới dạng văn bản mã hóa trong biến môi trường. Bạn sẽ cần sử dụng logic trong mã hàm AWS Lambda để giải mã các giá trị này.

Câu hỏi: Tôi có thể quản lý các hàm AWS Lambda bằng cách nào?

Bạn có thể dễ dàng liệt kê, xóa, cập nhật và giám sát các hàm Lambda bằng bảng thông tin trong bảng điều khiển AWS Lambda. Bạn cũng có thể sử dụng AWS CLI và AWS SDK để quản lý các hàm Lambda. Truy cập Hướng dẫn dành cho nhà phát triển Lambda để tìm hiểu thêm.

Câu hỏi: Tôi có thể chia sẻ mã qua nhiều chức năng không?

Có, bạn có thể đóng gói mã bất kỳ (framework, SDK, thư viện, v.v.) dưới dạng Lớp Lambda và quản lý cũng như chia sẻ dễ dàng qua nhiều chức năng.

Câu hỏi: Tôi giám sát hàm AWS Lambda bằng cách nào?

AWS Lambda tự động giám sát các hàm Lambda thay bạn, báo cáo các số liệu theo thời gian thực qua Amazon CloudWatch, bao gồm tổng số yêu cầu, mức sử dụng đồng thời ở cấp độ tài khoản và cấp độ hàm, độ trễ, tỷ lệ lỗi và số yêu cầu được điều tiết. Bạn có thể xem số liệu thống kê cho từng hàm Lambda thông qua bảng điều khiển Amazon CloudWatch hoặc thông qua bảng điều khiển AWS Lambda. Bạn cũng có thể gọi API giám sát từ bên thứ ba trong hàm Lambda của mình.

Tham khảo Khắc phục sự cố về số liệu CloudWatch để tìm hiểu thêm. Phí tiêu chuẩn đối với AWS Lambda áp dụng cho việc sử dụng số liệu tích hợp sẵn của Lambda.

Câu hỏi: Tôi khắc phục lỗi trong hàm AWS Lambda bằng cách nào?

AWS Lambda tự động tích hợp với Amazon CloudWatch logs, nhờ đó tạo một nhóm nhật ký cho từng hàm Lambda và cung cấp các mục nhập nhật ký sự kiện cơ bản trong vòng đời của ứng dụng, bao gồm ghi nhật ký các tài nguyên đã tiêu tốn khi sử dụng hàm đó. Bạn có thể dễ dàng chèn các câu lệnh ghi nhật ký khác vào mã của mình. Bạn cũng có thể gọi API ghi nhật ký từ bên thứ ba trong hàm Lambda của mình. Tham khảo Khắc phục sự cố hàm Lambda để tìm hiểu thêm. Sẽ áp dụng phí Amazon CloudWatch Logs.

Câu hỏi: Tôi thay đổi quy mô cho hàm AWS Lambda bằng cách nào?

Bạn không cần phải thay đổi quy mô cho các hàm Lambda – AWS Lambda thay mặt bạn tự động điều chỉnh quy mô cho các hàm. Mỗi khi nhận được thông báo sự kiện từ hàm của bạn, AWS Lambda sẽ nhanh chóng tìm vị trí công suất trống trong danh mục thiết bị điện toán và chạy mã của bạn. Vì mã của bạn không có trạng thái, AWS Lambda có thể bắt đầu bao nhiêu bản sao hàm cần thiết mà không mất thời gian trễ dài từ việc triển khai và cấu hình. Không có giới hạn cơ bản đối với việc thay đổ quy mô hàm. AWS Lambda sẽ phân bổ công suất linh hoạt để phù hợp với tốc độ của các sự kiện đến.

Câu hỏi: Các tài nguyên điện toán được chỉ định cho hàm AWS Lambda như thế nào?

Trong mô hình tài nguyên AWS Lambda, bạn chọn lượng bộ nhớ mong muốn cho hàm của mình và được phân bổ công suất CPU tương ứng cũng như các tài nguyên khác. Ví dụ: khi chọn 256MB bộ nhớ, hàm Lambda của bạn sẽ nhận được công suất CPU bằng khoảng hai lần so với khi yêu cầu 128MB bộ nhớ và bằng một nửa công suất CPU so với khi chọn 512MB bộ nhớ. Để tìm hiểu thêm, hãy tham khảo tài liệu Cấu hình hàm của chúng tôi.

Bạn có thể đặt bộ nhớ của mình từ 128 MB đến 10.240 MB.

Câu hỏi: Khi nào tôi nên dùng các hàm AWS Lambda với bộ nhớ hơn 3008 MB?

Khách hàng đang thực hiện khối lượng công việc cần nhiều dung lượng bộ nhớ hoặc nặng về tính toán giờ đã có thể tăng sức mạnh cho hàm của mình. Các hàm bộ nhớ lớn hơn giúp các ứng dụng đa luồng chạy nhanh hơn, làm cho chúng trở nên lý tưởng cho dữ liệu và các ứng dụng tính toán chuyên sâu như máy học, công việc hàng loạt và ETL, mô hình tài chính, bộ gen, HPC và xử lý phương tiện.

Câu hỏi: Hàm AWS Lambda có thể thực thi trong bao lâu?

Hàm AWS Lambda có thể được cấu hình để chạy tối đa 15 phút mỗi đợt thực thi. Bạn có thể đặt thời gian chờ thành bất kỳ giá trị nào từ 1 giây đến 15 phút.

Câu hỏi: Tôi sẽ bị tính phí như thế nào khi sử dụng các hàm AWS Lambda?

Giá của AWS Lambda được tính theo mức sử dụng. Vui lòng xem trang giá của AWS Lambda để biết chi tiết.

Câu hỏi: Tôi có thể tiết kiệm tiền trên AWS Lambda với Compute Savings Plan không?

Có. Ngoài việc tiết kiệm tiền trên Amazon EC2 và AWS Fargate, bạn cũng có thể sử dụng Compute Savings Plans để tiết kiệm tiền trên AWS Lambda. Compute Savings Plans giảm giá tới 17% cho Thời lượng, Đồng thời được cung cấp và Thời lượng (Đồng thời được cung cấp). Compute Savings Plans không giảm giá trên các Yêu cầu trong hóa đơn Lambda của bạn. Tuy nhiên, cam kết Compute Savings Plans của bạn có thể áp dụng cho các Yêu cầu ở mức giá thông thường.

Câu hỏi: AWS Lambda có hỗ trợ quản lý phiên bản không?

Có. Theo mặc định, mỗi hàm AWS Lambda có một phiên bản mã mới nhất, duy nhất. Các máy khách sử dụng hàm Lambda của bạn có thể gọi một phiên bản cụ thể hoặc nhận một bản thực thi mới nhất. Vui lòng đọc tài liệu về quản lý phiên bản hàm Lambda.

Câu hỏi: Sau khi tôi tải mã lên, mất bao lâu để hàm AWS Lambda của tôi sẵn sàng gọi?

Thời gian triển khai có thể thay đổi theo kích thước của mã, tuy nhiên các hàm AWS Lambda thường sẵn sàng gọi sau khi tải lên vài giây.

Câu hỏi: Tôi có thể sử dụng phiên bản thư viện được hỗ trợ của riêng mình không?

Có. Bạn có thể đưa vào sử dụng phiên bản thư viện của riêng mình (bao gồm AWS SDK) để dùng một phiên bản không phải phiên bản mặc định do AWS Lambda cung cấp.

Sử dụng AWS Lambda để xử lý các sự kiện AWS

Câu hỏi: Nguồn sự kiện là gì?

Nguồn sự kiện là một dịch vụ AWS hoặc một ứng dụng do nhà phát triển xây dựng tạo ra các sự kiện kích hoạt chạy một hàm AWS Lambda. Một số dịch vụ công bố các sự kiện này với Lambda bằng cách trực tiếp gọi ra chức năng đám mây (ví dụ: Amazon S3). Lambda cũng có thể thăm dò tài nguyên trong các dịch vụ khác không công bố sự kiện với Lambda. Ví dụ: Lambda có thể lấy các bản ghi từ một luồng Amazon Kinesis hoặc một hàng chờ Amazon SQS và thực thi hàm Lambda cho mỗi thông điệp tìm nạp được.

Nhiều dịch vụ khác, ví dụ như AWS CloudTrail, có thể đóng vai trò làm các nguồn sự kiện chỉ đơn giản bằng cách đăng nhập vào Amazon S3 và sử dụng thông báo của bộ chứa S3 để kích hoạt các hàm AWS Lambda.

Câu hỏi: Có thể sử dụng nguồn sự kiện nào với AWS Lambda?

Vui lòng tham khảo tài liệu để biết danh sách đầy đủ các nguồn sự kiện.

Câu hỏi: Các sự kiện được biểu diễn như thế nào trong AWS Lambda?

Các sự kiện được gửi đến hàm Lambda với tư cách là tham số đầu vào sự kiện. Đối với các nguồn sự kiện trong đó sự kiện chuyển đến theo từng lô, ví dụ như các Luồng Amazon SQS, Amazon Kinesis và Amazon DynamoDB, tham số sự kiện có thể chứa nhiều sự kiện trong một lời gọi đơn lẻ, tùy theo kích thước lô mà bạn yêu cầu. Để tìm hiểu thêm về thông báo sự kiện của Amazon S3, tham khảo Cấu hình thông báo cho các sự kiện của Amazon S3. Để tìm hiểu thêm về các Luồng Amazon DynamoDB, tham khảo Hướng dẫn cho nhà phát triển Luồng DynamoDB. Để tìm hiểu thêm về cách gọi ra các hàm Lambda bằng Amazon SNS, tham khảo Hướng dẫn dành cho nhà phát triển Amazon SNS. Để biết thông tin về các sự kiện của Amazon Cognito, tham khảo Amazon Cognito. Để biết thông tin về nhật ký AWS CloudTrail và kiểm tra các lệnh gọi API trên nhiều dịch vụ AWS, xem AWS CloudTrail.

Câu hỏi: Làm thế nào để hàm AWS Lambda phản hồi với các thay đổi trong bộ chứa Amazon S3?

Từ bảng điều khiển AWS Lambda, bạn có thể chọn một hàm và liên kết hàm đó với các thông báo từ bộ chứa Amazon S3. Hoặc, bạn có thể sử dụng bảng điều khiển Amazon S3 và cấu hình để các thông báo của bộ chứa gửi đến hàm AWS Lambda của bạn. Chức năng tương tự này cũng có sẵn thông qua AWS SDK và AWS CLI.

Câu hỏi: Làm thế nào để hàm AWS Lambda phản hồi với các cập nhật trong bộ chứa Amazon DynamoDB?

Bạn có thể kích hoạt hàm Lambda trên các bản cập nhật bảng DynamoDB bằng cách đăng ký hàm Lambda với DynamoDB Stream liên kết với bảng. Bạn có thể liên kết một DynamoDB Stream với hàm Lambda bằng bảng điều khiển Amazon DynamoDB, bảng điều khiển AWS Lambda hoặc API registerEventSource của Lambda.

Câu hỏi: Tôi dùng hàm AWS Lambda để xử lý các bản ghi trong luồng Amazon Kinesis bằng cách nào?

Từ bảng điều khiển AWS Lambda, bạn có thể chọn một hàm và liên kết hàm đó với một luồng Amazon Kinesis được sở hữu bởi cùng tài khoản. Chức năng tương tự này cũng có sẵn thông qua AWS SDK và AWS CLI.

Câu hỏi: AWS Lambda xử lý dữ liệu từ các luồng Amazon Kinesis và Amazon DynamoDB Streams như thế nào?

Các bản ghi của Amazon Kinesis và DynamoDB Streams đã gửi đến hàm AWS Lambda của bạn được xếp số thứ tự chặt chẽ trên mỗi phân đoạn. Điều này đồng nghĩa rằng, nếu bạn đặt hai bản ghi trong cùng một phân đoạn, Lambda đảm bảo hàm Lambda của bạn sẽ được gọi ra thành công bằng bản ghi đầu tiên trước khi được gọi bằng bản ghi thứ hai. Nếu yêu cầu gọi cho một bản ghi hết thời gian chờ, được điều tiết, hay gặp bất kỳ lỗi nào khác, Lambda sẽ thử lại cho đến khi thao tác gọi thành công (hoặc bản ghi đạt đến thời gian hết hạn sau 24 giờ) trước khi chuyển sang bản ghi tiếp theo. Không có đảm bảo về thứ tự của các bản ghi trên các phân đoạn khác nhau và quá trình xử lý từng phân đoạn diễn ra song song.

Câu hỏi: Tôi nên chọn AWS Lambda hay Amazon Kinesis Data Analytics cho nhu cầu phân tích của mình?

AWS Lambda cho phép bạn thực hiện các phép tổng hợp dựa trên thời gian (chẳng hạn như count, max, sum, average (đếm, lớn nhất, tổng, trung bình), v.v.) trong một cửa sổ ngắn kéo dài tối đa 15 phút cho dữ liệu trong Amazon Kinesis hoặc Amazon DynamoDB Streams, trên một phân vùng logic đơn lẻ, ví dụ: một phân mảnh. Như vậy, bạn có thể dễ dàng thiết lập phân tích đơn giản cho ứng dụng dựa trên sự kiện mà không làm tăng thêm sự phức tạp về kiến trúc, vì logic kinh doanh và phân tích của bạn có thể được đặt trong cùng một hàm. Lambda hỗ trợ các phép tổng hợp trong khung thời gian cố định tối đa là 15 phút, dựa trên dấu thời gian sự kiện. Amazon Kinesis Data Analytics cho phép bạn xây dựng các ứng dụng phân tích phức tạp hơn, hỗ trợ các lựa chọn xử lý linh hoạt và khả năng chịu lỗi mạnh mẽ với quá trình xử lý chính xác một lần không trùng lặp và phân tích có thể được thực hiện trên toàn bộ luồng dữ liệu ở nhiều phân vùng logic. Với KDA, bạn có thể phân tích dữ liệu qua nhiều loại khung thời gian tổng hợp (khung thời gian cố định, khung thời gian linh hoạt, khung thời gian trượt, khung thời gian phiên) bằng cách sử dụng thời gian diễn ra sự kiện hoặc thời gian xử lý.

  AWS Lambda Amazon KDA
Khung thời gian cố định
Khung thời gian linh hoạt Không
Khung thời gian trượt Không
Khung thời gian phiên Không
Bổ sung Không
Bảng đầu vào chung và bảng tham chiếu Không
Luồng đầu vào phân tách Không
Xử lý chính xác một lần Không
Khung thời gian tối đa 15 phút Không có giới hạn
Phạm vi tổng hợp Phân vùng/phân mảnh Luồng
Ngữ nghĩa thời gian Thời gian diễn ra sự kiện Thời gian diễn ra sự kiện, Thời gian xử lý

Câu hỏi: Làm thế nào để sử dụng một hàm AWS Lambda nhằm phản hồi cho các thông báo do Amazon Simple Notification Service (SNS) gửi đến?

Từ bảng điều khiển AWS Lambda, bạn có thể chọn một hàm và liên kết hàm đó với một chủ đề Amazon SNS. Chức năng tương tự này cũng có sẵn thông qua AWS SDK và AWS CLI.

Câu hỏi: Làm thế nào để sử dụng một hàm AWS Lambda để phản hồi với các email do Amazon Simple Email Service (SES) gửi?

Từ bảng điều khiển Amazon SES, bạn có thể thiết lập quy tắc nhận để Amazon SES cung cấp thông điệp đến hàm AWS Lambda. Chức năng tương tự có sẵn thông qua AWS SDK và AWS CLI.

Câu hỏi: Tôi dùng hàm AWS Lambda để phản hồi với các cảnh báo của Amazon CloudWatch như thế nào?

Trước tiên, hãy cấu hình cảnh báo để gửi các thông báo của Amazon SNS. Sau đó, từ bảng điều khiển AWS Lambda, chọn một hàm Lambda và liên kết hàm đó với một chủ đề Amazon SNS. Xem Hướng dẫn dành cho nhà phát triển Amazon CloudWatch để tìm hiểu thêm về các cảnh báo của Amazon CloudWatch.

Câu hỏi: Làm thế nào để sử dụng hàm AWS Lambda để phản hồi với các thay đổi về dữ liệu người dùng hoặc thiết bị do Amazon Cognito quản lý?

Từ bảng điều khiển AWS Lambda, bạn có thể chọn một hàm để kích hoạt khi bất kỳ bộ dữ liệu nào liên kết với tập hợp định danh Amazon Cognito được đồng bộ hóa. Chức năng tương tự này cũng có sẵn thông qua AWS SDK và AWS CLI. Tham khảo Amazon Cognito để biết thêm thông tin về cách sử dụng Amazon Cognito cho việc chia sẻ và đồng bộ hóa dữ liệu trên nhiều thiết bị của một người dùng.

Câu hỏi: Ứng dụng của tôi có thể trực tiếp kích hoạt một hàm AWS Lambda như thế nào?

Bạn có thể gọi ra một hàm Lambda bằng sự kiện tùy chỉnh thông qua API gọi của AWS Lambda. Chỉ chủ sở hữu của hàm hoặc tài khoản AWS khác được chủ sở hữu cấp quyền mới có thể gọi ra hàm. Tham khảo Hướng dẫn dành cho nhà phát triển Lambda để tìm hiểu thêm.

Câu hỏi: Độ trễ của quá trình gọi ra một hàm AWS Lambda khi phản hồi với một sự kiện là bao lâu?

AWS Lambda được thiết kế để xử lý các sự kiện trong vài mili giây. Độ trễ sẽ cao hơn ngay sau khi hàm Lambda được tạo, cập nhật hoặc nếu hàm không được sử dụng gần đây.

Câu hỏi: Tôi tạo một lớp back-end di động bằng AWS Lambda bằng cách nào?

Bạn tải mã cần AWS Lambda thực thi lên, sau đó gọi mã ra từ ứng dụng di động bằng AWS Lambda SDK có trong AWS Mobile SDK. Bạn có thể tạo cả các lệnh gọi trực tiếp (đồng bộ) để truy xuất hoặc kiểm tra dữ liệu trong thời gian thực lẫn các lệnh gọi không đồng bộ. Bạn cũng có thể xác định một API tùy chỉnh bằng Amazon API Gateway và gọi ra các hàm Lambda thông qua bất kỳ máy khách nào tương thích với REST. Để tìm hiểu thêm về AWS Mobile SDK, tham khảo trang AWS Mobile SDK. Để tìm hiểu thêm về Amazon API Gateway, tham khảo trang Amazon API Gateway.

Câu hỏi: Làm thế nào để gọi một hàm AWS Lambda qua HTTPS?

Bạn có thể gọi ra một hàm Lambda qua HTTPS bằng cách xác định một API RESTful tùy chỉnh bằng Amazon API Gateway. Thao tác này cung cấp cho bạn một điểm cuối cho hàm có thể phản hồi với các lệnh gọi REST như GET, PUT và POST. Đọc thêm về cách sử dụng AWS Lambda với Amazon API Gateway.

Câu hỏi: Hàm AWS Lambda của tôi có thể tùy chỉnh hành vi đối với thiết bị và ứng dụng đang thực hiện yêu cầu như thế nào?

Khi được gọi thông qua AWS Mobile SDK, các hàm AWS Lambda tự động nhận được thông tin chuyên sâu về thiết bị và ứng dụng đã thực hiện lời gọi thông qua đối tượng ‘ngữ cảnh’.

Câu hỏi: Hàm AWS Lambda của tôi có thể cá nhân hóa hành vi dựa trên thông tin định danh của người dùng cuối của một ứng dụng như thế nào?

Khi ứng dụng của bạn sử dụng thông tin định danh từ Amazon Cognito, người dùng cuối có thể tự xác thực bằng nhiều nhà cung cấp thông tin đăng nhập công cộng như Amazon, Facebook, Google và các dịch vụ khác tương thích với OpenID Connect. Sau đó, thông tin định danh của người dùng được trình diện một cách tự động và bảo mật với hàm Lambda của bạn dưới dạng thông tin định danh từ Amazon Cognito, cho phép hàm truy cập dữ liệu người dùng từ Amazon Cognito hoặc dưới dạng khóa để lưu trữ và truy xuất dữ liệu trong Amazon DynamoDB hoặc các dịch vụ web khác.

Câu hỏi: Làm thế nào để tạo một kỹ năng Alexa bằng AWS Lambda?

AWS Lambda được tích hợp với Bộ công cụ kỹ năng Alexa, một tập hợp các API tự phục vụ, công cụ, tài liệu hướng dẫn và các mã mẫu giúp bạn dễ dàng tạo các khả năng (hoặc “kỹ năng”) được điều khiển bằng giọng nói cho Alexa. Bạn chỉ việc tải mã hàm Lambda lên cho kỹ năng Alexa mới mà bạn đang tạo và AWS Lambda sẽ làm công việc còn lại, thực thi mã để phản hồi với các tương tác qua giọng nói của Alexa và thay bạn tự động quản lý các tài nguyên điện toán. Đọc tài liệu về Bộ công cụ kỹ năng Alexa để biết thêm chi tiết.

Câu hỏi: Điều gì sẽ xảy ra nếu hàm của tôi bị lỗi khi đang xử lý một sự kiện?

Đối với các thông báo và sự kiện tùy chỉnh của bộ chứa Amazon S3, AWS Lambda sẽ cố gắng thực thi hàm của bạn ba lần nếu có tình trạng lỗi trong mã hoặc nếu bạn vượt quá giới hạn dịch vụ hoặc tài nguyên.

Đối với các nguồn sự kiện đã yêu cầu mà AWS Lambda thay bạn thăm dò, ví dụ như các Luồng Amazon DynamoDB và các luồng Amazon Kinesis, Lambda sẽ tiếp tục cố gắng thực hiện khi mã của nhà phát triển gặp lỗi cho đến khi dữ liệu hết hạn. Bạn có thể giám sát tiến trình thông qua bảng điều khiển Amazon Kinesis và Amazon DynamoDB, cũng như qua số liệu của Amazon CloudWatch mà AWS Lambda tạo ra cho hàm của bạn. Bạn cũng có thể đặt các cảnh báo Amazon CloudWatch dựa trên tỷ lệ lỗi hoặc tốc độ điều tiết thực thi.

Sử dụng AWS Lambda để xây dựng ứng dụng

Câu hỏi: Ứng dụng serverless là gì?

Ứng dụng dựa trên Lambda (còn gọi là ứng dụng serverless) được cấu thành từ các hàm kích hoạt bằng sự kiện. Một ứng dụng serverless tiêu biểu bao gồm một hoặc nhiều hàm kích hoạt bằng các sự kiện chẳng hạn như các lượt tải đối tượng lên Amazon S3, các thông báo của Amazon SNS hoặc các hành động trên API. Các chức năng này có thể đứng độc lập hay tận dụng các tài nguyên khác như bảng DynamoDB hoặc bộ chứa Amazon S3. Ứng dụng serverless cơ bản nhất chỉ đơn giản là một hàm.

Câu hỏi: Tôi triển khai và quản lý ứng dụng serverless bằng cách nào?

Bạn có thể triển khai và quản lý các ứng dụng serverless bằng Mô hình ứng dụng serverless của AWS (AWS SAM). AWS SAM là một chỉ dẫn kỹ thuật quy định các quy tắc biểu diễn các ứng dụng serverless trên AWS. Chỉ dẫn kỹ thuật này phù hợp với cú pháp mà AWS CloudFormation đang sử dụng và được hỗ trợ gốc trên AWS CloudFormation dưới dạng tập hợp các loại tài nguyên (được gọi là “tài nguyên serverless”). Các tài nguyên này giúp khách hàng AWS sử dụng CloudFormation dễ dàng hơn cho việc cấu hình và triển khai các ứng dụng serverless thông qua các API CloudFormation hiện tại.

Câu hỏi: Tôi có thể khám phá các ứng dụng serverless hiện có do cộng đồng AWS phát triển bằng cách nào?

Bạn có thể chọn từ tuyển tập các ứng dụng serverless do các nhà phát triển, các công ty và các đối tác phát hành trong cộng đồng AWS thông qua AWS Serverless Application Repository. Sau khi tìm được một ứng dụng, bạn có thể cấu hình và triển khai ứng dụng đó trực tiếp từ bảng điều khiển Lambda.

Câu hỏi: Làm thế nào để tự động hóa quá trình triển khai cho ứng dụng serverless?

Bạn có thể tự động hóa qua trình phát hành của ứng dụng serverless bằng AWS CodePipeline và AWS CodeDeploy. CodePipeline là một dịch vụ phân phối liên tục cho phép bạn mô hình hóa, hình ảnh hóa và tự động hóa các bước cần thiết để phát hành ứng dụng serverless. CodeDeploy cung cấp công cụ tự động hóa triển khai cho các ứng dụng dựa trên Lambda. CodeDeploy cho phép bạn điều phối các hoạt động triển khai theo các phương pháp thực hành tốt nhất, ví dụ như quy trình triển khai canary hoặc tuyến tính, đồng thời giúp bạn thiết lập được hành lang bảo vệ cần thiết để xác minh mã mới phát triển đảm bảo an toàn, ổn định và sẵn sàng phát hành hoàn toàn vào sản xuất.

Để tìm hiểu thêm về CI/CD serverless, tham khảo tài liệu của chúng tôi.

Câu hỏi: Làm thế nào để bắt đầu xây dựng ứng dụng serverless?

Để bắt đầu, truy cập bảng điều khiển AWS Lambda và tải xuống một trong các bản kế hoạch của chúng tôi. Tệp tải xuống sẽ bao gồm một tệp AWS SAM (xác định các tài nguyên AWS trong ứng dụng của bạn) và một tệp .ZIP (chứa mã của hàm của bạn). Sau đó, bạn có thể sử dụng các lệnh AWS CloudFormation để đóng gói và triển khai ứng dụng serverless mà bạn vừa tải xuống. Để biết thêm chi tiết, tham khảo tài liệu.

Câu hỏi: Làm thế nào để điều phối lệnh gọi giữa nhiều hàm AWS Lambda?

Bạn có thể sử dụng AWS Step Functions để điều phối một loạt các hàm AWS Lambda theo trình tự cụ thể. Bạn có thể gọi ra các hàm Lambda theo cách tuần tự, chuyển đầu ra của một hàm đến hàm khác, hoặc chuyển song song và Step Functions sẽ giúp bạn giữ nguyên trạng thái trong các thao tác thực thi.

Câu hỏi: Làm thế nào để xử lý sự cố cho ứng dụng serverless?

Bạn có thể cho phép hàm Lambda dò vết thông qua AWS X-Ray bằng cách thêm các quyền X-Ray cho vai trò thực thi của hàm Lambda và thay đổi “chế độ dò vết” của hàm thành “hoạt động”. Khi X-Ray được kích hoạt cho hàm Lambda, AWS Lambda sẽ phát thông tin dò vết đến X-Ray về chi phí dịch vụ Lambda phát sinh khi gọi hàm của bạn. Hoạt động này sẽ cung cấp cho bạn các thông tin chuyên sâu như chi phí dịch vụ Lambda, thời gian khởi tạo hàm và thời gian thực thi hàm. Ngoài ra, bạn có thể đưa X-Ray SDK vào trong gói triển khai Lambda để tạo các đoạn vết của riêng mình, chú thích cho các vết hoặc xem các đoạn vết cho các lời gọi xuôi chiều được thực hiện từ hàm Lambda. X-Ray SDK hiện đã có sẵn cho Node.js và Java. Tham khảo Khắc phục sự cố ứng dụng dựa trên Lambda để tìm hiểu thêm. Phí AWS X-Ray sẽ áp dụng.

Câu hỏi: Tôi có thể xây dựng các ứng dụng serverless kết nối với cơ sở dữ liệu quan hệ không?

Có. Bạn có thể sử dụng Amazon RDS Proxy, một proxy cơ sở dữ liệu có độ sẵn sàng cao quản lý hàng ngàn kết nối đồng thời với cơ sở dữ liệu quan hệ, để xây dựng các ứng dụng severless dựa trên Lambda an toàn và có quy mô linh hoạt kết nối với cơ sở dữ liệu quan hệ. Hiện tại, RDS Proxy hỗ trợ các cơ sở dữ liệu MySQL và Aurora. Bạn có thể bắt đầu sử dụng RDS Proxy thông qua bảng điều khiển Amazon RDS hoặc bảng điều khiển AWS Lambda. Các ứng dụng serverless sử dụng nhóm kết nối được quản lý toàn phần từ RDS Proxy sẽ được tính phí theo Giá RDS Proxy.

Câu hỏi: AWS SAM được cấp phép như thế nào?

Chỉ dẫn kỹ thuật có nguồn mở theo Apache 2.0, cho phép bạn và người khác áp dụng và tích hợp AWS SAM vào các công cụ xây dựng, phát triển, giám sát và quản lý bằng một giấy phép thân thiện về mặt thương mại. Bạn có thể truy cập kho AWS SAM trên GitHub tại đây.

Hỗ trợ hình ảnh bộ chứa

Câu hỏi: Hỗ trợ hình ảnh bộ chứa cho AWS Lambda là gì?

AWS Lambda hiện cho phép bạn đóng gói và triển khai các hàm dưới dạng hình ảnh bộ chứa. Khách hàng có thể tận dụng sự linh hoạt và sự quen thuộc của công cụ bộ chứa, cũng như sự linh hoạt và đơn giản trong hoạt động của AWS Lambda để xây dựng các ứng dụng.

Câu hỏi: Tôi có thể dùng Hỗ trợ hình ảnh bộ chứa cho AWS Lambda như thế nào?

Bạn có thể bắt đầu với hình ảnh cơ sở do AWS cung cấp cho Lambda hoặc bằng cách sử dụng một trong những hình ảnh cộng đồng hoặc doanh nghiệp tư nhân ưa thích của bạn. Sau đó, chỉ cần sử dụng Docker CLI để xây dựng hình ảnh, tải lên Amazon ECR rồi tạo hàm bằng mọi công cụ và giao diện Lambda quen thuộc, chẳng hạn như Bảng điều khiển quản lý AWS, AWS CLI, AWS SDK, AWS SAM và AWS CloudFormation.

Câu hỏi: Những loại hình ảnh bộ chứa nào được hỗ trợ?

Bạn có thể triển khai hình ảnh cơ sở Linux của bên thứ ba (ví dụ: Alpine hoặc Debian) cho Lambda, bên cạnh các hình ảnh do Lambda cung cấp. AWS Lambda sẽ hỗ trợ mọi hình ảnh dựa trên các định dạng tệp kê khai hình ảnh sau: Docker Image Manifest V2 Schema 2 (được sử dụng với Docker phiên bản 1.10 trở lên) hoặc Open Container Initiative (OCI) Spec (v1.0 trở lên). Lambda hỗ trợ hình ảnh có kích cỡ lên đến 10 GB.

Câu hỏi: Tôi có thể sử dụng những hình ảnh cơ sở nào?

AWS Lambda cung cấp nhiều loại hình ảnh cơ sở mà khách hàng có thể mở rộng, đồng thời, khách hàng cũng có thể sử dụng các hình ảnh nền Linux ưa thích của mình với kích cỡ lên đến 10 GB.

Câu hỏi: Tôi có thể sử dụng công cụ bộ chứa nào để đóng gói và triển khai các hàm dưới dạng hình ảnh bộ chứa?

Bạn có thể sử dụng bất kỳ công cụ bộ chứa nào miễn là công cụ đó có hỗ trợ một trong các định dạng tệp kê khai hình ảnh bộ chứa sau: Docker Image Manifest V2 Schema 2 (được sử dụng với Docker phiên bản 1.10 trở lên) hoặc Thông số kỹ thuật Open Container Initiative (OCI) (v1.0 trở lên). Ví dụ: Bạn có thể sử dụng các công cụ bộ chứa gốc (ví dụ: docker run, docker compose, Buildah và Packer) để xác định các hàm của mình dưới dạng hình ảnh bộ chứa và triển khai tới Lambda.

Câu hỏi: Những tính năng AWS Lambda nào có sẵn cho các hàm được triển khai dưới dạng hình ảnh bộ chứa?

Mọi tính năng AWS Lambda hiện có, ngoại trừ các lớp Lambda và Ký mã, đều có thể được sử dụng với các hàm được triển khai dưới dạng hình ảnh bộ chứa. Sau khi được triển khai, AWS Lambda sẽ coi một hình ảnh là bất biến. Khách hàng có thể sử dụng các lớp bộ chứa trong khi xây dựng để đưa các phần phụ thuộc vào.

Câu hỏi: AWS Lambda có vá lỗi và cập nhật hình ảnh bộ chứa đã triển khai của tôi không?

Vào thời điểm này thì không. Hình ảnh của bạn, sau khi được triển khai tới AWS Lambda, sẽ không thay đổi. Dịch vụ sẽ không vá hay cập nhật hình ảnh. Tuy nhiên, AWS Lambda sẽ phát hành các hình ảnh cơ sở được sắp xếp cho toàn bộ thời gian hoạt động được hỗ trợ dựa trên môi trường được quản lý bởi Lambda. Những hình ảnh đã phát hành này sẽ được vá và cập nhật cùng với các bản cập nhật cho thời gian chạy được quản lý của AWS Lambda. Bạn có thể kéo và sử dụng hình ảnh cơ sở mới nhất từ DockerHub hoặc Amazon ECR Public, xây dựng lại hình ảnh bộ chứa của bạn và triển khai lên AWS Lambda thông qua Amazon ECR. Điều này cho phép bạn xây dựng và kiểm tra các hình ảnh và thời gian hoạt động được cập nhật, trước khi triển khai hình ảnh vào sản xuất.

Câu hỏi: Sự khác biệt giữa các hàm được tạo bằng cách sử dụng lưu trữ ZIP và hình ảnh bộ chứa là gì?

Có ba điểm khác biệt chính giữa các hàm được tạo bằng lưu trữ ZIP và hình ảnh bộ chứa:

  1. Các hàm được tạo bằng cách sử dụng lưu trữ ZIP có kích cỡ gói mã tối đa là 250 MB đã giải nén và các hàm được tạo bằng hình ảnh bộ chứa có kích thước hình ảnh tối đa là 10 GB. 
  2. Lambda sử dụng Amazon ECR làm bộ lưu trữ mã cơ bản cho các hàm được xác định là hình ảnh bộ chứa, do đó, một hàm có thể không được thu hồi khi hình ảnh cơ bản bị xóa khỏi ECR. 
  3. Các hàm ZIP được vá tự động trong các bản sửa lỗi và bảo mật thời gian hoạt động mới nhất. Các hàm được định nghĩa là hình ảnh bộ chứa đều bất biến và khách hàng phải chịu trách nhiệm về các thành phần được đóng gói trong hàm của mình. Khách hàng có thể tận dụng các hình ảnh cơ sở do AWS cung cấp được AWS cập nhật thường xuyên để bảo mật và sửa lỗi, bằng cách sử dụng các bản vá mới nhất hiện có.

Câu hỏi: Có sự khác biệt nào về hiệu năng giữa các hàm được định nghĩa là zip và hình ảnh bộ chứa không?

Không - AWS Lambda đảm bảo rằng cấu hình hiệu năng cho các hàm được đóng gói dưới dạng hình ảnh bộ chứa cũng giống như các cấu hình được đóng gói dưới dạng lưu trữ ZIP, bao gồm cả thời gian khởi động tính bằng mili giây.

Câu hỏi: Tôi sẽ bị tính phí như thế nào khi triển khai các hàm Lambda dưới dạng hình ảnh bộ chứa?

Không có phí bổ sung cho việc đóng gói và triển khai các hàm dưới dạng hình ảnh bộ chứa lên AWS Lambda. Khi bạn thu hồi hàm được triển khai dưới dạng hình ảnh bộ chứa, bạn sẽ thanh toán cho các yêu cầu và thời lượng thực thi theo giá thông thường. Để tìm hiểu thêm, truy cập vào mục Định giá AWS Lambda. Bạn sẽ bị tính phí lưu trữ hình ảnh bộ chứa của mình trong Amazon ECR với mức giá ECR tiêu chuẩn. Để tìm hiểu thêm, truy cập vào mục Định giá Amazon ECR.

Câu hỏi: Lambda Runtime Interface Emulator (RIE) là gì?

Lambda Runtime Interface Emulator là một proxy API Thời gian hoạt động của Lambda, cho phép khách hàng kiểm thử cục bộ chức năng Lambda được đóng gói dưới dạng hình ảnh bộ chứa. Đây là một máy chủ web gọn nhẹ chuyển đổi yêu cầu HTTP thành sự kiện JSON và mô phỏng API Thời gian hoạt động của Lambda. Thành phần này cho phép bạn kiểm thử cục bộ các hàm của mình bằng các công cụ quen thuộc như cURL và Docker CLI (khi kiểm thử các hàm được đóng gói dưới dạng hình ảnh bộ chứa). Lambda Runtime Interface Emulator cũng đơn giản hóa việc chạy ứng dụng của bạn trên các dịch vụ điện toán bổ sung. Bạn có thể đưa Lambda Runtime Interface Emulator vào trong hình ảnh bộ chứa của mình để thành phần này chấp nhận các yêu cầu HTTP nguyên bản thay vì các sự kiện JSON cần thiết để triển khai tới Lambda. Thành phần này không mô phỏng trình điều phối của Lambda hoặc cấu hình bảo mật và xác thực. Runtime Interface Emulator có nguồn mở trên GitHub. Bạn có thể bắt đầu bằng cách tải xuống và cài đặt thành phần này lên máy cục bộ của mình.

Câu hỏi: Tại sao tôi cần Lambda Runtime Interface Emulator (RIE) trong quá trình kiểm thử cục bộ?

API Thời gian hoạt động của Lambda trong dịch vụ Lambda đang chạy chấp nhận các sự kiện JSON và trả về phản hồi. Lambda Runtime Interface Emulator cho phép hàm được đóng gói dưới dạng hình ảnh bộ chứa để chấp nhận các yêu cầu HTTP trong quá trình kiểm thử cục bộ bằng các công cụ như cURL và hiển thị chúng qua cùng một giao diện cục bộ cho hàm. Thành phần này cho phép bạn sử dụng lệnh docker run hoặc docker-compose up để kiểm thử cục bộ ứng dụng lambda của bạn.

Câu hỏi: Tôi có thể dùng trình giả lập để kiểm thử cục bộ hành vi hàm nào?

Bạn có thể sử dụng trình giả lập để kiểm thử xem mã hàm của bạn có tương thích với môi trường Lambda, hoạt động thành công và cung cấp đầu ra mong đợi hay không. Ví dụ: Bạn có thể kiểm thử sự kiện thử nghiệm từ các nguồn sự kiện khác nhau. Bạn cũng có thể sử dụng thành phần này để kiểm tra tiện ích mở rộng và tác nhân được tích hợp trong hình ảnh bộ chứa dựa trên API Tiện ích mở rộng của Lambda.

Câu hỏi: Runtime Interface Emulator (RIE) sẽ giúp tôi chạy hình ảnh tương thích với Lambda trên các dịch vụ điện toán bổ sung như thế nào?

Khách hàng có thể thêm Runtime Interface Emulator làm điểm nhập cho hình ảnh bộ chứa hoặc đóng gói thành phần này dưới dạng một thành phần đồng hành để đảm bảo hình ảnh bộ chứa hiện chấp nhận các yêu cầu HTTP thay vì các sự kiện JSON. Điều này đơn giản hóa các thay đổi cần thiết để chạy hình ảnh bộ chứa trên các dịch vụ điện toán bổ sung. Khách hàng sẽ chịu trách nhiệm đảm bảo tuân theo tất cả các biện pháp tốt nhất về bảo mật, hiệu năng và tính đồng thời cho môi trường họ chọn. RIE được đóng gói sẵn trong các hình ảnh do AWS Lambda cung cấp và có sẵn theo mặc định trong AWS SAM CLI. Các nhà cung cấp hình ảnh cơ sở có thể dùng tài liệu này để cung cấp trải nghiệm tương tự cho hình ảnh cơ sở của họ.

Câu hỏi: Làm cách nào để triển khai ứng dụng được chứa trong bộ chứa hiện có của tôi cho AWS Lambda?

Bạn có thể triển khai một ứng dụng được chứa trong AWS Lambda nếu ứng dụng đáp ứng các yêu cầu dưới đây:

  1. Hình ảnh bộ chứa phải triển khai API Thời gian hoạt động của Lambda. Chúng tôi đã tạo nguồn mở cho một bộ các gói phần mềm, Máy khách giao diện thời gian hoạt động (RIC), có tác dụng triển khai API Hoạt động nhằm cho phép bạn mở rộng liền mạch các hình ảnh cơ sở ưa thích của mình để tương thích với Lambda.
  2. Hình ảnh bộ chứa phải chạy được trên hệ thống tệp chỉ đọc. Mã hàm của bạn có thể truy cập 512 MB dung lượng lưu trữ của thư mục /tmp có thể ghi. Nếu bạn đang sử dụng hình ảnh yêu cầu thư mục gốc có thể ghi, hãy định cấu hình hình ảnh để ghi vào thư mục /tmp.
  3. Người dùng Lambda mặc định có thể đọc các tệp cần thiết để thực thi mã hàm. Lambda định nghĩa người dùng Linux mặc định có ít đặc quyền nhất dựa theo các biện pháp bảo mật tốt nhất. Bạn cần xác minh rằng mã ứng dụng của mình không dựa vào các tệp bị hạn chế thực thi bởi những người dùng Linux khác.
  4. Đây là một hình ảnh bộ chứa nền Linux.

Tính đồng thời được cung cấp

Câu hỏi: Tính đồng thời được cung cấp của AWS Lambda là gì?

Tính đồng thời được cung cấp cho phép bạn kiểm soát tốt hơn hiệu năng của các ứng dụng serverless. Khi được kích hoạt, Tính đồng thời được cung cấp sẽ đảm bảo tính sẵn sàng cực cao và duy trì khởi tạo nhằm đáp ứng trong vài mili giây cho các hàm của bạn.

Câu hỏi: Làm thế nào để thiết lập và quản lý Tính đồng thời được cung cấp?

Bạn có thể cấu hình tính đồng thời trên hàm của bạn thông qua Bảng điều khiển quản lý AWS, Lambda API, AWS CLI và AWS CloudFormation. Cách dễ nhất để hưởng lợi từ Tính đồng thời được cung cấp là sử dụng AWS Auto Scaling. Bạn có thể sử dụng Auto Scaling của ứng dụng để cấu hình lịch hoặc thiết lập để Auto Scaling tự động điều chỉnh mức độ Tính đồng thời được cung cấp theo thời gian thực khi nhu cầu thay đổi. Để tìm hiểu thêm về Tính đồng thời được cung cấp, hãy xem tài liệu.

Câu hỏi: Tôi có cần thay đổi mã nếu muốn sử dụng Tính đồng thời được cung cấp không?

Bạn không cần phải thay đổi gì với mã để sử dụng Tính đồng thời được cung cấp. Tính năng này hoạt động liền mạch với tất cả các hàm và thời gian chạy hiện có. Không có thay đổi nào đối với mô hình gọi và thực thi của Lambda khi sử dụng Tính đồng thời được cung cấp.

Câu hỏi: Tôi sẽ bị tính phí như thế nào đối với Tính đồng thời được cung cấp?

Tính đồng thời được cung cấp bổ sung một khía cạnh giá mới để khởi tạo hàm, đó là giá ‘Tính đồng thời được cung cấp’. Khi bật tính năng này, bạn sẽ trả cho dung lượng xử lý đồng thời mà bạn cấu hình và cho khoảng thời gian bạn cấu hình nó. Nếu hàm của bạn thực thi trong khi Tính đồng thời được cung cấp được cấu hình cho hàm đó, bạn cũng sẽ trả tiền cho Yêu cầu và Thời lượng thực thi. Để tìm hiểu thêm về cách định giá tính năng Tính đồng thời được cung cấp, hãy xem mục Định giá AWS Lambda.

Câu hỏi: Khi nào nên sử dụng Tính đồng thời được cung cấp?

Tính đồng thời được cung cấp sẽ là tính năng lý tưởng khi xây dựng các ứng dụng đòi hỏi cao về độ trễ, như backend web hoặc di động, API được gọi ra đồng thời và các vi dịch vụ tương tác. Bạn có thể dễ dàng cấu hình mức dung lượng đồng thời thích hợp theo nhu cầu duy nhất của ứng dụng của bạn. Bạn có thể tăng mức đồng thời trong thời gian có nhu cầu cao và giảm hoặc tắt hoàn toàn, khi nhu cầu giảm.

Câu hỏi: Điều gì xảy ra nếu một hàm nhận được số lần gọi cao hơn mức được cấu hình của Tính đồng thời được cung cấp?

Nếu tính đồng thời của một hàm đạt đến mức được cấu hình thì các lần gọi tiếp theo của hàm sẽ mang các đặc tính về độ trễ và quy mô của các hàm Lambda thông thường. Bạn có thể giới hạn hàm chỉ mở rộng đến mức được cấu hình. Làm như vậy sẽ ngăn không để hàm vượt quá mức được cấu hình của Tính đồng thời được cung cấp. Đây là một cơ chế để ngăn sự biến động không mong muốn trong ứng dụng khi nhu cầu vượt quá mức dự kiến.

Amazon EFS cho AWS Lambda

Câu hỏi: Amazon EFS cho AWS Lambda là gì?

Với Amazon Elastic File System (Amazon EFS) cho AWS Lambda, khách hàng có thể đọc, ghi và lưu trữ khối lượng dữ liệu lớn ở hầu hết mọi quy mô bằng cách sử dụng một hệ thống tệp NFS linh hoạt được quản lý toàn phần có thể thay đổi quy mô theo nhu cầu mà không cần cung cấp hoặc quản lý dung lượng. Trước đây, các nhà phát triển đã thêm mã vào các hàm của mình để tải dữ liệu từ S3 hoặc cơ sở dữ liệu xuống kho lưu trữ tạm thời cục bộ, được giới hạn ở 512 MB. Với EFS cho Lambda, các nhà phát triển không cần phải viết mã để tải dữ liệu xuống kho lưu trữ tạm thời để xử lý.

Câu hỏi: Tôi thiết lập Amazon EFS cho Lambda bằng cách nào?

Các nhà phát triển có thể dễ dàng kết nối hệ thống tệp EFS hiện có với một hàm Lambda thông qua Điểm truy cập EFS bằng cách sử dụng bảng điều khiển, CLI hoặc SDK. Khi hàm được gọi lần đầu tiên, hệ thống tệp sẽ tự động được gắn và cung cấp cho mã hàm. Bạn có thể tìm hiểu thêm trong tài liệu.

Câu hỏi: Tôi có cần cấu hình hàm của mình với các cài đặt VPC để có thể sử dụng hệ thống tệp Amazon EFS không?

Có. Các mục tiêu gắn kết cho Amazon EFS được liên kết với các mạng con trong một VPC. Hàm AWS Lambda cần được cấu hình để truy cập vào VPC đó.

Câu hỏi: Ai nên sử dụng Amazon EFS cho Lambda?

Sử dụng EFS cho Lambda thường lý tưởng để xây dựng các ứng dụng máy học hoặc tải các tệp hoặc mô hình tham chiếu lớn, xử lý hoặc sao lưu lượng lớn dữ liệu, lưu trữ nội dung web hoặc phát triển hệ thống xây dựng nội bộ. Khách hàng cũng có thể sử dụng EFS cho Lambda để duy trì trạng thái giữa các yêu cầu gọi trong cùng một cấu trúc vi dịch vụ có trạng thái, trong luồng công việc StepFunctions hoặc chia sẻ tệp giữa các ứng dụng phi máy chủ và các ứng dụng dựa trên bộ chứa hoặc phiên bản.

Câu hỏi: Dữ liệu của tôi sẽ được mã hóa khi chuyển tiếp?

Đúng vậy. Mã hóa dữ liệu khi đang truyền sử dụng giao thức Bảo mật lớp vận chuyển (TLS) 1.2 theo tiêu chuẩn công nghiệp để mã hóa dữ liệu được gửi giữa các hàm AWS Lambda và các hệ thống tệp Amazon EFS.

Câu hỏi: Dữ liệu của tôi có được mã hóa khi lưu trữ không?

Khách hàng có thể cung cấp Amazon EFS để mã hóa dữ liệu ở trạng thái lưu trữ. Dữ liệu được mã hóa ở trạng thái lưu trữ sẽ được mã hóa trong khi ghi và được giải mã khi đọc, do đó, bạn không phải sửa đổi ứng dụng của mình. Các khóa mã hóa được quản lý bởi AWS Key Management Service (KMS), do đó, bạn không cần xây dựng và duy trì cơ sở hạ tầng quản lý khóa bảo mật.

Câu hỏi: Tôi sẽ bị tính phí như thế nào khi sử dụng Amazon EFS cho AWS Lambda?

Việc sử dụng Amazon EFS cho AWS Lambda sẽ không bị tính thêm phí. Khách hàng sẽ trả mức giá tiêu chuẩn cho AWS Lambda và cho Amazon EFS. Khi sử dụng Lambda và EFS trong cùng một vùng sẵn sàng, khách hàng không bị tính phí truyền dữ liệu. Tuy nhiên, nếu sử dụng kết nối ngang hàng VPC để truy cập liên tài khoản, khách hàng sẽ phải chịu phí truyền dữ liệu. Để tìm hiểu thêm, vui lòng tham khảo mục Định giá.

Câu hỏi: Tôi có thể liên kết nhiều hệ thống tệp Amazon EFS với hàm AWS Lambda của mình không?

Không. Mỗi hàm Lambda sẽ có thể truy cập một hệ thống tệp EFS.

Câu hỏi: Tôi có thể sử dụng cùng một hệ thống tệp Amazon EFS trên nhiều hàm, bộ chứa và phiên bản không?

Có. Amazon EFS hỗ trợ các hàm Lambda, ECS, bộ chứa Fargate và các phiên bản EC2. Bạn có thể chia sẻ cùng một hệ thống tệp, đồng thời sử dụng chính sách IAM và Điểm truy cập để kiểm soát mỗi hàm, bộ chứa hoặc phiên bản có quyền truy cập.  

Các tiện ích mở rộng của Lambda

Câu hỏi: Các tiện ích mở rộng của AWS Lambda là gì?

Các tiện ích mở rộng của AWS Lambda (Xem trước) cho phép bạn tích hợp Lambda với các công cụ yêu thích của bạn để giám sát, quan sát, bảo mật và quản trị. Các tiện ích mở rộng cho phép bạn và các nhà cung cấp dụng cụ ưa thích của bạn tham gia vào vòng đời của Lambda và tích hợp sâu hơn vào môi trường thực thi Lambda.

Câu hỏi: Các tiện ích mở rộng của Lambda hoạt động như thế nào?

Các tiện ích mở rộng là các quy trình cùng chạy trong môi trường thực thi của Lambda nơi mã hàm của bạn được thực thi. Ngoài ra, chúng có thể chạy độc lập với chức năng gọi hàm - nghĩa là chúng bắt đầu trước khi hàm được khởi tạo, chạy song song với hàm, có thể chạy sau khi hoàn thành thực thi hàm và cũng có thể chạy trước khi dịch vụ Lambda tắt môi trường thực thi.

Câu hỏi: Tôi có thể sử dụng các tiện ích mở rộng của Lambda cho mục đích nào?

Bạn có thể sử dụng các tiện ích mở rộng cho các công cụ yêu thích của mình để giám sát, quan sát, bảo mật và quản trị từ AWS cũng như các đối tác sau: AppDynamics, Datadog, Dynatrace, Epsagon, HashiCorp, Lumigo, Check Point CloudGuard, New Relic, Thundra, AWS AppConfig, Amazon CloudWatch. Để tìm hiểu thêm về các tiện ích mở rộng này, hãy truy cập bài đăng trên blog hỗ trợ.

Câu hỏi: Tôi thiết lập và quản lý các tiện ích mở rộng của Lambda như thế nào?

Bạn có thể triển khai các tiện ích mở rộng, sử dụng Lớp, trên một hoặc nhiều hàm Lambda bằng cách sử dụng Console, CLI hoặc các công cụ cơ sở hạ tầng dưới dạng mã như CloudFormation, AWS Serverless Application Model và Terraform. Để bắt đầu, hãy truy cập vào tài liệu. Trong quá trình xem trước, bạn có thể chạy tối đa 10 tiện ích mở rộng cho mỗi hàm.

Câu hỏi: Tôi có thể sử dụng các tiện ích mở rộng của AWS Lambda với thời gian chạy nào?

Bạn có thể sử dụng tiện ích mở rộng với các thời gian chạy sau: .NET Core 3.1 (C#/PowerShell) (dotnetcore3.1), thời gian chạy tùy chỉnh (có sẵn), thời gian chạy tùy chỉnh trên Amazon Linux 2 (provided.al2), Java 11 (Corretto) (java11), Java 8 (Corretto) (java8.al2), Node.js 12.x (nodejs12.x), Node.js 10.x (nodejs10.x), Python 3.8 (python3.8), Python 3.7 (python3.7), Ruby 2.7 (ruby2.7), Ruby 2.5 (ruby2.5). Các tiện ích mở rộng của Lambda và các hàm mà chúng đang mở rộng có thể sử dụng các thời gian chạy khác nhau.

Câu hỏi: Các tiện ích mở rộng có được tính vào giới hạn gói triển khai không?

Có, tổng kích thước đã giải nén của hàm và tất cả các Tiện ích mở rộng không được vượt quá giới hạn kích thước gói triển khai đã giải nén là 250 MB.

Câu hỏi: Có ảnh hưởng về hiệu năng đến việc sử dụng một tiện ích mở rộng không?

Các tiện ích mở rộng có thể ảnh hưởng đến hiệu năng của hàm vì chúng sử dụng chung các tài nguyên như CPU, bộ nhớ và dung lượng lưu trữ với hàm, và vì các tiện ích mở rộng được khởi tạo trước mã hàm. Ví dụ: nếu một tiện ích mở rộng thực hiện các hoạt động điện toán chuyên sâu, bạn có thể thấy thời lượng thực thi hàm tăng lên vì tiện ích mở rộng và mã hàm của bạn sử dụng chung tài nguyên CPU.

Bạn có thể sử dụng chỉ số PostRuntimeExecutionDuration để đo thời gian bổ sung của tiện ích mở rộng sau khi thực thi hàm và bạn có thể sử dụng chỉ số MaxMemoryUsed để đo lường mức tăng bộ nhớ đã sử dụng. Để hiểu tác động của một tiện ích mở rộng cụ thể, bạn cũng có thể sử dụng chỉ số Thời lượng. Hiện tại, phản hồi thực thi hàm được trả lại sau khi thực thi hàm và thực thi tiện ích mở rộng được hoàn tất. Để tìm hiểu thêm, hãy truy cập vào tài liệu dành cho nhà phát triển Lambda.

Câu hỏi: Tôi sẽ bị tính phí như thế nào cho việc sử dụng các tiện ích mở rộng của AWS Lambda?

Các tiện ích mở rộng chia sẻ cùng một mô hình thanh toán với các hàm Lambda. Khi sử dụng các hàm Lambda với tiện ích mở rộng, bạn trả tiền cho các yêu cầu được phân phối và thời gian điện toán kết hợp được sử dụng để chạy mã của bạn và tất cả tiện ích mở rộng, tăng dần theo mỗi 100 mili giây. Bạn sẽ bị tính phí cho thời gian điện toán theo giá thời lượng Lambda hiện có. Để tìm hiểu thêm, vui lòng xem Giá AWS Lambda.

Vòng đời Lambda được tạo thành từ ba giai đoạn riêng biệt: ‘tạo’, khi AWS Lambda khởi tạo hàm, các phần phụ thuộc và phần tính năng mở rộng; ‘gọi’, khi Lambda thực thi hàm và mã mở rộng để phản hồi lại các trình kích hoạt; và 'tắt', sau khi quá trình thực thi hàm hoàn tất, nhưng mã tiện ích mở rộng có thể vẫn đang thực thi. Để tìm hiểu thêm về vòng đời của Lambda, vui lòng xem tài liệu về Môi trường thực thi Lambda.

Lưu ý: một sự cố đã được xác định vào thời điểm công bố việc xem trước này chính là bạn chỉ bị tính phí cho thời gian điện toán được sử dụng trong giai đoạn 'gọi' của vòng đời Lambda. Tất cả các giai đoạn sẽ được lập hóa đơn trong tương lai sau khi sự cố này được khắc phục; tuy nhiên, bạn sẽ không được hoàn trả lại cho bất kỳ giai đoạn nào chưa được lập hóa đơn do sự cố này.

Không tốn thêm phí để cài đặt tiện ích mở rộng, mặc dù các dịch vụ của đối tác có thể bị tính phí. Xem trang web đối tác có liên quan để biết chi tiết.

Câu hỏi: Tôi có thể tạo riêng các tiện ích mở rộng của Lambda tùy chỉnh không?

Được, bằng cách sử dụng API Tiện ích mở rộng thời gian hoạt động của AWS Lambda. Truy cập vào tài liệu này để tìm hiểu thêm.

Câu hỏi: Các tiện ích mở rộng hoạt động như thế nào khi bật Tính đồng thời được cung cấp?

Tính đồng thời được cung cấp giúp các hàm của bạn luôn duy trì khởi tạo và sẵn sàng nhằm phản hồi trong vài mili giây. Khi được kích hoạt, Tính đồng thời được cung cấp cũng khởi tạo các tiện ích mở rộng và luôn giúp hàm sẵn sàng để thực thi đồng thời mã hàm.

Câu hỏi: Tiện ích mở rộng có các quyền nào?

Vì Các tiện ích mở rộng được thực thi trong cùng môi trường như một hàm Lambda. Chúng có quyền truy cập vào cùng các tài nguyên như hàm và các quyền được chia sẻ giữa hàm và tiện ích mở rộng, do đó, chúng chia sẻ thông tin đăng nhập, vai trò và các biến môi trường. Các tiện ích mở rộng có quyền truy cập chỉ đọc vào mã hàm và có thể đọc và ghi trong /tmp.

Câu hỏi: AWS Lambda Runtime Logs API là gì?

AWS Lambda Runtime Logs API cho phép bạn sử dụng các tiện ích mở rộng để gửi nhật ký từ các hàm AWS Lambda trực tiếp đến địa điểm tùy ý. Các tiện ích mở rộng sử dụng API này để đăng ký những nhật ký giống nhau được phát trực tuyến đến Amazon CloudWatch Logs, và sau đó xử lý, lọc và gửi chúng đến địa điểm mong muốn.

Câu hỏi: Runtime Logs API hoạt động như thế nào?

Dịch vụ Lambda tự động thu thập nhật ký và phát trực tuyến chúng đến Amazon CloudWatch. Lượt phát này chứa những nhật ký được tạo từ bên trong mã hàm của bạn, và những nhật ký được tạo bởi dịch vụ Lambda khi thực hiện lệnh gọi.

Runtime Logs API cho phép người tạo tiện ích mở rộng đăng ký cùng lượt phát trực tuyến nhật ký trực tiếp từ bên trong môi trường thực thi Lambda. Sau khi nhận được yêu cầu đăng ký, dịch vụ Lambda phát trực tuyến nhật ký đến tiện ích mở rộng thông qua HTTP hoặc TCP, bên cạnh việc gửi chúng đến CloudWatch.

Câu hỏi: Làm cách nào để tôi bắt đầu sử dụng Runtime Logs API?

Bạn có thể triển khai các tiện ích mở rộng sử dụng Runtime Logs API, bằng cách sử dụng Lớp, trên một hoặc nhiều hàm Lambda bằng cách sử dụng Console, CLI hoặc các công cụ cơ sở hạ tầng dưới dạng mã như CloudFormation, AWS Serverless Application Model và Terraform.

Bạn có thể sử dụng các tiện ích mở rộng cho các công cụ yêu thích của mình để giám sát, quan sát, bảo mật và quản trị từ AWS cũng như các đối tác sau: Coralogix, Datadog, Honeycomb, Lumigo, New Relic, Sumo Logic, và Amazon CloudWatch. Để tìm hiểu thêm về các tiện ích mở rộng này, hãy truy cập bài đăng trên blog hỗ trợ.

Câu hỏi: Sử dụng Runtime Logs API có ảnh hưởng đến hiệu năng không?

Bạn chỉ có thể sử dụng Runtime Logs API từ bên trong Tiện ích mở rộng AWS Lambda. Các tiện ích mở rộng có thể ảnh hưởng đến hiệu năng của hàm vì chúng sử dụng chung các tài nguyên như CPU, bộ nhớ và dung lượng lưu trữ với hàm, và vì các tiện ích mở rộng được khởi tạo trước mã hàm. Ví dụ: nếu một tiện ích mở rộng thực hiện các hoạt động điện toán chuyên sâu, bạn có thể thấy thời lượng thực thi hàm tăng lên vì tiện ích mở rộng và mã hàm của bạn sử dụng chung tài nguyên CPU. Ngoài ra, mỗi lần đăng ký Runtime Logs API có thể tiêu tốn thêm bộ nhớ để lưu trữ nhật ký ngoài bộ nhớ mà tiện ích mở rộng chứa nó tiêu tốn.

Câu hỏi: Tôi sẽ bị tính phí như thế nào cho việc sử dụng Runtime Logs API?

Bạn không bị tính thêm phí khi sử dụng AWS Lambda Runtime Logs API. Các tiện ích mở rộng sử dụng Runtime Logs API có cùng mô hình tính phí với các tiện ích mở rộng và hàm Lambda khác. Để tìm hiểu thêm về giá Tiện ích mở rộng, vui lòng xem câu hỏi thường gặp.

Câu hỏi: Sử dụng Runtime Logs API có vô hiệu hóa việc gửi nhật ký đến Amazon CloudWatch Logs không?

Không, theo mặc định, nền tảng Lambda gửi tất cả nhật ký đến CloudWatch Logs, và sử dụng Runtime Logs API không vô hiệu hóa việc gửi đến CloudWatch Logs.

Lambda@Edge

Câu hỏi: Lambda@Edge là gì?

Lambda@Edge cho phép bạn chạy mã tại nhiều vị trí của AWS trên toàn cầu mà không cần cung cấp hay quản lý máy chủ, phản hồi tới người dùng cuối với độ trễ mạng thấp nhất. Bạn chỉ cần tải mã Node.js hoặc Python lên AWS Lambda và cấu hình để hàm được kích hoạt khi phản hồi lại những yêu cầu của Amazon CloudFront (nói cách khác, khi có một yêu cầu của người xem, khi yêu cầu được chuyển tiếp đến hoặc nhận lại từ nguồn, hoặc ngay trước khi phản hồi lại tới người dùng cuối). Sau đó, mã này sẽ sẵn sàng để thực thi tại nhiều vị trí của AWS trên toàn cầu khi nhận được yêu cầu nội dung và mã sẽ mở rộng quy mô theo khối lượng yêu cầu của CloudFront trên toàn cầu. Tìm hiểu thêm trong tài liệu.

Câu hỏi: Tôi sử dụng Lambda@Edge như thế nào?

Để sử dụng Lambda@Edge, bạn chỉ cần tải mã lên AWS Lambda và liên kết một phiên bản hàm cần kích hoạt khi phản hồi với các yêu cầu của Amazon CloudFront. Mã của bạn phải thỏa mãn các giới hạn dịch vụ của Lambda@Edge. Tại thời điểm này, Lambda@Edge hỗ trợ Node.js và Python cho việc gọi hàm toàn cầu bởi các sự kiện CloudFront. Tìm hiểu thêm trong tài liệu.

Câu hỏi: Tôi nên sử dụng Lambda@Edge khi nào?

Lambda@Edge được tối ưu hóa cho những trường hợp có đòi hỏi khắt khe về độ trễ, trong đó người xem cuối của bạn phân bố khắp toàn cầu. Tất cả thông tin bạn cần để ra quyết định sẽ có tại biên CloudFront, trong phạm vi của hàm và yêu cầu. Điều này đồng nghĩa rằng, các trường hợp sử dụng, trong đó, bạn muốn đưa ra quyết định về cách phục vụ nội dung dựa trên đặc tính người dùng (ví dụ: vị trí, thiết bị khách, v.v.) giờ đây có thể được thực thi và phục vụ cận kề với người dùng mà không cần phải định tuyến ngược trở lại một máy chủ tập trung.

Câu hỏi: Tôi có thể triển khai các hàm Lambda hiện có cho yêu cầu gọi từ khắp toàn cầu hay không?

Bạn có thể liên kết các hàm Lambda hiện có với các sự kiện CloudFront cho các yêu cầu gọi từ khắp toàn cầu nếu hàm thỏa mãn các yêu cầu và giới hạn dịch vụ của Lambda@Edge. Đọc thêm ở đây để biết cách cập nhật các thuộc tính hàm của bạn.

Câu hỏi: Có thể sử dụng những sự kiện Amazon CloudFront nào để kích hoạt các hàm?

Các hàm của bạn sẽ tự động kích hoạt để phản hồi với các sự kiện Amazon CloudFront sau:

  • Yêu cầu từ người xem – Sự kiện này diễn ra khi người dùng cuối hoặc một thiết bị trên Internet tạo ra một yêu cầu HTTP(S) tới CloudFront và yêu cầu này đi đến vị trí biên gần nhất với người dùng đó.
  • Phản hồi từ người xem – Sự kiện này diễn ra khi máy chủ CloudFront tại biên đã sẵn sàng để phản hồi người dùng cuối hoặc thiết bị đưa ra yêu cầu đó.
  • Yêu cầu từ nguồn – Sự kiện này diễn ra khi máy chủ biên CloudFront không có đối tượng được yêu cầu trong bộ lưu trữ đệm và yêu cầu của người xem đã sẵn sàng để được chuyển về máy chủ web nguồn backend (ví dụ: Amazon EC2, Application Load Balancer hay Amazon S3).
  • Phản hồi từ nguồn - Sự kiện này diễn ra khi máy chủ CloudFront tại biên nhận một phản hồi từ máy chủ web nguồn backend.

Câu hỏi: AWS Lambda@Edge có điểm gì khác biệt so với sử dụng AWS Lambda phía sau Amazon API Gateway?

Điểm khác biệt nằm ở chỗ API Gateway và Lambda là các dịch vụ khu vực. Sử dụng Lambda@EdgeAmazon CloudFront cho phép bạn thực thi logic trên nhiều khu vực AWS dựa theo vị trí người dùng cuối của bạn.

Khả năng thay đổi quy mô và độ sẵn sàng

Câu hỏi: Các hàm AWS Lambda có độ sẵn sàng như thế nào?

AWS Lambda được thiết kế với khả năng tái tạo và độ dôi dư nhằm mang đến độ sẵn sàng cao cho bản thân dịch vụ và cho các hàm chạy trên dịch vụ. Khung thời gian bảo trì hay thời gian ngừng hoạt động theo lịch đều không cần đến.

Câu hỏi: Khi tôi thay đổi mã hay cấu hình, các hàm AWS Lambda của tôi có vẫn sẵn sàng hay không?

Có. Khi bạn cập nhật hàm Lambda, sẽ có một khung thời gian ngắn, thường dưới một phút, trong đó các yêu cầu có thể được phục vụ bởi phiên bản cũ hoặc phiên bản mới của hàm.

Câu hỏi: Khi thực thi đồng loạt, hàm AWS Lambda có bị giới hạn số lượng hay không?

Không. AWS Lambda được thiết kế để chạy song song nhiều phiên bản hàm. Tuy nhiên, AWS Lambda có một ngưỡng điều tiết an toàn mặc định đối với số lượng thao tác thực thi đồng thời trên mỗi tài khoản trên mỗi khu vực (truy cập vào đây để biết thông tin về giới hạn điều tiết an toàn mặc định). Bạn cũng có thể kiểm soát số thao tác thực thi đồng thời tối đa đối với từng hàm AWS Lambda mà bạn có thể sử dụng để dự trữ một phần nhỏ giới hạn chạy đồng thời của tài khoản cho các hàm quan trọng hoặc giới hạn tốc độ lưu lượng đối với các tài nguyên xuôi chiều.

Nếu muốn gửi yêu cầu để tăng giới hạn điều tiết, bạn có thể truy cập Trung tâm hỗ trợ, nhấp vào “Open a new case” (Mở một trường hợp mới) và nộp yêu cầu tăng giới hạn dịch vụ.

Câu hỏi: Điều gì sẽ xảy ra nếu tài khoản của tôi vượt quá giới hạn điều tiết mặc định về số lượng thao tác thực thi đồng thời?

Khi vượt quá giới hạn điều tiết, các hàm AWS Lambda đang được gọi ra đồng thời sẽ trả về lỗi điều tiết (mã lỗi 429). Các hàm Lambda đang được gọi ra đồng thời có thể chiếm các phần lưu lượng tăng đột biến chấp nhận được trong khoảng 15-30 phút, sau đó các sự kiện đến sẽ bị từ chối do được điều tiết. Trong trường hợp hàm Lambda đang được gọi ra để phản hồi với các sự kiện Amazon S3, các sự kiện bị AWS Lambda từ chối có thể được S3 giữ lại và thử lại trong vòng 24 giờ. Sự kiện từ các luồng Amazon Kinesis và các luồng Amazon DynamoDB được thử lại cho đến khi hàm Lambda thành công hoặc dữ liệu hết hạn. Các Luồng Amazon Kinesis và Amazon DynamoDB giữ lại dữ liệu trong vòng 24 giờ.

Câu hỏi: Giới hạn mặc định có áp dụng ở cấp độ mỗi hàm hay không?

Không, giới hạn mặc định chỉ áp dụng ở cấp độ tài khoản.

Câu hỏi: Điều gì sẽ xảy ra nếu hàm Lambda của tôi bị lỗi khi đang xử lý một sự kiện?

Khi gặp lỗi, các hàm Lambda đang được gọi ra đồng thời sẽ phản hồi bằng một ngoại lệ. Các hàm exception đang được gọi ra đồng thời sẽ được thử lại ít nhất 3 lần. Sự kiện từ các luồng Amazon Kinesis và các luồng Amazon DynamoDB được thử lại cho đến khi hàm Lambda thành công hoặc dữ liệu hết hạn. Các Luồng Kinesis và DynamoDB giữ lại dữ liệu trong vòng tối thiểu 24 giờ.

Câu hỏi: Điều gì sẽ xảy ra nếu các yêu cầu gọi hàm Lambda sử dụng hết chính sách hiện có?

Khi vượt quá chính sách thử lại cho các yêu cầu gọi đồng thời, bạn có thể cấu hình một “hàng chờ thư chết” (DLQ) mà sự kiện sẽ được đặt vào đó; khi không có DLQ nào được cấu hình, sự kiện có sẽ bị từ chối. Khi vượt quá chính sách thử lại đối với các yêu cầu gọi từ luồng, dữ liệu có thể đã hết hạn và do đó, bị từ chối.

Câu hỏi: Tôi có thể cấu hình những tài nguyên nào làm hàng chờ thư chết cho một hàm Lambda?

Bạn có thể cấu hình hàng chờ Amazon SQS hoặc chủ đề Amazon SNS làm hàng chờ thư chết.

Kiểm soát bảo mật và truy cập

Câu hỏi: Làm thế nào để cho phép hàm AWS Lambda của tôi truy cập các tài nguyên AWS khác?

Bạn cấp quyền cho hàm Lambda truy cập các tài nguyên khác bằng vai trò IAM. AWS Lambda giữ vai trò này khi thực thi hàm Lambda, do đó bạn luôn duy trì được khả năng kiểm soát đầy đủ, bảo mật về chính xác các tài nguyên AWS nào mà hàm có thể sử dụng. Tham khảo Thiết lập AWS Lambda để tìm hiểu thêm về vai trò.

Câu hỏi: Làm thế nào để kiểm soát được bộ chứa Amazon S3 nào có thể gọi được hàm AWS Lambda nào?

Khi bạn cấu hình một bộ chứa Amazon S3 gửi thông điệp đến một hàm AWS Lambda, một quy tắc chính sách tài nguyên sẽ được tạo để cấp quyền truy cập. Tham khảo Hướng dẫn dành cho nhà phát triển Lambda để tìm hiểu thêm về các chính sách tài nguyên và khả năng kiểm soát truy cập đối với các hàm Lambda.

Câu hỏi: Làm thế nào để kiểm soát được một hàm AWS Lambda có thể thăm dò được bảng Amazon DynamoDB hoặc luồng Amazon Kinesis nào?

Khả năng kiểm soát truy cập được quản lý thông qua vai trò của hàm Lambda. Vai trò mà bạn chỉ định cho hàm Lambda cũng quyết định AWS Lambda có thể thay cho hàm thăm dò (các) tài nguyên nào. Tham khảo Hướng dẫn dành cho nhà phát triển Lambda để tìm hiểu thêm.

Câu hỏi: Làm thế nào để kiểm soát một hàm AWS Lambda có thể thăm dò được hàng chờ Amazon SQS nào?

Khả năng kiểm soát truy cập có thể được quản lý qua vai trò của hàm Lambda hoặc cài đặt chính sách tài nguyên trên chính hàng chờ. Nếu có cả hai chính sách, quyền nào giới hạn hơn sẽ áp dụng.

Câu hỏi: Tôi có thể truy cập các tài nguyên phía sau Amazon VPC bằng hàm AWS Lambda của mình hay không?

Có. Bạn có thể truy cập các tài nguyên phía sau Amazon VPC.

Câu hỏi: Làm thế nào để kích hoạt và vô hiệu hóa hỗ trợ VPC cho hàm Lambda của tôi?

Để kích hoạt hỗ trợ VPC, bạn cần chỉ định một hoặc nhiều mạng con trong một VPC đơn lẻ và một nhóm bảo mật nằm trong cấu hình của hàm. Để vô hiệu hóa hỗ trợ VPC, bạn cần cập nhật cấu hình của hàm và chỉ định một danh sách trống cho mạng con và nhóm bảo mật. Bạn có thể thay đổi cài đặt này bằng các API, CLI của AWS hoặc Bảng điều khiển quản lý AWS Lambda.

Câu hỏi: Một hàm Lambda đơn lẻ có thể có quyền truy cập nhiều VPC hay không?

Không. Các hàm Lambda chỉ cung cấp quyền truy cập vào một VPC duy nhất. Nếu có nhiều mạng con được chỉ định, tất cả các mạng con đó phải trong cùng một VPC. Bạn có thể kết nối đến các VPC khác bằng cách kết nối ngang hàng các VPC của bạn.

Câu hỏi: Các hàm Lambda trong một VPC cũng có thể truy cập internet và các điểm cuối Dịch vụ AWS hay không?

Các hàm Lambda được cấu hình để truy cập các tài nguyên trong một VPC cụ thể sẽ không có quyền truy cập internet theo cấu hình mặc định. Nếu muốn truy cập vào các điểm cuối bên ngoài, bạn sẽ cần phải tạo một NAT trong VPC của mình để chuyển tiếp lưu lượng này và định cấu hình nhóm bảo mật để cho phép lưu lượng ra này.

Câu hỏi: Ký mã cho AWS Lambda là gì?

Ký mã cho AWS Lambda cung cấp các kiểm soát tin cậy và tính toàn vẹn nhằm cho phép bạn xác minh rằng chỉ mã chưa thay đổi từ các nhà phát triển đã được phê duyệt mới được triển khai trong hàm Lambda của bạn. Bạn có thể dùng AWS Signer, một dịch vụ ký mã được quản lý đầy đủ cho các thành phần lạ của mã được ký kỹ thuật số và định cấu hình các hàm Lambda của bạn để xác minh các chữ ký khi triển khai. Ký mã cho AWS Lambda hiện chỉ khả dụng với các hàm được đóng gói dưới dạng lưu trữ ZIP.

Câu hỏi: Làm sao để tạo các thành phần lạ được ký kỹ thuật số?

Bạn có thể tạo các thành phần lạ được ký kỹ thuật số bằng Hồ sơ ký thông qua bảng điều khiển AWS Signer, API Signer, SAM CLI hoặc AWS CLI. Để tìm hiểu thêm, vui lòng xem tài liệu về AWS Signer.

Câu hỏi: Định cấu hình hàm Lambda như thế nào để bật tính năng ký mã?

Bạn có thể bật tính năng ký mã bằng cách tạo Cấu hình ký mã thông qua Bảng điều khiển quản lý AWS, API Lambda, AWS CLI, AWS CloudFormation và AWS SAM. Cấu hình ký mã giúp bạn chỉ định cấu hình ký được phê duyệt và định cấu hình cảnh báo hoặc từ chối triển khai nếu kiểm tra chữ ký không thành công. Cấu hình ký mã có thể được gắn vào các hàm Lambda riêng lẻ để bật tính năng ký mã. Các hàm như vậy hiện bắt đầu xác minh chữ ký khi triển khai.

Câu hỏi: AWS Lambda thực hiện kiểm tra chữ ký nào khi triển khai?

AWS Lambda có thể thực hiện các hoạt động kiểm tra chữ ký sau đây khi triển khai:

• Chữ ký bị hỏng - Điều này xảy ra nếu thành phần lạ của mã đã bị thay đổi kể sau khi ký.
• Chữ ký không khớp - Điều này xảy ra nếu thành phần lạ của mã được ký bởi một cấu hình ký không được phê duyệt.
• Chữ ký hết hạn - Điều này xảy ra nếu chữ ký đã qua ngày hết hạn đã định cấu hình.
• Chữ ký đã thu hồi - Điều này xảy ra nếu chủ sở hữu hồ sơ ký thu hồi các tác vụ ký.

Để tìm hiểu thêm, vui lòng xem tài liệu về AWS Lambda.

Câu hỏi: Tôi có thể bật tính năng ký mã cho các hàm hiện có không?

Có, bạn có thể bật tính năng ký mã cho các hàm hiện có bằng cách đính kèm cấu hình ký mã vào hàm. Bạn có thể thực hiện việc này bằng bảng điều khiển AWS Lambda, API Lambda, AWS CLI, AWS CloudFormation và AWS SAM.

Câu hỏi: Có bất kỳ chi phí phát sinh nào khi sử dụng Ký mã cho AWS Lambda không?

Không có chi phí phát sinh khi sử dụng Ký mã cho AWS Lambda. Bạn có thể thanh toán giá tiêu chuẩn cho AWS Lambda. Để tìm hiểu thêm, vui lòng tham khảo mục Định giá.

Hàm AWS Lambda trong Java

Câu hỏi: Tôi biên soạn mã Java của hàm AWS Lambda bằng cách nào?

Bạn có thể sử dụng các công cụ tiêu chuẩn như Maven hoặc Gradle để biên soạn hàm Lambda. Quy trình xây dựng của bạn phải tương đồng với quy trình mà bạn sẽ sử dụng để biên soạn mã Java bất kỳ tùy thuộc vào AWS SDK. Chạy công cụ biên soạn Java trên các tệp nguồn và đưa AWS SDK 1.9 hoặc mới hơn vào sử dụng cùng với các quan hệ phụ thuộc bắc cầu trên classpath. Để biết thêm chi tiết, xem tài liệu.

Câu hỏi: Môi trường JVM mà Lambda sử dụng để thực thi hàm là gì?

Lambda cung cấp bản dựng Amazon Linux openjdk 1.8.

Hàm AWS Lambda trong Node.js

Câu hỏi: Tôi có thể sử dụng các gói với AWS Lambda không?

Có. Bạn có thể sử dụng các gói NPM cũng như các gói tùy chỉnh. Tìm hiểu thêm ở đây.

Câu hỏi: Tôi có thể thực thi các chương trình khác từ trong phạm vi hàm AWS Lambda viết bằng Node.js hay không?

Có. Sandbox tích hợp sẵn của Lambda cho phép bạn chạy các tập lệnh xử lý theo lô (“shell”), các thời gian chạy ngôn ngữ khác, lịch trình tiện ích và các tệp thực thi. Tìm hiểu thêm ở đây.

Câu hỏi: Các mô-đun gốc có sử dụng được với các hàm AWS Lambda viết bằng Node.js hay không?

Có. Bất cứ mô-đun gốc nào có liên kết về mặt thống kê đều có thể đưa vào trong tệp ZIP mà bạn tải lên, cũng như các mô-đun liên kết linh hoạt được soạn thảo bằng rpath trỏ đến thư mục gốc của hàm Lambda. Tìm hiểu thêm ở đây.

Câu hỏi: Tôi có thể thực thi các tệp nhị phân bằng AWS Lambda viết bằng Node.js hay không?

Có. Bạn có thể sử dụng lệnh child_process của Node.js để thực thi một tệp nhị phân mà bạn đã đưa vào trong hàm hoặc tệp thực thi bất kỳ từ Amazon Linux hiển thị với hàm của bạn. Ngoài ra còn tồn tại một số gói NPM có chứa các tệp nhị phân dòng lệnh, chẳng hạn như node-ffmpeg. Tìm hiểu thêm ở đây.

Câu hỏi: Tôi triển khai mã hàm AWS Lambda viết bằng Node.js bằng cách nào?

Để triển khai một hàm Lambda viết bằng Node.js, bạn chỉ cần đóng gói mã Javascript và các thư viện phụ thuộc dưới dạng tệp ZIP. Bạn có thể tải tệp ZIP này lên từ môi trường cục bộ của mình hoặc chỉ định một vị trí Amazon S3 chứa tệp ZIP. Để biết thêm chi tiết, xem tài liệu.

Hàm AWS Lambda trong Python

Câu hỏi: Tôi có thể sử dụng các gói Python với AWS Lambda không?

Có. Bạn có thể sử dụng pip để cài đặt bất kỳ gói Python nào cần thiết.

Hàm AWS Lambda trong C#

Câu hỏi: Tôi đóng gói và triển khai hàm AWS Lambda trong C# bằng cách nào?

Bạn có thể tạo một hàm C# Lambda thông qua IDE Visual Studio bằng cách chọn “Publish to AWS Lambda” (Phát hành đến AWS Lambda) trong Trình khám phá giải pháp. Hoặc, bạn có thể chạy trực tiếp lệnh “dotnet lambda publish” từ CLI dotnet đã cài đặt [# bản vá công cụ CLI của Lambda], thao tác này tạo một tệp ZIP chứa mã nguồn C# cùng với tất cả các quan hệ phụ thuộc NuGet cũng như các tập hợp DLL đã phát hành của riêng bạn, đồng thời tự động tải tệp này lên AWS Lambda bằng tham số thời gian chạy “dotnetcore1.0”

Hàm AWS Lambda trong PowerShell

Câu hỏi: Tôi triển khai mã hàm AWS Lambda viết bằng PowerShell bằng cách nào?

Gói triển khai PowerShell Lambda là một tập ZIP chứa tập lệnh PowerShell của bạn, các mô-đun PowerShell bắt buộc hỗ trợ tập lệnh PowerShell và các tập hợp cần thiết để lưu trữ PowerShell Core. Sau đó, bạn sẽ sử dụng mô-đun PowerShell AWSLambdaPSCore mà bạn có thể cài đặt từ Thư viện PowerShell để tạo gói triển khai PowerShell Lambda của bạn.

Câu hỏi: Tôi triển khai mã hàm AWS Lambda viết bằng PowerShell bằng cách nào?  Gói triển khai PowerShell Lambda là một tập ZIP chứa tập lệnh PowerShell của bạn, các mô-đun PowerShell bắt buộc hỗ trợ tập lệnh PowerShell và các tập hợp cần thiết để lưu trữ PowerShell Core. Sau đó, bạn sẽ sử dụng mô-đun PowerShell AWSLambdaPSCore mà bạn có thể cài đặt từ Thư viện PowerShell để tạo gói triển khai PowerShell Lambda của bạn.
Câu hỏi: Tôi triển khai mã hàm AWS Lambda viết bằng PowerShell bằng cách nào?  Gói triển khai PowerShell Lambda là một tập ZIP chứa tập lệnh PowerShell của bạn, các mô-đun PowerShell bắt buộc hỗ trợ tập lệnh PowerShell và các tập hợp cần thiết để lưu trữ PowerShell Core. Sau đó, bạn sẽ sử dụng mô-đun PowerShell AWSLambdaPSCore mà bạn có thể cài đặt từ Thư viện PowerShell để tạo gói triển khai PowerShell Lambda của bạn.

Hàm AWS Lambda trong Go

Câu hỏi: Tôi đóng gói và triển khai hàm AWS Lambda trong Go bằng cách nào? 

Tải lên thành phần lạ thực thi Go của bạn dưới dạng tập ZIP thông qua AWS CLI hoặc bảng điều khiển Lambda và lựa chọn thời gian chạy go1.x. Với Lambda, bạn có thể sử dụng các công cụ gốc của Go để xây dựng và đóng gói mã của mình. Để biết thêm chi tiết, đọc tài liệu của chúng tôi

Hàm AWS Lambda trong Ruby

Câu hỏi: Tôi triển khai mã hàm AWS Lambda viết bằng Ruby bằng cách nào? 

Để triển khai một hàm Lambda viết bằng Ruby, hãy đóng gói mã Ruby và các gem dưới dạng tệp ZIP. Bạn có thể tải tệp ZIP này lên từ môi trường cục bộ của mình hoặc chỉ định một vị trí Amazon S3 chứa tệp ZIP.

Các chủ đề khác

Câu hỏi: AWS Lambda hỗ trợ những phiên bản Amazon Linux, Node.js, Python, JDK, .NET Core, SDK và thư viện bổ sung nào?

Bạn có thể xem danh sách phiên bản được hỗ trợ ở đây.

Câu hỏi: Tôi có thể thay đổi phiên bản Amazon Linux hoặc thời gian chạy ngôn ngữ không?

Không. AWS Lambda cung cấp một phiên bản hệ điều hành và thời gian chạy ngôn ngữ có quản lý duy nhất cho tất cả người dùng dịch vụ. Ban có thể sử dụng thời gian chạy ngôn ngữ của riêng bạn trong Lambda.

Câu hỏi: Tôi có thể ghi lại và kiểm tra các lệnh gọi thực hiện tới API AWS Lambda bằng cách nào?

AWS Lambda được tích hợp với AWS CloudTrail. AWS CloudTrail có thể ghi lại và cung cấp các tệp nhật ký có bộ chứa Amazon S3 mô tả mức sử dụng API của tài khoản của bạn.

Câu hỏi: Làm thế nào để điều phối lệnh gọi giữa nhiều hàm Lambda?

Bạn có thể sử dụng Amazon Step Functions để điều phối nhiều hàm Lambda đang gọi. Bạn có thể gọi ra nhiều hàm Lambda theo cách tuần tự, chuyển đầu ra của hàm này sang hàm khác, hoặc song song. Xem tài liệu của chúng tôi để biết thêm chi tiết.

Câu hỏi: AWS Lambda có hỗ trợ Advanced Vector Extensions 2 (AVX2) không?

Có, AWS Lambda hỗ trợ bộ hướng dẫn Advanced Vector Extensions 2 (AVX2). Để tìm hiểu thêm về cách biên dịch mã ứng dụng của bạn để hướng bộ hướng dẫn này vào việc cải thiện hiệu năng, hãy truy cập tài liệu dành cho nhà phát triển AWS Lambda.

Tìm hiểu thêm về cách định giá AWS Lambda

Truy cập trang giá
Bạn đã sẵn sàng để bắt đầu chưa?
Đăng ký
Bạn có thêm câu hỏi?
Liên hệ với chúng tôi