Trong hướng dẫn này, bạn tạo một hàm Lambda tiêu thụ thư từ hàng đợi Amazon Simple Queue Service [Amazon SQS]
điều kiện tiên quyết
Hướng dẫn này giả định rằng bạn đã có một số kiến thức về hoạt động Lambda cơ bản và bảng điều khiển Lambda. Nếu bạn chưa làm, hãy làm theo hướng dẫn trong Tạo hàm Lambda bằng bảng điều khiển để tạo hàm Lambda đầu tiên của bạn
Để hoàn thành các bước sau, bạn cần có một thiết bị đầu cuối dòng lệnh hoặc shell để chạy các lệnh. Các lệnh và đầu ra dự kiến được liệt kê trong các khối riêng biệt
aws --version
Bạn sẽ thấy đầu ra sau
aws-cli/2.0.57 Python/3.7.4 Darwin/19.6.0 exe/x86_64
Đối với các lệnh dài, ký tự thoát [
aws-cli/2.0.57 Python/3.7.4 Darwin/19.6.0 exe/x86_64
0] được sử dụng để phân tách lệnh thành nhiều dòngTrên Linux và macOS, hãy sử dụng trình quản lý gói và shell ưa thích của bạn
Trong Windows, một số lệnh Bash CLI mà bạn thường sử dụng với Lambda [chẳng hạn như
aws-cli/2.0.57 Python/3.7.4 Darwin/19.6.0 exe/x86_64
0] không được thiết bị đầu cuối tích hợp sẵn của hệ điều hành hỗ trợ. Để có phiên bản Ubuntu và Bash tích hợp Windows, hãy cài đặt Hệ thống con Windows cho LinuxTạo vai trò thực thi
Tạo một vai trò thực thi cấp cho chức năng của bạn quyền truy cập vào các tài nguyên AWS cần thiết
Để tạo một vai trò thực thi
Mở trang Vai trò của bảng điều khiển AWS Identity and Access Management [IAM]
Chọn Tạo vai trò
Tạo một vai trò với các thuộc tính sau
Thực thể đáng tin cậy – AWS Lambda
Quyền – AWSLambdaSQSQueueExecutionRole
Tên vai trò –
1aws-cli/2.0.57 Python/3.7.4 Darwin/19.6.0 exe/x86_64
Chính sách AWSLambdaSQSQueueExecutionRole có các quyền mà hàm cần để đọc các mục từ Amazon SQS và ghi nhật ký vào Amazon CloudWatch Logs
Tạo chức năng
Tạo một hàm Lambda để xử lý các tin nhắn Amazon SQS của bạn. Nút sau. ví dụ về mã js 12 ghi từng thông báo vào nhật ký trong Nhật ký CloudWatch
Để biết ví dụ về mã bằng các ngôn ngữ khác, hãy xem Mã chức năng Amazon SQS mẫu
chỉ mục ví dụ. js
exports.handler = async function[event, context] {
event.Records.forEach[record => {
const { body } = record;
console.log[body];
}];
return {};
}
Để tạo chức năng
Thực hiện theo các bước này sẽ tạo một hàm trong Node. js 12. Đối với các ngôn ngữ khác, các bước thực hiện tương tự nhưng có một số chi tiết khác
Lưu ví dụ mã dưới dạng tệp có tên
2aws-cli/2.0.57 Python/3.7.4 Darwin/19.6.0 exe/x86_64
Tạo gói triển khai
zip function.zip index.js
Tạo chức năng bằng lệnh
3 Giao diện dòng lệnh AWS [AWS CLI]________số 8aws-cli/2.0.57 Python/3.7.4 Darwin/19.6.0 exe/x86_64
Kiểm tra chức năng
Gọi thủ công hàm Lambda của bạn bằng cách sử dụng lệnh
aws-cli/2.0.57 Python/3.7.4 Darwin/19.6.0 exe/x86_64
4 AWS CLI và một sự kiện Amazon SQS mẫuNếu trình xử lý trở lại bình thường mà không có ngoại lệ, thì Lambda sẽ coi thư đã được xử lý thành công và bắt đầu đọc thư mới trong hàng đợi. Sau khi xử lý thành công một tin nhắn, Lambda sẽ tự động xóa nó khỏi hàng đợi. Nếu trình xử lý đưa ra một ngoại lệ, Lambda sẽ coi lô thư không được xử lý thành công và Lambda sẽ gọi hàm với cùng một lô thư
Lưu JSON sau đây dưới dạng tệp có tên
5aws-cli/2.0.57 Python/3.7.4 Darwin/19.6.0 exe/x86_64
1aws-cli/2.0.57 Python/3.7.4 Darwin/19.6.0 exe/x86_64
JSON trước đó mô phỏng một sự kiện mà Amazon SQS có thể gửi tới hàm Lambda của bạn, trong đó
6 chứa thông báo thực tế từ hàng đợiaws-cli/2.0.57 Python/3.7.4 Darwin/19.6.0 exe/x86_64
Chạy lệnh
4 AWS CLI sauaws-cli/2.0.57 Python/3.7.4 Darwin/19.6.0 exe/x86_64
4aws-cli/2.0.57 Python/3.7.4 Darwin/19.6.0 exe/x86_64
Tùy chọn cli-binary-format là bắt buộc nếu bạn đang sử dụng AWS CLI phiên bản 2. Để đặt cài đặt này thành cài đặt mặc định, hãy chạy
8. Để biết thêm thông tin, hãy xem Các tùy chọn dòng lệnh toàn cầu được AWS CLI hỗ trợaws-cli/2.0.57 Python/3.7.4 Darwin/19.6.0 exe/x86_64
Xác minh đầu ra trong tệp
9aws-cli/2.0.57 Python/3.7.4 Darwin/19.6.0 exe/x86_64
Tạo hàng đợi Amazon SQS
Tạo hàng đợi Amazon SQS mà hàm Lambda có thể sử dụng làm nguồn sự kiện
Để tạo một hàng đợi
Mở bảng điều khiển Amazon SQS
Chọn Tạo hàng đợi, sau đó định cấu hình hàng đợi. Để biết hướng dẫn chi tiết, hãy xem Tạo hàng đợi Amazon SQS [bảng điều khiển] trong Hướng dẫn dành cho nhà phát triển dịch vụ hàng đợi đơn giản của Amazon
Sau khi tạo hàng đợi, hãy ghi lại Tên tài nguyên Amazon [ARN] của nó. Bạn cần điều này trong bước tiếp theo khi bạn liên kết hàng đợi với hàm Lambda của mình
Để tạo ánh xạ giữa hàng đợi Amazon SQS và hàm Lambda của bạn, hãy chạy lệnh
exports.handler = async function[event, context] {
event.Records.forEach[record => {
const { body } = record;
console.log[body];
}];
return {};
}
0 AWS CLI sauaws-cli/2.0.57 Python/3.7.4 Darwin/19.6.0 exe/x86_64
8Để có danh sách ánh xạ nguồn sự kiện của bạn, hãy chạy lệnh sau
aws-cli/2.0.57 Python/3.7.4 Darwin/19.6.0 exe/x86_64
9Kiểm tra thiết lập
Bây giờ bạn có thể kiểm tra thiết lập như sau
Mở bảng điều khiển Amazon SQS
Chọn tên của hàng đợi mà bạn đã tạo trước đó
Chọn Gửi và nhận tin nhắn
Trong Nội dung thư, hãy nhập một thư kiểm tra
Chọn Gửi tin nhắn
Lambda thăm dò hàng đợi để cập nhật. Khi có thông báo mới, Lambda sẽ gọi hàm của bạn với dữ liệu sự kiện mới này từ hàng đợi. Hàm của bạn chạy và tạo nhật ký trong Amazon CloudWatch. Bạn có thể xem nhật ký trong bảng điều khiển CloudWatch
Làm sạch tài nguyên của bạn
Bây giờ bạn có thể xóa các tài nguyên mà bạn đã tạo cho hướng dẫn này, trừ khi bạn muốn giữ lại chúng. Bằng cách xóa các tài nguyên AWS mà bạn không còn sử dụng nữa, bạn sẽ tránh được các khoản phí không cần thiết đối với tài khoản AWS của mình
Để xóa vai trò thực thi
Mở trang Vai trò của bảng điều khiển IAM
Chọn vai trò thực thi mà bạn đã tạo
Chọn Xóa vai trò
Chọn Có, xóa
Để xóa hàm Lambda
Mở trang Chức năng của bảng điều khiển Lambda
Chọn chức năng mà bạn đã tạo
Chọn Hành động, sau đó chọn Xóa
Chọn Xóa
Để xóa hàng đợi Amazon SQS
Đăng nhập vào Bảng điều khiển quản lý AWS và mở bảng điều khiển Amazon SQS tại https. // bảng điều khiển. aws. amazon. com/sqs/