Làm việc với Amazon API Gateway
Hàm AWS Lambda có thể được gọi trên HTTPSurl. Nó có thể được thực hiện trên GET, POST, PUT. Khi url HTTPS được gọi, hàm AWS Lambda cũng có thể được kích hoạt và dữ liệu được chuyển đến HTTPS bằng cách sử dụngget/post có thể được tạo sẵn bên trong AWS Lambda để được sử dụng để chèn vào DynamoDB hoặc để gửi thư, v.v.
Chương này thảo luận chi tiết về các quy trình khác nhau liên quan đến hoạt động với AWS lambda và API Gateway.
Các quy trình liên quan
Sau đây là các quy trình liên quan đến việc làm việc với AWS lambda và API Gateway:
- Tạo vai trò IAM để được cấp quyền
- Tạo hàm lambda AWS
- Tạo cổng API
- Liên kết hàm lambda với cổng api
- Truyền dữ liệu đến cổng api
Sơ đồ cơ bản giải thích hoạt động của cổng API và AWS Lambda được đưa ra ở đây:
Các quy trình này được giải thích chi tiết hơn trong chương này với ảnh chụp màn hình có liên quan.
Tạo vai trò IAM để được cấp quyền
Từ các dịch vụ của Amazon như được hiển thị bên dưới, chọn IAM để tạo các vai trò được sử dụng bởi hàm Lambda.
Đi tới IAM và chọn Roles từ phần bên trái như hình dưới đây -
Nhấp chuột Create role cho hàm Lambda.
Chọn Lambda và nhấp vào Permissionsở dưới cùng. Chọn quyền cần thiết cho API Gateway và Lambda.
Tìm kiếm cổng API trong tìm kiếm và nó sẽ liệt kê cho bạn tất cả các quyền liên quan. Ở đây chúng tôi đã chọn toàn quyền truy cập vào cổng API như hình dưới đây -
Bây giờ, hãy tìm kiếm cổng API và nó sẽ liệt kê cho bạn tất cả các quyền liên quan. Ở đây chúng tôi đã chọn toàn quyền truy cập vào cổng API như hình dưới đây -
Bạn cũng phải lặp lại quy trình tương tự đối với Chính sách.
Sau khi bạn chọn xong các chính sách cần thiết, hãy nhấp vào Reviewcho bước tiếp theo. Nhập tên của vai trò theo lựa chọn của bạn như hình dưới đây -
Nó hiển thị các chính sách kèm theo vai trò. Nhấp chuộtCreate role và chúng ta đã hoàn thành việc tạo vai trò và có thể tiếp tục với hàm lambda.
Tạo hàm AWS Lambda
Đi tới các dịch vụ AWS và nhấp vào dịch vụ lambda để tạo một chức năng để kết nối nó với cổng api.
Màn hình giao diện người dùng cho chức năng Lambda được hiển thị bên dưới. Nhấp chuộtCreate function để tiến hành tạo hàm Lambda.
Nhập tên của chức năng và chọn vai trò hiện có mà chúng ta đã tạo ở trên.
Nó nhấp nháy một thông báo rằng chức năng với tên lambdawithapigateway được tạo thành công.
Lưu ý rằng ở đây chúng tôi sẽ sử dụng nodejsthời gian chạy để viết mã. Mã AWS vớihelloworld thông báo như hình dưới đây -
Mã AWS Lambda có trong index.jstập tin. Hàm được gọi là trình xử lý có các tham số cụ thể làevents, context và callback.
Về cơ bản chức năng gọi lại có lỗi và thông báo thành công. Lưu ý rằng ở đây chúng tôi không có bất kỳ mã nào liên quan đến lỗi, vì vậy null được chuyển và thông báo thành công làHelloWorld from lambda.
Cuối cùng, lưu các thay đổi đã thêm và để chúng tôi tiến hành thêm hàm Lambda vào cổng API.
Tạo cổng API
Đăng nhập vào tài khoản AWS của bạn và mở API Gateway như hình dưới đây -
Nhấp vào API Gateway và nó sẽ dẫn bạn đến màn hình nơi có thể tạo cổng API mới.
Nhấp chuột Create API và thêm chi tiết như hình dưới đây -
Nhấn vào Create APIở bên phải màn hình. Thao tác này sẽ hiển thị API mới được tạo ở bên trái màn hình.
Nhấn vào Actions thả xuống để tạo tài nguyên mới cho API.
Bây giờ, hãy tạo một tài nguyên mới như hình dưới đây -
Nhập Resource Namenhư hình bên dưới. Bạn sẽ thấy tên của tài nguyên được nhập trong url được tạo ở cuối. Nhấp chuộtCreate Resource và bạn sẽ thấy nó trên màn hình như sau:
Thêm vào GET/POSTphương thức tới tài nguyên được tạo như hình dưới đây. Chọn phương pháp từActions thả xuống.
Nhấn vào GET để thêm phương thức vào API.
Bước tiếp theo là tích hợp sẽ tích hợp nó với chức năng Lambda. Bây giờ thêm hàm Lambda vào nó như hình dưới đây:
Liên kết hàm Lambda với API Gateway
Chọn hàm lambda đã tạo trước đó.
Lưu các thay đổi và bạn có thể thấy hộp thoại yêu cầu quyền như hình dưới đây -
Nhấp chuột OKcho sự cho phép. Đây là chi tiết thực thi giữa yêu cầu HTTP cổng API và hàm Lambda -
Bây giờ, hãy để chúng tôi triển khai các thay đổi cổng API. Với mục đích này, chúng ta cần chọnDeploy API từ Actions thả xuống như hình dưới đây -
Lựa chọn Deploy API. Nó sẽ yêu cầu trạng thái triển khai. Lựa chọnNew Stage từ trình đơn thả xuống Giai đoạn triển khai và thêm nghệ danh là Production.
Nhấp chuột Deploy và nó sẽ chuyển hướng bạn đến url như hình dưới đây -
Chọn GETtừ phía bên trái để lấy url. Mở url trong tab mới để xem thông báo từ hàm Lambda.
Đây là một ví dụ cơ bản về cách làm việc với AWS Lambda và AWS API Gateway. Trong ví dụ trên, chúng ta đã mã hóa thông báo trong hàm Lambda.
Bây giờ, chúng ta hãy lấy thông tin chi tiết từ API Gateway. Trong trường hợp nếu lệnh gọi HTTPS phải được gọi từ một miền khác, ví dụ: lệnh gọi AJAX tới API, chúng tôi cần bật CORS cho cổng API đã tạo.
Chọn Nguồn lại được tạo cho API và nhấp vào Actions thả xuống -
Hiện nay, Enable CORS sẽ mở ra màn hình sau -
Bạn có thể sử dụng một số phương pháp để BẬT CORS. Access-Control-Allow-Origin được đánh dấu là * có nghĩa là nó sẽ cho phép lấy nội dung từ cổng API từ bất kỳ miền nào.
Bạn cũng có thể chỉ định tên miền bạn muốn làm việc với API. Nhấp chuộtEnable CORS and replace existing CORS headers và nó sẽ hiển thị thông báo xác nhận như hình dưới đây -
Nhấp chuột Yes, replace existing valuesđể kích hoạt nó. CácEnable CORS màn hình trông như hình dưới đây -
Truyền dữ liệu đến API Gateway
Mở API được tạo trong API Gateway displayhelloworld như hình dưới đây -
Nhấp chuột Integration Request để gửi dữ liệu như hình dưới đây -
Chọn Body Mapping Templates và thêm Content-Type ví dụ này là application/json. Nhấp vào loại nội dung đã thêm, thêm các chi tiết như sau:
Bây giờ, hãy thêm mẫu ở định dạng JSON như hình dưới đây -
Quan sát rằng chúng tôi đã lấy thông báo làm tham số để lấy dữ liệu từ API Gateway và chia sẻ nó với AWS Lambda. Cú pháp lấy thông tin chi tiết như hình trên.
Bây giờ, hãy triển khai API để thực hiện các thay đổi có sẵn trên URL API Gateway. Đối với điều này, chúng ta cần thay đổi hàm Lambda để hiển thị dữ liệu dựa trên URL API Gateway. Mã cho hàm Lambda là givn bên dưới. Lưu ý rằng chúng tôi đang lấy thông báo từ sự kiện và chuyển đến cuộc gọi lại.
exports.handler = (event, context, callback) => {
let message = event.message;
callback(null, message);
};
Bây giờ, hãy lưu các thay đổi trong Lambda và nhấn vào URL để xem các thay đổi. Quan sát ảnh chụp màn hình dưới đây -
Nhấp vào URL như hình dưới đây -
https://rw2ek1xung.execute-api.us-east-
1.amazonaws.com/prod/hello?message=hello%20from%20api%20gateway
Hãy quan sát rằng ở đây chúng ta đang chuyển thông báo dưới dạng chuỗi truy vấn tới url GET. Sau đó, bạn có thể quan sát đầu ra như hình dưới đây:
Nó đọc các chi tiết được gửi đến tin nhắn từ URL và hiển thị tương tự trong trình duyệt.