Trong mô-đun này, bạn sẽ sử dụng AWS Lambda và Amazon DynamoDB để xây dựng quy trình backend để xử lý các yêu cầu cho ứng dụng web của bạn. Ứng dụng trình duyệt bạn đã triển khai trong mô-đun đầu tiên cho phép người dùng yêu cầu gửi một con kỳ lân đến địa điểm họ lựa chọn. Để đáp ứng các yêu cầu đó, JavaScript chạy trong trình duyệt sẽ cần phải gọi một dịch vụ chạy trên đám mây.

Serverless_Web_App_LP_assets-04

Bạn sẽ thực hiện một hàm Lambda, hàm này sẽ được gọi mỗi khi người dùng yêu cầu một con kỳ lân. Hàm này sẽ chọn một con kỳ lân từ nhóm, ghi lại yêu cầu trong bảng DynamoDB và sau đó phản hồi ứng dụng front-end với thông tin chi tiết về con kỳ lân đang được gửi đi.

Hàm này được gọi từ trình duyệt bằng Amazon API Gateway. Bạn sẽ thực hiện kết nối đó trong mô-đun tiếp theo. Đối với mô-đun này, bạn sẽ chỉ kiểm thử hàm của mình một cách riêng biệt.

Thời gian hoàn thành mô-đun: 30 phút

Dịch vụ đã sử dụng: AWS Lambda, Amazon DynamoDB


Làm theo hướng dẫn từng bước bên dưới để tạo quy trình backend serverless của bạn. Nhấp vào từng số bước để mở rộng phần.

  • Bước 1. Tạo Bảng Amazon DynamoDB

    Sử dụng bảng điều khiển Amazon DynamoDB để tạo bảng DynamoDB mới. Gọi bảng của bạn là Chuyến đi và cấp cho nó một khóa phân vùng có tên RideId với kiểu Chuỗi. Tên bảng và khóa phân vùng nhạy cảm với trường hợp. Hãy chắc chắn rằng bạn sử dụng ID chính xác được cung cấp. Sử dụng giá trị mặc định cho tất cả các cài đặt khác.

    Sau khi bạn đã tạo bảng, hãy lưu ý ARN để sử dụng trong bước tiếp theo.


    1. Từ Bảng điều khiển quản lý AWS, chọn Dịch vụ, rồi chọn DynamoDB trong Cơ sở dữ liệu.

    2. Chọn Tạo bảng.

    3. Nhập Chuyến đi cho Tên bảng. Trường này phân biệt chữ hoa chữ thường.

    4. Nhập RideId cho Khóa phân vùng và chọn Chuỗi cho loại khóa. Trường này phân biệt chữ hoa chữ thường.

    5. Chọn hộp Sử dụng cài đặt mặc định và chọn Tạo.

    6. Cuộn xuống cuối phần Tổng quan của bảng mới của bạn và lưu ý ARN. Bạn sẽ sử dụng nó trong phần sau.

  • Bước 2. Tạo Vai trò IAM cho Hàm Lambda của bạn

    Mỗi hàm Lambda có một vai trò IAM được liên kết với nó. Vai trò này xác định những dịch vụ AWS khác mà hàm này được phép tương tác. Trong hội thảo này, bạn sẽ cần tạo một vai trò IAM cấp quyền cho hàm Lambda của bạn để ghi nhật ký vào Amazon CloudWatch Logs và truy cập để ghi các mục vào bảng DynamoDB của bạn.

    Sử dụng bảng điều khiển IAM để tạo một vai trò mới. Đặt tên cho vai trò đó là WildRydesLambda và chọn AWS Lambda cho loại vai trò. Bạn sẽ cần đính kèm các chính sách cấp quyền cho hàm của mình để ghi vào Amazon CloudWatch Logs và đặt các mục vào bảng DynamoDB của bạn.

    Đính kèm chính sách được quản lý có tên AWSLambdaBasicExecutionRole với vai trò này để cấp các quyền CloudWatch Logs cần thiết. Ngoài ra, tạo chính sách nội tuyến tùy chỉnh cho vai trò của bạn cho phép thao tác ddb:PutItem cho bảng bạn đã tạo trong phần trước.


    1. Từ Bảng điều khiển quản lý AWS, nhấp vào Dịch vụ và sau đó chọn IAM trong mục Bảo mật, Nhận dạng & Tuân thủ.

    2. Chọn Vai trò trong thanh điều hướng bên trái, sau đó chọn Tạo vai trò mới.

    3. Chọn Lambda cho loại vai trò từ nhóm dịch vụ AWS, sau đó nhấp vào Tiếp theo: Quyền.

      Lưu ý: Việc chọn một loại vai trò sẽ tự động tạo chính sách ủy thác cho vai trò của bạn, chính sách này cho phép các dịch vụ AWS thay mặt bạn đảm nhận vai trò này. Nếu bạn đang tạo vai trò này bằng cách sử dụng CLI, AWS CloudFormation hoặc một cơ chế khác, bạn sẽ chỉ định trực tiếp chính sách ủy thác.

    4. Bắt đầu nhập AWSLambdaBasicExecutionRole vào hộp văn bản Bộ lọc và chọn hộp bên cạnh vai trò đó.

    5. Chọn Next Step (Bước tiếp theo).

    6. Nhập WildRydesLambda cho Tên vai trò.

    7. Chọn Tạo vai trò.

    8. Nhập WildRydesLambda vào hộp bộ lọc trên trang Vai trò và chọn vai trò bạn vừa tạo.

    9. Trên tab Quyền, chọn liên kết Thêm chính sách nội tuyến ở góc dưới bên phải để tạo một chính sách nội tuyến mới.

    10. Chọn Chọn một dịch vụ.

    11. Bắt đầu nhập DynamoDB vào hộp tìm kiếm có nhãn Tìm dịch vụ và chọn DynamoDB khi nó xuất hiện.

    12. Chọn Chọn thao tác.

    13. Bắt đầu nhập PutItem vào hộp tìm kiếm có nhãn Thao tác lọc và chọn hộp bên cạnh PutItem khi nó xuất hiện.

    14. Chọn phần Tài nguyên

    15. Với tùy chọn Cụ thể được chọn, chọn liên kết Thêm ARN trong phần bảng.

    16. Dán ARN của bảng bạn đã tạo trong phần trước trong trường Chỉ định ARN cho bảng và chọn Thêm.

    17. Chọn Chính sách đánh giá.

    18. Nhập DynamoDBWriteAccess cho tên chính sách và chọn Tạo chính sách.

  • Bước 3. Tạo một hàm Lambda để xử lý các yêu cầu

    AWS Lambda sẽ chạy mã của bạn để đáp ứng với các sự kiện như yêu cầu HTTP. Trong bước này, bạn sẽ xây dựng hàm chính, hàm này sẽ xử lý các yêu cầu API từ ứng dụng web để gửi một con kỳ lân. Trong mô-đun tiếp theo, bạn sẽ sử dụng Amazon API Gateway để tạo một API RESTful để hiển thị điểm cuối HTTP mà bạn có thể gọi từ trình duyệt người dùng của bạn. Sau đó, bạn sẽ kết nối hàm Lambda bạn tạo trong bước này với API đó để tạo một backend đầy đủ chức năng cho ứng dụng web của bạn.

    Sử dụng bảng điều khiển AWS Lambda để tạo một hàm Lambda mới có tên RequestUnicorn, hàm này sẽ xử lý các yêu cầu API. Sử dụng phần triển khai mẫu requestUnicorn.js được cung cấp cho mã hàm của bạn. Chỉ cần sao chép và dán từ tệp đó vào trình biên tập của bảng điều khiển AWS Lambda.

    Đảm bảo định cấu hình hàm của bạn để sử dụng vai trò IAM WildRydesLambda bạn đã tạo trong phần trước.


    1. Chọn Dịch vụ sau đó chọn Lambda trong phần Điện toán.

    2. Nhấp vào Tạo hàm.

    3. Giữ thẻ Người tạo từ đầu mặc định được chọn.

    4. Nhập RequestUnicorn vào trường Tên.

    5. Chọn Node.js 6.10 cho Thời gian chạy.

    6. Đảm bảo Chọn một vai trò hiện có được chọn từ danh sách thả xuống Vai trò.

    7. Chọn WildRydesLambda từ danh sách thả xuống Vai trò hiện có.

    8. Nhấp vào Tạo hàm.

    9. Cuộn xuống phần Mã hàm và thay thế mã hiện có trong trình soạn mã index.js bằng nội dung trong requestUnicorn.js.

    10. Nhấp vào "Lưu" ở góc trên bên phải của trang.

  • Bước 4. Kiểm thử Quá trình triển khai của bạn

    Đối với mô-đun này, bạn sẽ kiểm thử hàm bạn đã xây dựng bằng bảng điều khiển AWS Lambda. Trong mô-đun tiếp theo, bạn sẽ thêm một REST API với API Gateway để bạn có thể gọi hàm của mình từ ứng dụng dựa trên trình duyệt bạn đã triển khai trong mô-đun đầu tiên.


    1. Từ màn hình chỉnh sửa chính dành cho hàm của bạn, chọn Đặt cấu hình sự kiện kiểm thử từ danh sách thả xuống Chọn một sự kiện kiểm thử....

    2. Giữ Tạo sự kiện kiểm thử mới đã chọn.

    3. Nhập TestRequestEvent vào trường Tên sự kiện

    4. Sao chép và dán sự kiện kiểm thử sau vào trình biên tập:

    {
        "path": "/ride",
        "httpMethod": "POST",
        "headers": {
            "Accept": "*/*",
            "Authorization": "eyJraWQiOiJLTzRVMWZs",
            "content-type": "application/json; charset=UTF-8"
        },
        "queryStringParameters": null,
        "pathParameters": null,
        "requestContext": {
            "authorizer": {
                "claims": {
                    "cognito:username": "the_username"
                }
            }
        },
        "body": "{\"PickupLocation\":{\"Latitude\":47.6174755835663,\"Longitude\":-122.28837066650185}}"
    }
    1. Nhấp vào Tạo.

    2. Trên màn hình chỉnh sửa hàm chính, nhấp vào Kiểm thử với TestRequestEvent đã chọn trong danh sách thả xuống.

    3. Cuộn lên đầu trang và mở rộng phần Chi tiết của phần Kết quả thực hiện.

    4. Xác minh rằng việc thực hiện đã thành công và kết quả của hàm trông như sau:

    {
        "statusCode": 201,
        "body": "{\"RideId\":\"SvLnijIAtg6inAFUBRT+Fg==\",\"Unicorn\":{\"Name\":\"Rocinante\",\"Color\":\"Yellow\",\"Gender\":\"Female\"},\"Eta\":\"30 seconds\"}",
        "headers": {
            "Access-Control-Allow-Origin": "*"
        }
    }