Thursday, November 21, 2024

[AWS] API Gateway

-

Example: Building a Serverless API

Dưới đây là một kiến trúc phổ biến để xây dựng các ứng dụng web dựa trên AWS.

Giả sử rằng bạn muốn tạo một ứng dụng web để quản lý danh sách sản phẩm. Để thực hiện điều này, bạn có thể sử dụng kiến trúc này như sau:

  • Client: Người dùng sử dụng trình duyệt web hoặc ứng dụng di động để gửi yêu cầu đến REST API của bạn.
  • REST API: REST API là một giao thức để truyền tải các yêu cầu từ client đến API Gateway và xử lý các yêu cầu đó.
  • API Gateway: API Gateway là một dịch vụ của AWS, cho phép bạn tạo và quản lý các API. Nó cho phép bạn chuyển tiếp các yêu cầu từ client đến Lambda.
  • PROXY REQUESTS: Các yêu cầu của khách hàng được chuyển tiếp (proxy) từ API Gateway đến Lambda để xử lý.
  • Lambda: AWS Lambda là dịch vụ tính toán đám mây, cho phép bạn chạy mã một cách tự động và linh hoạt mà không cần phải quản lý máy chủ. Bạn có thể sử dụng Lambda để thực hiện các chức năng để xử lý yêu cầu API của khách hàng.
  • CRUD: Lambda sẽ xử lý các yêu cầu của khách hàng để thực hiện các hoạt động CRUD (Create, Read, Update, Delete) đối với DynamoDB.
  • DynamoDB: DynamoDB là một dịch vụ cơ sở dữ liệu NoSQL được cung cấp bởi AWS. Nó cho phép bạn lưu trữ và truy xuất các dữ liệu một cách dễ dàng và có thể mở rộng được.

Khi khách hàng gửi yêu cầu đến API của bạn, yêu cầu đó được chuyển tiếp đến API Gateway và được xử lý bởi Lambda để thực hiện các hoạt động CRUD đối với DynamoDB. Kết quả của yêu cầu được trả về cho khách hàng qua API Gateway và REST API.

Với kiến trúc này, bạn có thể xây dựng các ứng dụng web một cách nhanh chóng và hiệu quả, mà không cần phải quản lý cơ sở hạ tầng vật lý.

AWS API Gateway

AWS Lambda và API Gateway là các dịch vụ của Amazon Web Services (AWS) được sử dụng để phát triển và triển khai các ứng dụng web hoàn toàn trên đám mây, mà không cần quản lý cơ sở hạ tầng vật lý.

Sử dụng AWS Lambda cho phép bạn viết các chức năng (function) và chạy chúng trên đám mây, mà không cần quản lý máy chủ. Còn API Gateway cho phép bạn xây dựng và quản lý các API cho ứng dụng của bạn.

Các tính năng mà AWS Lambda và API Gateway cung cấp cho phép bạn xử lý các yêu cầu (request) và phản hồi (response) của các API dễ dàng hơn. Ví dụ, bạn có thể xử lý các yêu cầu đến API của mình bằng cách sử dụng giao thức WebSocket, điều này cho phép bạn thiết lập kết nối hai chiều (two-way connection) giữa trình duyệt và máy chủ của mình.

Bạn có thể quản lý các phiên bản API của mình bằng cách định nghĩa các phiên bản khác nhau (v1, v2…) và triển khai chúng trên các môi trường khác nhau (dev, test, prod). Bạn cũng có thể quản lý bảo mật cho API của mình bằng cách xác thực và ủy quyền (authentication and authorization), tạo các khóa API và giới hạn tốc độ yêu cầu (request throttling).

Ngoài ra, bạn có thể sử dụng các công cụ như Swagger / OpenAPI để định nghĩa API của mình một cách nhanh chóng và dễ dàng, và kiểm tra và xác thực các yêu cầu và phản hồi bằng cách sử dụng các quy tắc chuyển đổi và xác thực.

Cuối cùng, bạn có thể lưu trữ các phản hồi của API của mình trong bộ nhớ cache để giảm thiểu độ trễ và tăng tốc độ phản hồi của API của mình.

Tóm lại, AWS Lambda và API Gateway cung cấp một loạt các tính năng để xây dựng và quản lý các API của bạn trên đám mây một cách dễ dàng và tiện lợi, từ xác thực và ủy quyền cho đến quản lý phiên bản API và lưu trữ cache.

API Gateway – Integrations High Level

AWS API Gateway cung cấp các tính năng khác nhau để cho phép bạn liên kết các nguồn dữ liệu khác nhau với REST API của mình và quản lý chúng một cách dễ dàng.

Lambda Function: Bạn có thể sử dụng Lambda Function để thực thi mã khi nhận được yêu cầu từ API Gateway. Bạn có thể viết mã của mình bằng một số ngôn ngữ khác nhau, ví dụ như Node.js, Python, Java, và C#. Lambda Function cho phép bạn xử lý các yêu cầu đến API của mình một cách nhanh chóng và hiệu quả hơn, mà không cần phải quản lý cơ sở hạ tầng vật lý.

HTTP: Bạn có thể sử dụng HTTP để kết nối đến các nguồn dữ liệu khác nhau, ví dụ như internal HTTP API on premise, Application Load Balancer. Bạn có thể sử dụng API Gateway để bổ sung các tính năng như rate limiting, caching, user authentications, API keys, và nhiều tính năng khác để quản lý các yêu cầu đến HTTP backend của mình.

AWS Service: Bạn có thể sử dụng API Gateway để kết nối đến các dịch vụ khác trong AWS, chẳng hạn như Step Function và SQS. Bạn có thể sử dụng API Gateway để quản lý việc truy cập vào các dịch vụ này, bao gồm cả xác thực người dùng, giới hạn tốc độ, và các tính năng khác. Điều này cho phép bạn triển khai các ứng dụng của mình một cách nhanh chóng và hiệu quả hơn, vì bạn có thể quản lý các yêu cầu đến các dịch vụ khác trong AWS một cách dễ dàng thông qua API Gateway.

API Gateway – AWS Service Integration Kinesis Data Streams example

Mô hình này bao gồm các thành phần sau:

  • Client: đại diện cho người dùng cuối hoặc ứng dụng gửi yêu cầu đến API Gateway.
  • API Gateway: là một dịch vụ quản lý API trên AWS. Nó cho phép bạn xây dựng, triển khai và quản lý các RESTful API. API Gateway sẽ nhận các yêu cầu từ Client và chuyển tiếp chúng đến Kinesis Data Streams.
  • Kinesis Data Streams: là một dịch vụ lưu trữ luồng dữ liệu real-time. Nó cho phép bạn ghi và đọc các record trực tiếp từ các ứng dụng của mình hoặc từ các nguồn dữ liệu khác. Khi nhận được các record từ API Gateway, Kinesis Data Streams sẽ lưu trữ chúng tạm thời.
  • Kinesis Data Firehose: là một dịch vụ chuyển dữ liệu trực tiếp từ Kinesis Data Streams đến các dịch vụ khác. Nó cho phép bạn xử lý các dữ liệu trước khi lưu trữ hoặc chuyển tiếp chúng đến các dịch vụ khác. Trong mô hình này, Kinesis Data Firehose sẽ nhận các records từ Kinesis Data Streams và ghi chúng vào các file JSON.
  • Amazon S3: là một dịch vụ lưu trữ đám mây của AWS. Nó cho phép bạn lưu trữ và truy cập các đối tượng, chẳng hạn như file, từ bất kỳ nơi nào trên Internet. Trong mô hình này, các file JSON sẽ được lưu trữ trong Amazon S3 để xử lý hoặc phân tích dữ liệu.

Do đó, quy trình hoạt động của mô hình này như sau: khi Client gửi các yêu cầu đến API Gateway, API Gateway sẽ chuyển tiếp chúng đến Kinesis Data Streams. Khi nhận được các record từ API Gateway, Kinesis Data Streams sẽ lưu trữ chúng tạm thời và chuyển tiếp chúng đến Kinesis Data Firehose. Kinesis Data Firehose sẽ tiếp tục xử lý các record và ghi chúng vào các file JSON, trước khi lưu trữ chúng trong Amazon S3 để phân tích hoặc xử lý dữ liệu.

API Gateway – Endpoint Types

Các loại chế độ truy cập API Gateway:

  1. Edge-Optimized (mặc định): Dành cho khách hàng toàn cầu
  • Yêu cầu được định tuyến thông qua các vị trí Edge của CloudFront (tăng tốc độ phản hồi)
  • API Gateway vẫn chỉ sống ở một khu vực duy nhất.
  1. Regional:
  • Dành cho khách hàng trong cùng khu vực
  • Có thể kết hợp thủ công với CloudFront (có nhiều kiểm soát hơn về chiến lược caching và phân phối)
  1. Private:
  • Chỉ có thể truy cập từ VPC của bạn bằng cách sử dụng điểm cuối VPC giao diện (ENI)
  • Sử dụng chính sách tài nguyên để xác định quyền truy cập.

API Gateway – Security

Trong việc phát triển ứng dụng trên nền tảng AWS, việc xác thực người dùng là rất quan trọng để bảo mật ứng dụng và dữ liệu của người dùng. AWS cung cấp nhiều phương thức xác thực khác nhau như IAM Roles, Cognito và Custom Authorizer.

IAM Roles là phương thức xác thực sử dụng cho ứng dụng nội bộ, chỉ cho phép người dùng trong tổ chức của bạn truy cập vào tài nguyên của ứng dụng, và không phù hợp với ứng dụng dành cho người dùng bên ngoài.

Cognito là phương thức xác thực sử dụng cho người dùng bên ngoài, chẳng hạn như người dùng truy cập ứng dụng từ thiết bị di động. Cognito cung cấp các tính năng bảo mật như quản lý đăng nhập và phân quyền người dùng.

Custom Authorizer là phương thức xác thực tự định nghĩa dựa trên logic của bạn. Nó cho phép bạn quản lý quyền truy cập vào tài nguyên của ứng dụng dựa trên thông tin xác thực do bạn định nghĩa.

Ngoài ra, AWS cũng cung cấp tính năng HTTPS security thông qua AWS Certificate Manager (ACM) để bảo mật kết nối giữa người dùng và ứng dụng. Nếu bạn sử dụng endpoint Edge-Optimized, chứng chỉ SSL phải được lưu trữ tại khu vực us-east-1. Nếu sử dụng endpoint Regional, chứng chỉ SSL phải được lưu trữ tại khu vực API Gateway.

Để sử dụng tên miền tùy chỉnh và HTTPS, bạn cần thiết lập một bản ghi CNAME hoặc A-alias trong Route 53 để định tuyến yêu cầu đến đúng API Gateway endpoint. Bằng cách làm như vậy, bạn sẽ có thể đảm bảo rằng các yêu cầu được gửi đến API Gateway sẽ được bảo mật và xác thực chính xác.

AWS Step Functions

Serverless visual workflows, hay còn gọi là AWS Step Functions, cho phép các nhà phát triển phối hợp và điều phối nhiều dịch vụ AWS, bao gồm các hàm AWS Lambda, thành một quy trình làm việc mượt mà và dễ hiểu. Quy trình này được tạo ra bằng cách sử dụng các trình tạo lưu đồ trực quan, cho phép bạn thiết kế các luồng công việc có các tính năng như tuần tự, song song, điều kiện, thời gian chờ, xử lý lỗi, vv.

AWS Step Functions còn cho phép tích hợp với các dịch vụ khác của AWS như EC2, ECS, các máy chủ nội bộ, API Gateway, hàng đợi SQS và nhiều dịch vụ khác. Bên cạnh đó, AWS Step Functions còn có khả năng triển khai tính năng phê duyệt từ con người.

Các ứng dụng của AWS Step Functions rất đa dạng, từ việc thực hiện đầy đủ các đơn đặt hàng, xử lý dữ liệu, xây dựng các ứng dụng web, cho đến bất kỳ quy trình nào trong doanh nghiệp.

API Gateway Basics Hands-On

Bây giờ chúng ta hãy tìm hiểu các loại API đã nhé:

HTTP API

HTTP API là một dịch vụ của Amazon Web Services (AWS) giúp người dùng tạo ra các REST API một cách dễ dàng, nhanh chóng và hiệu quả về chi phí. API này có tính năng tích hợp sẵn như OIDC và OAuth2, và hỗ trợ CORS (Cross-Origin Resource Sharing) tự động.

HTTP API của AWS là một lựa chọn tốt cho những người muốn xây dựng các REST API với chi phí và độ trễ thấp. Nó hoạt động tốt với các nền tảng như Lambda và các backend HTTP khác.

OIDC (OpenID Connect) và OAuth2 là các chuẩn xác thực được sử dụng rộng rãi trong các ứng dụng web hiện đại. Tích hợp sẵn chúng trong HTTP API giúp người dùng dễ dàng xác thực và ủy quyền truy cập cho người dùng của họ.

CORS là một chính sách bảo mật trong các ứng dụng web để giới hạn truy cập từ các nguồn khác nhau. HTTP API hỗ trợ CORS tự động, giúp cho người dùng không cần phải tạo các bộ lọc CORS thủ công.

Với HTTP API của AWS, người dùng có thể xây dựng các REST API nhanh chóng và đáp ứng nhu cầu về hiệu suất, độ trễ và chi phí của họ.

WebSocket API

WebSocket API là một dịch vụ của Amazon Web Services (AWS) cho phép người dùng xây dựng các ứng dụng thời gian thực như ứng dụng trò chuyện hoặc bảng điều khiển. Nó sử dụng các kết nối liên tục để duy trì kết nối thời gian thực giữa máy khách và máy chủ.

WebSocket API của AWS hoạt động tốt với các nền tảng như Lambda, HTTP và các dịch vụ khác của AWS. Ví dụ, người dùng có thể sử dụng WebSocket API để tạo các kết nối thời gian thực giữa ứng dụng của họ và Lambda, giúp ứng dụng có thể truy cập và cập nhật dữ liệu một cách nhanh chóng và hiệu quả.

Sử dụng WebSocket API cũng giúp cho người dùng không cần phải tạo các kết nối HTTP mới cho mỗi yêu cầu, giảm thiểu độ trễ và tăng tốc độ truyền dữ liệu.

Ngoài ra, WebSocket API của AWS cũng hỗ trợ tích hợp với các dịch vụ khác của AWS như Amazon S3, Amazon DynamoDB và Amazon Kinesis, giúp người dùng dễ dàng lưu trữ và xử lý dữ liệu trong ứng dụng thời gian thực của họ.

Tóm lại, WebSocket API của AWS là một công cụ mạnh mẽ giúp người dùng xây dựng các ứng dụng thời gian thực như trò chuyện hoặc bảng điều khiển một cách hiệu quả và đáp ứng được nhu cầu về độ trễ và tốc độ của người dùng.

REST API

REST API (Representational State Transfer Application Programming Interface) là một kiểu API cho phép người dùng truy cập và quản lý tài nguyên trên các máy chủ web. REST API được thiết kế để làm việc với nhiều nền tảng khác nhau và cho phép người dùng kiểm soát hoàn toàn yêu cầu và phản hồi.

AWS cung cấp dịch vụ REST API để người dùng có thể tạo các RESTful API một cách dễ dàng và có khả năng quản lý API. REST API của AWS hoạt động tốt với các nền tảng như Lambda, HTTP và các dịch vụ khác của AWS.

REST API của AWS cung cấp các tính năng quản lý API như quản lý phiên bản API, giới hạn tốc độ truy cập API, xác thực và ủy quyền người dùng và các tính năng giám sát và ghi nhật ký API.

Ngoài ra, người dùng có thể kiểm soát hoàn toàn yêu cầu và phản hồi của API bằng cách sử dụng các hàm xử lý yêu cầu và phản hồi, cho phép họ tùy chỉnh API để đáp ứng nhu cầu của mình.

REST API của AWS cũng hỗ trợ tích hợp với các dịch vụ khác của AWS như Amazon S3, Amazon DynamoDB và Amazon Kinesis, giúp người dùng dễ dàng lưu trữ và xử lý dữ liệu trong ứng dụng của họ.

Tóm lại, REST API của AWS là một công cụ mạnh mẽ cho phép người dùng tạo ra các RESTful API, kiểm soát yêu cầu và phản hồi và quản lý API một cách hiệu quả.

REST API Private

REST API Private là một kiểu API được thiết kế để chỉ có thể truy cập từ bên trong một Virtual Private Cloud (VPC). REST API Private được sử dụng để bảo mật dữ liệu và giảm thiểu các rủi ro an ninh khi truy cập từ các mạng bên ngoài.

AWS cung cấp dịch vụ API Gateway để người dùng có thể tạo ra REST API Private trong một VPC của mình. REST API Private của AWS hoạt động với các nền tảng như Lambda, HTTP và các dịch vụ khác của AWS.

REST API Private của AWS cho phép người dùng thiết lập các bảo mật khác nhau để bảo vệ API của họ. Các tùy chọn bảo mật bao gồm sử dụng các khóa API, cấu hình mật khẩu xác thực, ủy quyền, sử dụng chứng chỉ SSL/TLS và cấu hình tường lửa. Ngoài ra, REST API Private của AWS cũng hỗ trợ tính năng giám sát và ghi nhật ký API để giúp người dùng giám sát và phát hiện các hoạt động bất thường.

REST API Private của AWS cũng hỗ trợ tích hợp với các dịch vụ khác của AWS như Amazon S3, Amazon DynamoDB và Amazon Kinesis, giúp người dùng dễ dàng lưu trữ và xử lý dữ liệu trong ứng dụng của họ.

Tóm lại, REST API Private của AWS là một công cụ mạnh mẽ cho phép người dùng tạo ra các RESTful API chỉ có thể truy cập từ bên trong một VPC. Các tùy chọn bảo mật và tính năng giám sát và ghi nhật ký API giúp người dùng bảo vệ API của họ và giám sát hoạt động của nó.

Bây giờ mình sẽ sử dụng phương thức REST API để demo cho bài này, hãy bấm vào Build.

Nó sẽ hiện lên 1 bảng thông báo chào mừng với nội dung như dưới, bạn bấm OK để tiếp tục.

Chọn Protocol là REST và mình tạo API bằng cách tạo 1 API mới, đặt tên cho API là MyFirstAPI, phần Endpoint Type mình chọn là Regional.

Mình sẽ giải thích qua về các thành phần Endpoint Type như sau:

Endpoint Type là các kiểu kết nối đến API Gateway của AWS. Các loại Endpoint Type của API Gateway bao gồm: Regional Endpoint, Edge-Optimized Endpoint và Private Endpoint. Dưới đây là giải thích về các loại Endpoint Type này:

  • Regional Endpoint: Đây là kiểu kết nối đến API Gateway của AWS thông qua một khu vực cụ thể. Regional Endpoint được sử dụng để truy cập vào các tài nguyên API Gateway trong khu vực đó, bao gồm các kết nối đến các tài nguyên AWS khác như EC2, Lambda, DynamoDB và S3. Regional Endpoint được sử dụng trong trường hợp không có yêu cầu đặc biệt về tốc độ truy cập hoặc mức độ bảo mật.
  • Edge-Optimized Endpoint: Đây là kiểu kết nối đến API Gateway của AWS thông qua các điểm cuối toàn cầu được phân tán trên các cụm máy chủ của AWS CloudFront. Edge-Optimized Endpoint được sử dụng để tối ưu hóa tốc độ truy cập API của người dùng từ các khu vực khác nhau trên thế giới. Các điểm cuối Edge-Optimized Endpoint được tích hợp sẵn với các tính năng bảo mật như cơ chế kiểm soát truy cập, kiểm soát nhất quán và giám sát hoạt động của API.
  • Private Endpoint: Đây là kiểu kết nối đến API Gateway của AWS được sử dụng để cung cấp truy cập vào API từ bên trong một mạng riêng ảo (VPC) của khách hàng. Private Endpoint giúp bảo vệ API khỏi các cuộc tấn công mạng bên ngoài và tối ưu hóa tốc độ truy cập API cho các ứng dụng nội bộ của khách hàng. Private Endpoint được sử dụng trong các trường hợp khi khách hàng cần bảo mật cao và không muốn truy cập API từ bên ngoài Internet.

Bây giờ mình sẽ chọn 1 Actions › Create Method

Chọn 1 phương thức, ở đây mìn chọn phương thức GET.

Bấm vào tích (v) để xác nhận.

Mình lựa chọn Integration type là Lambda Function.

Vào Lambda › Functions › Create function để tạo 1 Function nhé. Đặt tên cho Function này là lambda-api-gateway-proxy-root-get và lựa chọn ngôn ngữ Python 3.8. Bấm Create function.

Chúng ta sẽ sử dụng đoạn code dưới.

Đưa đoạn code vào Function code và bấm Save › Test.

Đặt Event name là test rồi bấm Create.

Thông báo “Successfully updated the function lambda-api-gateway-proxy-root-get” cho biết bạn đã tạo Function thành công.

Dán tên Function đã tạo “lambda-api-gateway-proxy-root-get” vào phần Lambda Function. Tích vào tùy chọn “Use Lambda Proxy Integration” trong Amazon API Gateway cho phép kết nối trực tiếp giữa API Gateway và AWS Lambda function. Thay vì sử dụng một cách tiếp cận trung gian (intermediate integration), nó cho phép Lambda function xử lý toàn bộ request từ API Gateway và trả về response.

Khi sử dụng tùy chọn này, Lambda function sẽ nhận toàn bộ request từ API Gateway và trả về response cho API Gateway. Việc này giúp giảm độ trễ (latency) do loại bỏ bước trung gian giữa API Gateway và Lambda function, giúp tăng hiệu suất xử lý của hệ thống.

Ngoài ra, khi sử dụng “Use Lambda Proxy Integration”, người dùng cũng có thể dễ dàng truy cập thông tin về request và response bằng cách sử dụng đối tượng “event” và “context” trong mã Lambda function.

Tuy nhiên, khi sử dụng tùy chọn này, người dùng cần đảm bảo rằng mã Lambda function có thể xử lý toàn bộ request và trả về response đúng định dạng cần thiết để API Gateway có thể đọc và xử lý.

Thông báo “You are about to give API Gateway permission to invoke your Lambda function: arn:aws:lambda:eu-west-2:387124123361:function:lambda-api-gateway-proxy-root-get” có tác dụng thông báo cho bạn rằng bạn đang chuẩn bị cấp quyền cho Amazon API Gateway để gọi (invoke) Lambda function của bạn với ARN (Amazon Resource Name) cụ thể trong thông báo.

Khi bạn triển khai một REST API trên Amazon API Gateway và sử dụng tính năng “Use Lambda Proxy Integration”, API Gateway sẽ gọi Lambda function của bạn khi nhận được các request từ client. Tuy nhiên, trước khi cho phép API Gateway gọi Lambda function của bạn, bạn cần phải cấp quyền cho API Gateway để gọi Lambda function đó.

Trong trường hợp này, thông báo thông báo cho bạn biết rằng bạn đang chuẩn bị cấp quyền cho API Gateway để gọi Lambda function có ARN là “arn:aws:lambda:eu-west-2:387124123361:function:lambda-api-gateway-proxy-root-get”. Khi bạn đã cấp quyền này, API Gateway sẽ có thể gọi Lambda function của bạn để xử lý các request được gửi đến API Gateway.

Và đât là kết quả.

Bạn có thể xem lại Resource-based policy tại phần Lambda › Functions › lambda-api-gateway-proxy-root-get › Permissions bạn sẽ thấy Function này đã cho phép Lambda của tôi truy cập vào, tại phần “AWS: SourceArn”: “arn: aws: execute-api: eu-west-2:387124123361: kfz6b0ty9i/*/GET/”

Mô hình hoạt động này mô tả quá trình xử lý request trên Amazon API Gateway và Lambda function, trong đó:

  • Client: Đây là phía client gửi request đến Amazon API Gateway, ví dụ như một ứng dụng di động, trình duyệt web, hay một ứng dụng khác.
  • Method Request (Auth: NONE, ARN:arn:aws:execute-api:eu-west-2:387124123361:kfz6b0ty9i/*/GET/): Đây là bước xác thực request trên Amazon API Gateway. Trong đó, Auth được thiết lập là NONE, nghĩa là không yêu cầu xác thực. ARN (Amazon Resource Name) của API Gateway cũng được cung cấp ở đây.
  • Integration Request (Type: LAMBDA_PROXY): Sau khi xác thực request, Amazon API Gateway sẽ gửi request đến Lambda function bằng cách sử dụng tính năng “Use Lambda Proxy Integration” với Integration Request Type được thiết lập là LAMBDA_PROXY.
  • lambda-api-gateway-proxy-root-get: Đây là tên của Lambda function được gọi để xử lý request.
  • Integration Response (Proxy integrations cannot be configured to transform): Kết quả trả về từ Lambda function sẽ được trả về cho API Gateway. Trong đó, Proxy integrations cannot be configured to transform có nghĩa là response trả về từ Lambda function không được xử lý trên API Gateway.
  • responses: Bước này định nghĩa HTTP status code của response từ Lambda function trả về cho API Gateway.
  • Method Response (HTTP Status: Proxy, Models: application/json=> Empty): Bước này định nghĩa HTTP status code và kiểu dữ liệu của response trả về từ API Gateway cho client. Trong đó, HTTP status được thiết lập là “Proxy”, nghĩa là HTTP status code sẽ được trả về từ Lambda function. Models được thiết lập là application/json và Empty nghĩa là không có mô hình nào được định nghĩa cho response trả về.
  • Client: Cuối cùng, API Gateway sẽ trả về response cho client.

Bây giờ bạn hãy bấm vào TEST.

Bấm vào Test.

Bạn sẽ nhạn được kết quả Hello from Lambdal tại phần Response Body.

Bạn cũng thể thay đổi nội dung Function bằng cách vào lại Lambda › Functions › lambda-api-gateway-proxy-root-get và thay đổi nội dung code bạn muốn rồi bấm vào Save.

Chúng ta cũng có thể xem logs Function bằng cách bấm vào View logs in CloudWatch.

Bấm vào logs bạn muốn xem.

Nội dung chi tiết logs sẽ nằm ở phần Loq events.

Giờ mình sẽ tạo 1 phương thức thứ 2.

Tại Resource Name mình để tên là houses.

Tương tự bạn hãy tạo 1 Function mới, mình sử dụng tên “lambda-api-gateway-proxy-houses-get” và Runtime là Python 3.8.

Mình sử dụng đoạn code như dưới cho Function này.

Tương tự bạn hãy dán tên Function mới “lambda-api-gateway-proxy-houses-get” vào Lambda Function.

Và kết quả khi test tại Response Body bạn nhận được nội dung “Hello from my pretty-houses!

Giờ bạn có thể triển khai API này bằng cách bấm vào Action › Deploy API.

Đặt tên cho nó.

Bạn để ý sau khi bấm Deploy bạn sẽ nhận được Invoke URL: https://kfz6b0ty9i.execute-api.eu-west-2.amazonaws.com/dev.

Hãy copy nó và dán vào trình duyệt bạn sẽ nhận được kết quả.

Giờ mình vẫn sử dụng URL đó nhưng mình thay đổi từ dev sang houses bạn nhận được kết quả.

Ví dụ bạn thử 1 phương thức không được khai báo, bạn sẽ nhận được thông báo.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories