Ứng dụng AWS Lambda, AWS API Gateway và Nodejs để tạo một simple service.

#17
Topic created · 2 Posts · 31 Views

  • Mưa đã có ô, lạnh đã có áo, ngại cấu hình server đã có AWS Lambda 😆

    Nếu các bạn chưa biết về AWS Lambda thì có thể tìm hiểu tại đây
    , đại khái AWS Lambd là dịch vụ hướng Serverless cho phép người dùng chạy code dưới dạng 1 function. Các bạn hãy click vào cái này
    để biết cách tạo 1 tài khoản dịch vụ của Amazon nếu chư biết nhé 😄

    Trong bài này, tôi sẽ hướng dẫn tạo 1 service đơn giản: Shorten Url sử dụng Nodejs, Bitly, AWS Lambda và AWS API Gateway.

    Tạo 1 Function Lambda như thế nào ??

    Đầu tiên, hãy truy cập vào tài khoản AWS Amazon của mình và chuyển sang liên kết Lambda sẽ được giống như sau:


    Chọn vào Create function để tạo 1 Lambda function mới:


    Các bạn nên chọn Author from scratch để tạo 1 function rỗng rồi thiết lập các thông số như trên, trong đó Name là tên Lambda function, Runtime là môi trường chạy code của bạn, tức là Nodejs, Role là vai trò tạo khởi tạo hàm, cái này có tùy chọn có sẵn nếu bạn đã có tạo Role cho AWS Lambda, Policy templates là tùy chọn sử dụng thêm các AWS mà Amazon cung cấp, ở đây tôi sử dụng API Gateway.

    Rồi, nhấn vào Create function sẽ vào quản lý function vừa tạo. Lambda cung cấp sẵn cho chúng ta 1 đoạn code(vô dụng) như sau:


    Đại loại Lambda function cho phép truyền vào 3 tham số: event, contex, callback. Ta chỉ cần quan tâm đến 2 tham số là eventcallback. event là tham số nhận dữ liệu đầu vào (INPUT) dạng json để function của chúng ta xử lý, callback là hàm callback trả về success hay error cho các trigger mà ta gọi đến trong phần Policy templates ở trên, tức là AWS API Gateway để có thể sử dụng được Lambda function bởi giao thức Https.

    Ta có thể viết code inline trên giao diện như hình, nó hỗ trợ code cũng khá tốt

    Upload code từ file .zip

    Ngoài việc code inline như trên, AWS Lambda cho phép chúng ta upload code được nén dưới dạng _.zip._ddfs Do đó, ta có thể tùy chỉnh, thêm module, trình bày code sao cho clean nhất, bla bla bla, rồi nén lại thành zip, up lên là chạy ngon 😆

    Dưới đây là 1 ví dụ code Shorten Url mà tôi viết


    Why so ez? Giờ hãy nén toàn bộ lại cả node_modules để được file shorten_url.zip như trên, rồi hãy upload lên Lambda thôi!




    Nhớ chọn Save để lưu lại code vừa up.

    Test Lambda function

    Sau khi save lại, ta tiến hành kiểm tra function vừa viết. Lambda hỗ trợ việc test function bằng việc gửi đến 1 event dạng json. Bắt đầu tạo test nào:



    Chọn Select a test event.. -> Configure test events

    Sau đó nó sẽ hiện ra 1 popup cho chúng ta tạo test:



    Event Test

    Vì function của chúng ta nhận lấy ra event.url nên ta sẽ viết test như sau. Nhớ đặt tên cho event nhé:



    Event test

    Sau đó Save lại và nhấn chọn Test, nó sẽ trả về kết quả là link đã rút gọn nhờ bitly:



    Link đã được rút gọn

    Thế là xong Lambda function rồi 😆.

    Tạo API endpoint cho Lambda function

    Chúng ta sẽ sử dụng AWS API Gateway để tạo endpoint cho function vừa tạo. API Gatewat có nhiệm vụ tạo kết nối giữa client và server mà cụ thể là function Shorten link mà ta vừa tạo, nó giúp quản lý dễ dàng lưu lượng request đến và có thể tự nâng cấp nếu lượng request đủ nhiều.

    Đầu tiên chúng ta vào trang API Gateway ở trang chủ của AWS


    Và đây là trang API Gateway mà ta nhận được:


    Chọn Create API và tiến hành set name cho nó :


    Add resource:


    Add methods cho resource :


    Chọn Create Method để thêm phương thức request, ở đây ta chọn post để client gửi url cho function qua event, sau đó nhấn dấu tích màu xanh ta được như sau:


    Hãy nhập tên function của bạn vào và nhấn save. Vậy là đã dẫn được API endpoint đến function của chúng ta. Bây giờ hãy deploy API này lên là ta có thể dùng được rồi 😄

    Trong bảng Action chọn Deploy API , chọn New stage rồi nhập tên stage bất kì trong ô Stage name rồi nhấn Deploy:


    Sau đó bạn sẽ nhận được 1 trang quản lý api của mình, hãy tìm đến dòng Invoke URL để nhận được endpoint api nhé:


    Thế là xong rồi.. hãy truy cập vào link đến path mình vừa tạo và thưởng thức thôi 😄

Log in to reply