Thông tin chung

Câu hỏi: Amazon API Gateway là gì?

Amazon API Gateway là dịch vụ được quản lý hoàn toàn giúp các nhà phát triển dễ dàng phát hành, duy trì, giám sát và bảo vệ API ở mọi quy mô. Chỉ với vài cú nhấp chuột trên Bảng điều khiển quản lý AWS, bạn có thể tạo một API hoạt động giống như “cửa trước” để các ứng dụng truy cập dữ liệu, logic nghiệp vụ hoặc chức năng từ các dịch vụ phụ trợ, ví dụ như các khối lượng công việc đang chạy trên Amazon Elastic Compute Cloud (Amazon EC2), Amazon Elastic Container Service (Amazon ECS) hoặc AWS Elastic Beanstalk, mã đang chạy trên AWS Lambda hoặc một ứng dụng web bất kỳ. Amazon API Gateway xử lý tất cả các tác vụ liên quan đến tiếp nhận và xử lý lên đến hàng trăm nghìn lệnh gọi API đồng thời, bao gồm quản lý lưu lượng truy cập, cấp phép và kiểm soát truy cập, giám sát và quản lý phiên bản API. Amazon API Gateway không yêu cầu phí tối thiểu hoặc phí ban đầu. Đối với API HTTP và API REST, bạn chỉ phải trả phí cho các lệnh gọi API mà bạn nhận được và lượng dữ liệu truyền đi. Đối với API WebSocket, bạn chỉ thanh toán cho các tin nhắn đã gửi đi và nhận được và trong thời gian người dùng/thiết bị được kết nối với API WebSocket.

Câu hỏi: Tại sao cần sử dụng Amazon API Gateway?

Amazon API Gateway cung cấp cho nhà phát triển dịch vụ đơn giản, linh hoạt có quản lý toàn phần, trả phí theo nhu cầu sử dụng để xử lý tất cả những khía cạnh tạo và vận hành các API mạnh mẽ cho lớp backend cho ứng dụng. Với API Gateway, bạn có thể khởi chạy dịch vụ mới nhanh hơn và cần mức đầu tư thấp hơn do đó bạn có thể tập trung xây dựng các dịch vụ nghiệp vụ cốt lõi của mình. API Gateway được xây dựng để hỗ trợ bạn trong một số khía cạnh của việc tạo và quản lý API:

1) Đo lường. API Gateway giúp bạn định nghĩa kế hoạch để đo lường và giới hạn truy cập của nhà phát triển bên thứ ba đến API của bạn. Bạn có thể định nghĩa một nhóm các kế hoạch, cấu hình hoạt động điều tiết và hạn mức theo khóa API. API Gateway tự động đo lường lưu lượng đến API và cho phép bạn trích xuất dữ liệu sử dụng cho từng khóa API.

2) Bảo mật. API Gateway cung cấp cho bạn nhiều công cụ để cấp quyền truy cập đến API và kiểm soát truy cập hoạt động dịch vụ. API Gateway cho phép bạn sử dụng các công cụ quản trị và bảo mật AWS như AWS Identity and Access Management (IAM) và Amazon Cognito để cấp quyền truy cập đến API của bạn. API Gateway có thể xác thực các lệnh gọi API đã ký thay mặt cho bạn bằng cùng công nghệ mà AWS sử dụng cho các API của mình. Sử dụng công cụ cho phép tùy chỉnh được viết dưới dạng hàm AWS Lambda, API Gateway cũng có thể giúp bạn xác thực mã thông báo bearer đến, loại bỏ các lo ngại về cấp quyền khỏi mã lớp backend của bạn.

3) Khả năng phục hồi. API Gateway giúp bạn quản lý lưu lượng truy cập thông qua việc điều tiết lưu lượng để các thao tác lớp backend có thể đáp ứng được thời điểm lưu lượng truy cập tăng đột biến. API Gateway cũng giúp bạn cải thiện hiệu năng của các API và độ trễ mà người dùng cuối gặp phải bằng cách lưu vào bộ nhớ đệm đầu ra của các lệnh gọi API nhằm tránh lúc nào cũng phải gọi lớp backend.

4) Giám sát hoạt động. Sau khi triển khai và sử dụng API, Amazon API Gateway cung cấp cho bạn bảng thông tin chỉ số để giám sát các lệnh gọi đến dịch vụ. Bảng thông tin API Gateway, bằng việc tích hợp với Amazon CloudWatch, cung cấp cho bạn các chỉ số hiệu suất lớp backend bao gồm lệnh gọi API, dữ liệu độ trễ và tỷ lệ lỗi. Bạn có thể kích hoạt chỉ số chi tiết cho mỗi method trên API của bạn, đồng thời tiếp nhận lỗi, truy cập hoặc gỡ lỗi nhật ký trên CloudWatch Logs.

5) Quản lý vòng đời. Sau khi triển khai API, thông thường bạn cần xây dựng và thử nghiệm phiên bản mới để tăng cường hoặc bổ sung tính năng mới. API Gateway cho phép bạn vận hành đồng thời nhiều phiên bản API và nhiều giai đoạn cho mỗi phiên bản để các ứng dụng hiện tại có thể tiếp tục gọi phiên bản trước đó sau khi phát hành phiên bản API mới.

6) Được thiết kế cho nhà phát triển. API Gateway cho phép bạn nhanh chóng tạo các API và gán nội dung tĩnh cho phản hồi của chúng nhằm giảm bớt công sức phát triển giữa các nhóm và thời gian phát hành ra thị trường cho các ứng dụng của bạn. Những nhóm phụ thuộc vào API của bạn có thể bắt đầu phát triển trong khi bạn xây dựng các quy trình lớp backend của mình.

7) Giao tiếp hai chiều thời gian thực. Xây dựng được các ứng dụng giao tiếp hai chiều thời gian thực như những ứng dụng trò chuyện, bảng điều khiển phát trực tuyến và thông báo mà không phải vận hành hoặc quản lý bất kỳ máy chủ nào. API Gateway duy trì kết nối ổn định giữa người dùng được kết nối và cho phép chuyển tin nhắn giữa những người dùng.

Câu hỏi: Amazon API Gateway hỗ trợ những loại API nào?

Amazon API Gateway cung cấp hai tùy chọn để tạo API RESTful, API HTTP và API REST, cũng như một tùy chọn để tạo API WebSocket.

API HTTP: API HTTP được tối ưu hóa để dựng API proxy đến các chức năng của AWS Lambda hoặc backend HTTP, biến API HTTP thành lựa chọn lý tưởng cho khối lượng công việc serverless. Các API này hiện không cung cấp chức năng quản lý API.

API REST: API REST cung cấp các tính năng quản lý và chức năng proxy API trong một giải pháp duy nhất. API REST cung cấp nhiều tính năng quản lý API như kế hoạch sử dụng, khóa API, phát hành và kiếm tiền từ API.

API WebSocket: API WebSocket duy trì kết nối ổn định giữa các máy khách đã kết nối nhằm kích hoạt tính năng giao tiếp thời gian thực qua tin nhắn. Với API WebSocket trong API Gateway, bạn có thể xác định các tích hợp backend bằng các hàm AWS Lambda, Amazon Kinesis hoặc bất kỳ điểm cuối HTTP nào sẽ được dẫn ra khi nhận được tin nhắn từ các máy khách đã kết nối.

Câu hỏi: Làm thế nào để bắt đầu sử dụng API HTTP trong API Gateway?

Để bắt đầu sử dụng API HTTP, bạn có thể sử dụng bảng điều khiển Amazon API Gateway, AWS CLI, AWS SDK hoặc AWS CloudFormation. Để tìm hiểu thêm về việc bắt đâu sử dụng API HTTP, hãy tham khảo tài liệu của chúng tôi.

Câu hỏi: Làm thế nào để bắt đầu sử dụng API REST trong Amazon API Gateway?

Để bắt đầu sử dụng API REST, bạn có thể sử dụng bảng điều khiển Amazon API Gateway, AWS CLI hoặc AWS SDK. Để tìm hiểu thêm về việc bắt đâu sử dụng API REST, hãy tham khảo tài liệu của chúng tôi.

Câu hỏi: Khi tạo API RESTful, khi nào thì tôi nên sử dụng API HTTP và khi nào thì nên sử dụng API REST?

Bạn có thể dựng API RESTful bằng cách sử dụng cả API HTTP lẫn API REST trong Amazon API Gateway.

API HTTP được tối ưu hóa để dựng API proxy đến các chức năng của AWS Lambda hoặc backend HTTP, biến API HTTP thành lựa chọn lý tưởng cho khối lượng công việc serverless. API HTTP là lựa chọn thay thế có giá thấp hơn và tốc độ cao hơn của API REST nhưng hiện không hỗ trợ chức năng quản lý API. API REST là dịch vụ chuyên dụng cho các API yêu cầu phải có cả chức năng proxy API lẫn các tính năng quản lý API trong cùng một giải pháp.

API HTTP là lựa chọn lý tưởng cho:

  1. Dựng API proxy cho AWS Lambda hay bất kỳ điểm cuối HTTP nào
  2. Dựng API hiện đại được trang bị chức năng xác thực OIDC và OAuth 2 
  3. Khối lượng công việc nhiều khả năng sẽ trở nên rất lớn
  4. API dành cho các khối lượng công việc đòi hỏi cao về độ trễ
 
API REST là lựa chọn lý tưởng cho:
 
  1. Khách hàng đang muốn chi trả một mức giá duy nhất cho một bộ bao gồm đầy đủ tất cả các tính năng cần thiết để dựng, quản lý và phát hành API. 

Câu hỏi: API HTTP được dựng từ API Gateway có các tính năng tiêu chuẩn nào?

API HTTP có các tính năng tiêu chuẩn là hỗ trợ CORS, hỗ trợ OIDC và OAuth2 để xác thực và cấp quyền cũng như triển khai tự động ở các giai đoạn.

Câu hỏi: Tôi có thể nhập định nghĩa OpenAPI để tạo API HTTP không?

Có, bạn có thể nhập định nghĩa API bằng cách sử dụng OpenAPI 3. Thao tác này sẽ tạo định tuyến, tích hợp và mô hình API. Để biết thêm thông tin về cách nhập định nghĩa OpenAPI, hãy tham khảo tài liệu của chúng tôi.

Câu hỏi: Làm thế nào để di chuyển từ API REST hiện tại của tôi sang API HTTP?

Để di chuyển từ API REST hiện tại của bạn sang API HTTP trên Amazon API Gateway, hãy thực hiện như sau:

  1. Kiểm tra để đảm bảo rằng tất cả các tính năng bạn cần đều có trên HTTP. Để xem danh sách tính năng đầy đủ, hãy tham khảo tài liệu của chúng tôi. 
  2. Truy cập API REST của bạn và xuất định nghĩa OpenAPI từ API REST của bạn
  3. Truy cập API HTTP của bạn và nhập định nghĩa OpenAPI từ bước trước
  4. Kiểm tra chức năng API theo dự kiến
  5. Cập nhật URL mới cho máy khách của bạn

Mặc dù API có thể hoạt động nhưng bạn có thể sẽ nhận thấy một số tính năng bị thiếu. Để xác định mọi tính năng bị thiếu, hãy xem lại các trường Thông tin, Cảnh báoLỗi từ quá trình Nhập. Để biết thêm thông tin về việc di chuyển từ API REST sang API HTTP, hãy tham khảo tài liệu của chúng tôi.

Câu hỏi: Làm thế nào để biết API REST của tôi sẽ hoạt động như API HTTP?

Trước hết, hãy truy cập REST của bạn và xuất định nghĩa OpenAPI từ API REST của bạn. Sau đó, truy cập API HTTP của bạn và nhập định nghĩa OpenAPI từ bước trước. Mặc dù API có thể hoạt động nhưng bạn có thể sẽ nhận thấy một số tính năng bị thiếu. Để xác định mọi tính năng bị thiếu, hãy xem lại các trường Thông tin, Cảnh báoLỗi từ quá trình Nhập. AWS CLI sẽ trả lại thông tin về API của bạn trong các trường thông tin và cảnh báo của bạn. Để biết thêm chi tiết, hãy đọc tài liệu của chúng tôi.

Câu hỏi: Làm thế nào để bắt đầu sử dụng WebSocket API trong Amazon API Gateway?

Để bắt đầu, bạn có thể tạo một WebSocket API bằng Bảng điều khiển quản lý AWS, AWS CLI hoặc AWS SDK. Sau đó, bạn có thể thiết lập định tuyến WebSocket để cho biết các dịch vụ lớp backend như AWS Lambda, Amazon Kinesis hoặc điểm cuối HTTP của bạn sẽ được dẫn ra dựa trên nội dung tin nhắn. Tham khảo tài liệu để bắt đầu sử dụng WebSocket API trong API Gateway.

Câu hỏi: Tôi có thể tạo điểm cuối HTTPS không?

Có, tất cả các API được tạo ra bằng Amazon API Gateway chỉ cung cấp HTTPS điểm cuối. Amazon API Gateway không hỗ trợ điểm cuối không được mã hóa (HTTP). Theo mặc định, Amazon API Gateway gán miền nội bộ cho API có khả năng tự động sử dụng chứng chỉ Amazon API Gateway. Khi cấu hình API của bạn để chạy theo tên miền tùy chỉnh, bạn có thể cung cấp chứng chỉ của mình cho miền đó.

Câu hỏi: Tôi có thể sử dụng loại dữ liệu nào với Amazon API Gateway?

API được xây dựng trên Amazon API Gateway có thể chấp nhận bất kỳ khối lượng công việc nào được gửi qua HTTPS cho API REST, API HTTP và API WebSocket. Các định dạng dữ liệu thông thường bao gồm JSON, XML, thông số chuỗi truy vấn và tiêu đề yêu cầu. Bạn có thể khai báo bất kỳ kiểu nội dung nào cho phản hồi của API, sau đó sử dụng biểu mẫu chuyển đổi để đổi phản hồi lớp backend sang định dạng mong muốn.

Câu hỏi: Amazon API Gateway có thể giao tiếp với những lớp backend nào?

Amazon API Gateway có thể thực thi các hàm AWS Lambda trên tài khoản của bạn, bắt đầu các máy trạng thái AWS Step Functions hoặc gọi điểm cuối HTTP được lưu trữ trên AWS Elastic Beanstalk, Amazon EC2, đồng thời cả các thao tác trên HTTP được lưu trữ ngoài AWS có khả năng truy cập thông qua Internet công cộng. API Gateway cũng cho phép bạn xác định biểu mẫu ánh xạ để tạo nội dung tĩnh cần trả về, giúp bạn mô phỏng các API trước khi lớp backend sẵn sàng. Bạn cũng có thể tích hợp API Gateway trực tiếp với các dịch vụ AWS khác – ví dụ: bạn có thể cung cấp method API trên API Gateway để gửi trực tiếp dữ liệu sang Amazon Kinesis.

Câu hỏi: Amazon API Gateway có thể tạo ra SDK cho nền tảng máy khách nào?

API Gateway tạo SDK tùy chỉnh cho phát triển ứng dụng di động bằng Android và iOS (Swift và Objective-C) và cho phát triển ứng dụng web bằng JavaScript. API Gateway cũng hỗ trợ tạo SDK cho Ruby và Java. Sau khi định nghĩa một API và các mô hình liên quan trên API Gateway, bạn có thể sử dụng bảng điều khiển AWS hoặc các API của API Gateway để tạo và tải SDK máy khách xuống. SDK máy khách chỉ được tạo cho REST API trong Amazon API Gateway.

Câu hỏi: Amazon API Gateway được cung cấp ở khu vực AWS nào?

Để xem địa điểm cung cấp API HTTP, API REST và API WebSocket, hãy xem bảng thông tin khu vực AWS ở đây.

Câu hỏi: Tôi có thể quản lý những gì thông qua bảng điều khiển Amazon API Gateway?

Thông qua bảng điều khiển Amazon API Gateway, bạn có thể định nghĩa REST API cũng như các tài nguyên và phương pháp liên quan, quản lý vòng đời API, tạo SDK máy khách và xem các chỉ số API. Bạn cũng có thể sử dụng bảng điều khiển API Gateway để định nghĩa kế hoạch sử dụng của API, quản lý khóa API của nhà phát triển cũng như cấu hình hoạt động điều tiết và hạn mức. Toàn bộ các thao tác giống nhau được cung cấp thông qua các API của API Gateway.

Câu hỏi: Tài nguyên là gì?

Tài nguyên là một đối tượng có kiểu, là một phần của miền API của bạn. Mỗi tài nguyên có thể có mô hình dữ liệu được liên kết, quan hệ với các tài nguyên khác và có thể phản hồi với nhiều method khác nhau. Bạn cũng có thể định nghĩa tài nguyên dưới dạng biến để chặn yêu cầu gửi đến nhiều tài nguyên con.

Câu hỏi: Method là gì?

Mỗi tài nguyên trên một REST API có thể hỗ trợ một hay nhiều method HTTP tiêu chuẩn. Bạn định nghĩa cần hỗ trợ những hành động nào cho mỗi tài nguyên (GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS) và việc triển khai chúng. Ví dụ: yêu cầu GET gửi đến tài nguyên xe ô tô con sẽ trả về danh sách xe ô tô con. Để kết nối toàn bộ các method trên một tài nguyên với một điểm cuối lớp backend, API Gateway cũng hỗ trợ method “ANY” đặc biệt.

Câu hỏi: Kế hoạch sử dụng là gì?

Kế hoạch sử dụng giúp bạn khai báo kế hoạch cho nhà phát triển bên thứ ba để giới hạn truy cập đến các API nhất định, định nghĩa hoạt động điều tiết và yêu cầu hạn mức cũng như liên kết chúng với khóa API. Bạn cũng có thể trích xuất dữ liệu sử dụng theo khóa API để phân tích mức sử dụng API và tạo tài liệu tính phí. Ví dụ: bạn có thể tạo chương trình cơ bản, chuyên nghiệp và doanh nghiệp – bạn có thể cấu hình kế hoạch sử dụng cơ bản để chỉ cho phép 1.000 yêu cầu mỗi ngày và tối đa 5 yêu cầu mỗi giây (RPS).

Câu hỏi: Vòng đời API của Amazon API Gateway là gì?

Với Amazon API Gateway, mỗi REST API có thể có nhiều giai đoạn khác nhau. Giai đoạn được thiết kế để hỗ trợ vòng đời phát triển của API – ví dụ: sau khi xây dựng API và bạn triển khai chúng sang giai đoạn phát triển hoặc khi bạn đã sẵn sàng cho sản xuất, bạn có thể triển khai chúng sang giai đoạn sản xuất.

Câu hỏi: Giai đoạn là gì?

Trên Amazon API Gateway, giai đoạn tương tự như thẻ đánh dấu. Giai đoạn định nghĩa đường dẫn để truy cập triển khai. Ví dụ: bạn có thể định nghĩa giai đoạn phát triển và triển khai API xe hơi sang giai đoạn đó. Bạn có thể truy cập tài nguyên này theo địa chỉ https://www.myapi.com/dev/cars. Bạn cũng có thể thiết lập tên miền tùy chỉnh để trỏ trực tiếp đến một giai đoạn để bạn không phải sử dụng thêm thông số đường dẫn nữa. Ví dụ: nếu trỏ myapi.com trực tiếp sang giai đoạn phát triển, bạn có thể truy cập tài nguyên xe hơi theo địa chỉ https://www.myapi.com/cars. Có thể cấu hình giai đoạn bằng cách sử dụng các biến có thể truy cập từ cấu hình API hoặc biểu mẫu ánh xạ của bạn.

Câu hỏi: Biến giai đoạn là gì?

Biến giai đoạn cho phép bạn định nghĩa cặp khóa/giá trị của giá trị cấu hình được liên kết với một giai đoạn. Có thể sử dụng các giá trị này, tương tự như biến môi trường, trên cấu hình API của bạn. Ví dụ: bạn có thể định nghĩa điểm cuối HTTP để tích hợp method của bạn dưới dạng một biến giai đoạn và sử dụng biến này trên cấu hình API thay vì viết mã cứng điểm cuối – điều này cho phép bạn sử dụng một điểm cuối khác cho mỗi giai đoạn (ví dụ: dev, beta, prod) với cùng cấu hình API. Cũng có thể truy cập biến giai đoạn trên biểu mẫu ánh xạ và có thể sử dụng để gửi thông số cấu hình sang lớp backend Lambda hoặc HTTP.

Câu hỏi: Chính sách tài nguyên là gì?

Chính sách tài nguyên là văn bản chính sách JSON để bạn gán cho một API để kiểm soát việc người dùng chính chỉ định (thường là người dùng hoặc vai trò IAM) có khả năng gọi API hay không. Bạn có thể sử dụng Chính sách tài nguyên để cho phép người dùng ở tài khoản AWS khác truy cập một cách bảo mật đến API của mình hoặc chỉ cho phép gọi API từ dải địa chỉ IP nguồn được chỉ định hoặc khối CIDR. Có thể sử dụng các Chính sách tài nguyên với REST API trong Amazon API Gateway.

Câu hỏi: Điều gì xảy ra nếu tôi triển khai nhầm sang một giai đoạn?

Amazon API Gateway lưu lịch sử triển khai của bạn. Tại thời điểm bất kỳ, sử dụng các API của Amazon API Gateway hoặc bảng điều khiển, bạn có thể đảo ngược một giai đoạn về triển khai trước đó.

Câu hỏi: Tôi có thể sử dụng các định nghĩa Swagger API không?

Có. Bạn có thể sử dụng Công cụ nhập Swagger mã nguồn mở của chúng tôi để nhập định nghĩa Swagger API của bạn vào Amazon API Gateway. Với công cụ nhập Swagger, bạn có thể tạo và triển khai API mới cũng như cập nhật API hiện có.

Câu hỏi: Làm thế nào để kiếm tiền từ các API của mình trên API Gateway?

Bạn có thể kiếm tiền từ các API của mình trên API Gateway bằng cách triển khai chúng dưới dạng sản phẩm trên AWS Marketplace. Trước tiên, bạn cần đăng ký làm người bán trên AWS Marketplace rồi gửi kế hoạch sử dụng trên API Gateway dưới dạng sản phẩm. Đọc tại đây để tìm hiểu thêm về Kiếm tiền từ API.

Câu hỏi: Làm thế nào để văn bản hóa API của mình trên Amazon API Gateway?

API Gateway cho phép tạo, cập nhật và xóa văn bản có liên quan đến từng phần của API của bạn chẳng hạn như method và tài nguyên. Bạn có thể truy cập API liên quan đến văn bản thông qua AWS SDK, CLI, thông qua lệnh gọi RESTful hoặc bằng cách chỉnh sửa các chuỗi văn bản ngay trên bảng điều khiển API Gateway. Cũng có thể nhập văn bản dưới dạng tệp Swagger, dưới dạng một phần của API hoặc độc lập, việc này cho phép bạn thêm hoặc cập nhật văn bản mà không can thiệp đến định nghĩa API. API Gateway tuân thủ quy cách API Mở đối với văn bản nhập từ hoặc xuất ra tệp Swagger. Tài liệu được hỗ trợ cho REST API trong API Gateway.

Câu hỏi: Làm thế nào để tránh tạo ra quá nhiều bản sao của thông báo lỗi và văn bản khác thường xuyên xảy ra trên API của mình?

Ngoài việc hỗ trợ văn bản hóa API theo tiêu chuẩn, API Gateway còn hỗ trợ kế thừa văn bản, giúp dễ dàng định nghĩa chuỗi văn bản một lần rồi sau đó sử dụng ở nhiều nơi khác nhau. Kế thừa giúp đơn giản hóa quy trình định nghĩa văn bản API và có thể chuyển đổi thành cách biểu diễn tiêu chuẩn khi xuất API thành tệp Swagger.

Câu hỏi: Tôi có thể giới hạn truy cập đến API riêng ở một điểm cuối Amazon VPC hoặc VPC không?

Có, bạn có thể áp dụng Chính sách tài nguyên với API để giới hạn truy cập đến một Amazon VPC hoặc điểm cuối VPC cụ thể. Bạn cũng có thể cấp cho Amazon VPC hoặc điểm cuối VPC từ một tài khoản khác quyền truy cập đến API Riêng bằng cách sử dụng Chính sách tài nguyên.

Bảo mật và cấp quyền

Câu hỏi: Làm thế nào để tôi cấp quyền truy cập đến API?

Với Amazon API Gateway, bạn có thể chọn thiết lập method API để yêu cầu cấp quyền. Khi thiết lập method để yêu cầu cấp quyền, bạn có thể sử dụng AWS Signature Phiên bản 4 hoặc trình cấp quyền Lambda để hỗ trợ chiến lược cấp quyền mã thông báo bearer của mình.

Câu hỏi: AWS Signature Phiên bản 4 hoạt động như thế nào?

Bạn có thể sử dụng thông tin xác thực AWS – khóa truy cập và bí mật – để ký yêu cầu gửi đến dịch vụ của bạn và cấp quyền truy cập như các dịch vụ AWS khác. Việc ký yêu cầu API của Amazon API Gateway được quản lý bằng API Gateway SDK tùy chỉnh được tạo ra cho dịch vụ của bạn. Bạn có thể truy xuất thông tin xác thực tạm thời được liên kết với một vai trò trên tài khoản AWS của bạn bằng cách sử dụng Amazon Cognito.

Câu hỏi: Trình cấp quyền Lambda là gì?

Trình cấp quyền Lambda là các hàm AWS Lambda. Với trình cấp quyền yêu cầu tùy chỉnh, bạn có thể cấp quyền truy cập đến API bằng cách sử dụng chiến lược cấp quyền mã thông báo bearer chẳng hạn như OAuth. Khi gọi một API, API Gateway kiểm tra xem trình cấp quyền Lambda có được cấu hình không, khi đó API Gateway gọi hàm Lambda bằng mã thông báo cấp quyền đi vào. Bạn có thể sử dụng Lambda để triển khai nhiều chiến lược cấp quyền khác nhau (ví dụ xác thực JWT, lệnh gọi nhà cung cấp OAuth) để trả về chính sách IAM, chính sách này được dùng để cấp quyền cho yêu cầu. Nếu chính sách do trình cấp quyền trả về hợp lệ, API Gateway sẽ lưu bộ nhớ đệm chính sách được liên kết với mã thông báo đi vào trong 1 giờ.

Câu hỏi: Amazon API Gateway có thể tạo ra khóa API để phân phối cho nhà phát triển bên thứ ba không?

Có. API Gateway có thể tạo ra khóa API và liên kết chúng với kế hoạch sử dụng. Lệnh gọi nhận từ mỗi khóa API được giám sát và đưa vào Amazon CloudWatch Logs để bạn kích hoạt cho mỗi giai đoạn. Tuy nhiên, chúng tôi khuyến cáo bạn không nên sử dụng khóa API để cấp quyền. Bạn nên sử dụng khóa API để giám sát mức độ sử dụng của nhà phát triển bên thứ ba và sử dụng cơ chế mạnh hơn để cấp quyền, chẳng hạn như lệnh gọi API có chữ ký hoặc OAuth.

Câu hỏi: Làm thế nào để tôi xử lý hoặc ngăn chặn các đe dọa hoặc lạm dụng API?

API Gateway hỗ trợ thiết lập điều tiết cho từng phương thức hoặc định tuyến trên API của bạn. Bạn có thể thiết lập giới hạn tốc độ tiêu chuẩn và giới hạn tốc độ tăng tốc trên mỗi giây cho từng phương thức trên REST API và từng định tuyến trên WebSocket API. Hơn nữa, API Gateway tự động bảo vệ các hệ thống lớp backend của bạn trước các cuộc tấn công từ chối dịch vụ phân tán (DDoS), cho dù bị tấn công bằng yêu cầu giả mạo (Lớp 7) hoặc tấn công SYN floods (Lớp 3).

Câu hỏi: Tôi có thể xác minh rằng liệu đó có phải là API Gateway đang gọi lớp backend của tôi không?

Có. Amazon API Gateway có thể tạo chứng nhận SSL phía máy khách và cung cấp cho bạn khóa chứng nhận đó. Có thể thực hiện lệnh gọi đến lớp backend của bạn bằng chứng nhận được tạo ra và bạn có thể xác minh lệnh gọi bắt nguồn từ Amazon API Gateway bằng cách sử dụng khóa công khai của chứng nhận.

Câu hỏi: Tôi có thể sử dụng AWS CloudTrail với Amazon API Gateway không?

Có. Amazon API Gateway được tích hợp với AWS CloudTrail để cung cấp cho bạn lịch sử đầy đủ và có thể kiểm tra được về các thay đổi xảy ra với REST API của bạn. Toàn bộ các lệnh gọi API được gửi đến Amazon API Gateway API để tạo, chỉnh sửa, xóa hoặc triển khai API REST được ghi nhật ký vào CloudTrail trên tài khoản AWS của bạn.

Câu hỏi: Amazon API Gateway hoạt động với Amazon Virtual Private Cloud (Amazon VPC) như thế nào? 

Trên Amazon API Gateway, bạn có thể thiết lập proxy các yêu cầu gửi đến tài nguyên HTTP/HTTPS lớp backend đang chạy trên Amazon VPC bằng cách thiết lập Tích hợp riêng bằng Liên kết VPC. Có thể sử dụng chứng nhận SSL phía máy khách trên Amazon API Gateway để xác minh rằng yêu cầu gửi đến hệ thống lớp backend của bạn do API Gateway gửi bằng cách sử dụng khóa công khai của chứng nhận. Bạn cũng có thể tạo API Riêng trên Amazon API Gateway để chỉ cho phép tài nguyên trên Amazon VPC truy cập đến các API đó thông qua Điểm cuối VPC của Amazon.

Câu hỏi: Tôi có thể giới hạn truy cập đến API riêng ở một điểm cuối Amazon VPC hoặc VPC không?

Có, bạn có thể áp dụng Chính sách tài nguyên với API để giới hạn truy cập đến một Amazon VPC hoặc điểm cuối VPC cụ thể. Bạn cũng có thể cấp cho Amazon VPC hoặc điểm cuối VPC từ một tài khoản khác quyền truy cập đến API Riêng bằng cách sử dụng Chính sách tài nguyên.

Câu hỏi: Tôi có thể cấu hình API REST của mình trên API Gateway để sử dụng TLS phiên bản 1.1 hoặc cao hơn không?

Nếu sử dụng API REST, bạn có thể thiết lập phân phối CloudFront bằng chứng nhận SSL tùy chỉnh trên tài khoản của bạn và sử dụng với API Khu vực trên API Gateway. Sau đó, bạn có thể cấu hình Chính sách bảo mật cho phân phối CloudFront bằng TLS phiên bản 1.1 hoặc cao hơn dựa trên yêu cầu bảo mật và tuân thủ của bạn.

Quản lý, chỉ số và ghi nhật ký

Câu hỏi: Làm thế nào để tôi giám sát Amazon API Gateway API của mình?

Amazon API Gateway ghi nhật ký lệnh gọi API, độ trễ và tỷ lệ lỗi xảy ra với Amazon CloudWatch trên tài khoản AWS. Chỉ số cũng được cung cấp thông qua bảng điều khiển Amazon API Gateway trên bảng thông tin REST API. API Gateway cũng đo lường mức độ sử dụng của nhà phát triển bên thứ ba, dữ liệu có sẵn trên bảng điều khiển API Gateway và thông qua API.

Câu hỏi: Tôi có thể thiết lập cảnh báo trên các chỉ số Amazon API Gateway không?

Có, Amazon API Gateway gửi thông tin nhật ký và chỉ số tới Amazon CloudWatch. Bạn có thể sử dụng bảng điều khiển Amazon CloudWatch để thiết lập cảnh báo tùy chỉnh.

Câu hỏi: Làm thế nào để tôi thiết lập chỉ số cho Amazon API Gateway?

Mặc định, Amazon API Gateway giám sát lưu lượng ở cấp độ REST API. Cách khác, bạn có thể kích hoạt chỉ số chi tiết cho từng method trên REST API từ API cấu hình triển khai hoặc màn hình bảng điều khiển. Chỉ số chi tiết cũng được ghi nhật ký lên Amazon CloudWatch và bị tính phí theo mức phí CloudWatch.

Câu hỏi: Tôi có thể xác định phiên bản API nào khách hàng hiện đang sử dụng không?

Có. Chi tiết chỉ số được xác định theo REST API và giai đoạn. Ngoài ra, bạn có thể kích hoạt chỉ số cho từng method trên REST API.

Câu hỏi: Amazon API Gateway có hỗ trợ ghi nhật ký không?

Có. Amazon API Gateway tích hợp với Amazon CloudWatch Logs. Bạn có thể chọn kích hoạt ghi nhật ký cho từng giai đoạn trên API. Với mỗi method trên REST API, bạn có thể thiết lập độ chi tiết của nhật ký và có nên ghi nhật ký toàn bộ dữ liệu yêu cầu và phản hồi hay không.

Câu hỏi: Nhật ký được cung cấp nhanh tới mức nào?

Nhật ký, cảnh báo, tỷ lệ lỗi và các chỉ số khác được lưu trữ trên Amazon CloudWatch và được cung cấp gần theo thời gian thực.

Điều tiết và lưu bộ nhớ đệm

Câu hỏi: Làm thế nào để tôi bảo vệ hệ thống lớp backend và ứng dụng trước hiện tượng tăng lưu lượng đột ngột?

Amazon API Gateway cho phép điều tiết ở nhiều cấp độ khác nhau, bao gồm lệnh gọi tổng thể và theo dịch vụ. Có thể thiết lập giới hạn điều tiết cho tốc độ tiêu chuẩn và tốc độ tăng tốc. Ví dụ: chủ sở hữu API có thể thiết lập giới hạn tốc độ 1.000 yêu cầu mỗi giây cho một method cụ thể trên REST API, đồng thời cấu hình để Amazon API Gateway xử lý tốc độ tăng tốc 2.000 yêu cầu mỗi giây trong thời gian vài giây. Amazon API Gateway giám sát số lượng yêu cầu mỗi giây. Bất kỳ yêu cầu nào vượt quá giới hạn sẽ nhận được phản hồi 429 HTTP. SDK máy khách (ngoại trừ Javascript) do Amazon API Gateway tạo ra sẽ tự động thử lại lệnh gọi khi đáp ứng phản hồi này.

Câu hỏi: Tôi có thể điều tiết các nhà phát triển riêng lẻ thực hiện gọi API của tôi không?

Có. Với kế hoạch sử dụng, bạn có thể thiết lập giới hạn điều tiết cho các khóa API riêng lẻ.

Câu hỏi: Điều tiết giúp ích cho tôi những gì?

Điều tiết đảm bảo lưu lượng API được kiểm soát để giúp dịch vụ lớp backend của bạn duy trì được hiệu suất và độ sẵn sàng.

Câu hỏi: Amazon API Gateway có thể điều tiết lưu lượng API đi vào ở mức nào?

Có thể thiết lập giới hạn tốc độ điều tiết ở mức method. Bạn có thể chỉnh sửa giới hạn điều tiết trên cài đặt method của bạn thông qua các API của Amazon API Gateway hoặc trên bảng điều khiển Amazon API Gateway.

Câu hỏi: Quy tắc điều tiết được áp dụng như thế nào?

Đầu tiên, API Gateway kiểm tra so với giới hạn tài khoản AWS của bạn. Nếu lưu lượng thấp hơn giới hạn tài khoản đã thiết lập, API Gateway kiểm tra giới hạn do bạn thiết lập cho giai đoạn hoặc phương pháp. Nếu lưu lượng thấp hơn giới hạn của giai đoạn, API Gateway áp dụng giới hạn của kế hoạch sử dụng do bạn thiết lập theo khóa của mỗi API.

Câu hỏi: Amazon API Gateway có hỗ trợ lưu bộ nhớ đệm kết quả API không?

Có. Bạn có thể thêm tính năng lưu bộ nhớ đệm vào lệnh gọi API bằng cách cung cấp bộ nhớ đệm API Gateway và chỉ định kích thước bộ nhớ này theo gigabyte. Bộ nhớ đệm được cung cấp cho giai đoạn cụ thể của API. Việc này giúp cải thiện hiệu suất và giảm lưu lượng gửi đến lớp backend của bạn. Thiết lập bộ nhớ đệm cho phép bạn kiểm soát cách thức tạo khóa bộ nhớ đệm và thời gian hiệu lực (TTL) của dữ liệu được lưu trữ cho mỗi method. API Gateway cũng cung cấp API quản lý để giúp bạn làm mất hiệu lực bộ nhớ đệm cho mỗi giai đoạn. Có thể sử dụng tính năng lưu bộ nhớ đệm cho REST API trong API Gateway.

Câu hỏi: Điều gì xảy ra nếu cùng một lúc có lượng lớn người dùng cuối cùng tìm cách gọi API của tôi?

Nếu lưu bộ nhớ đệm không bật và chưa áp dụng giới hạn điều tiết, toàn bộ các yêu cầu sẽ gửi đến dịch vụ dịch vụ lớp backend của bạn cho đến khi đạt đến giới hạn điều tiết mức tài khoản. Nếu đã áp dụng giới hạn điều tiết, Amazon API Gateway sẽ loại bỏ số lượng yêu cầu cần thiết và chỉ gửi giới hạn yêu cầu đã định nghĩa đến dịch vụ lớp backend của bạn. Nếu đã cấu hình bộ nhớ đệm, Amazon API Gateway sẽ trả về phản hồi đã lưu bộ nhớ đệm cho những yêu cầu trùng lặp trong khoảng thời gian tùy chỉnh, nhưng chỉ khi thấp hơn giới hạn điều tiết đã cấu hình. Việc cân bằng giữa lớp backend và máy khách đảm bảo hiệu suất tối ưu của API cho những ứng dụng được hỗ trợ. Những yêu cầu được điều tiết sẽ được tự động thử lại bởi SDK phía máy chủ do Amazon API Gateway tạo ra. Mặc định, Amazon API Gateway không thiết lập bất kỳ bộ nhớ đệm nào trên các method của API.

Câu hỏi: API thay đổi quy mô như thế nào?

Amazon API Gateway đóng vai trò là một proxy tới các thao tác lớp backend bạn đã cấu hình. Amazon API Gateway sẽ tự động thay đổi quy mô để xử lý lưu lượng API của bạn nhận được. Amazon API Gateway không tự ý giới hạn hoặc điều tiết các lời gọi đến các thao tác lớp backend của bạn và toàn bộ các yêu cầu chưa bị chặn bởi thiết lập điều tiết và lưu bộ nhớ đệm trên bảng điều khiển Amazon API Gateway được gửi đến thao tác lớp backend của bạn.

Tính phí

Câu hỏi: Tôi sẽ bị tính phí như thế nào khi sử dụng Amazon API Gateway?

Amazon API Gateway tính phí trên mỗi một triệu lệnh gọi API, cộng với chi phí truyền dữ liệu ra, tính theo gigabyte. Nếu bạn chọn cung cấp bộ nhớ đệm cho API, mức phí theo giờ sẽ được áp dụng. Đối với WebSocket API, tính phí API Gateway dựa trên các tin nhắn đã gửi và nhận được cũng như số phút máy khách kết nối với API. Vui lòng tham khảo trang Giá của API Gateway để biết chi tiết về phí truy vấn API, truyền dữ liệu và lưu bộ nhớ đệm theo vùng.

Câu hỏi: Ai trả phí cho lệnh gọi API của Amazon API Gateway do nhà phát triển bên thứ ba tạo ra?

Chủ sở hữu API bị tính phí đối với lệnh gọi đến API trên API Gateway.

Câu hỏi: Nếu sử dụng dữ liệu lưu bộ nhớ đệm thì phản hồi API có được coi là lệnh gọi API khi tính phí không?

Có. Các lệnh gọi API được coi như nhau khi tính phí, cho dù phản hồi được xử lý bởi thao tác lớp backend hoặc thao tác lưu bộ nhớ đệm của Amazon API Gateway.

WebSocket API

Câu hỏi: Định tuyến WebSocket trong Amazon API Gateway là gì?

Định tuyến WebSocket trong Amazon API Gateway được sử dụng để định tuyến chính xác các tin nhắn tới một tích hợp cụ thể. Bạn sẽ chỉ rõ một khóa định tuyến và backend tích hợp để gọi ra khi xác định WebSocket API của bạn. Khóa định tuyến là một thuộc tính trong nội dung tin nhắn. Cũng có thể thiết lập tích hợp mặc định đối với các khóa định tuyến không khớp. Tham khảo tài liệu để tìm hiểu thêm về định tuyến.

Câu hỏi: Từ dịch vụ backend, tôi có thể gửi tin nhắn tới các máy khách đã kết nối như thế nào?

Khi một máy khách được kết nối với WebSocket API, máy khách đó sẽ được tạo một URL duy nhất, được gọi là URL callback. Bạn có thể sử dụng URL callback này để gửi tin nhắn tới máy khách từ dịch vụ backend.

Câu hỏi: Tôi có thể cho phép truy cập vào WebSocket API trong Amazon API Gateway bằng cách nào?

Với Amazon API Gateway, bạn có thể sử dụng các chính sách và vai trò IAM hoặc Công cụ cho phép AWS Lambda để cấp quyền truy cập vào WebSocket API của mình.

Câu hỏi: Làm cách nào để dịch vụ backend của tôi biết khi một máy khách kết nối hoặc ngắt kết nối khỏi WebSocket trong Amazon API Gateway?

Khi máy khách kết nối hoặc ngắt kết nối, dịch vụ Amazon API Gateway sẽ gửi một tin nhắn tới hàm AWS Lambda lớp backend hoặc điểm cuối HTTP của bạn bằng các bộ định tuyến $connect và $disconnect. Bạn có thể thực hiện hành động phù hợp như thêm hoặc xóa máy khách trong danh sách người dùng đã kết nối.

Câu hỏi: Làm cách nào để dịch vụ backend của tôi xác định được nếu máy khách vẫn kết nối với WebSocket?

Bạn có thể dùng phương thức GET sử dụng URL callback (gọi lại) khi kết nối để xác định nếu máy khách vẫn kết nối với WebSocket. Tham khảo tài liệu về việc sử dụng URL callback.

Câu hỏi: Tôi có thể ngắt kết nối máy khách với dịch vụ backend của mình không?

Có, bạn có thể ngắt kết nối máy khách đã kết nối với dịch vụ backend của mình bằng hàm URL callback (gọi lại).

Câu hỏi: Kích thước tin nhắn tối đa được hỗ trợ cho WebSocket API là gì?

Kích thước tin nhắn được hỗ trợ tối đa là 128 KB. Tham khảo tài liệu để biết các giới hạn khác đối với WebSocket API.

Câu hỏi: Tôi sẽ bị tính phí như thế nào khi sử dụng WebSocket API trên Amazon API Gateway?

Bạn sẽ được tính phí dựa trên 2 số liệu: Số phút kết nối và số tin nhắn.

Số phút kết nối: Tổng số phút máy khách hoặc thiết bị kết nối với WebSocket (làm tròn thành phút).

Tin nhắn: Tổng số tin nhắn đã gửi và nhận được từ máy khách kết nối. Tin nhắn được tính bằng gia số 32 KB. Tham khảo trang giá để biết chi tiết về giá và các ví dụ của WebSocket API.

Câu hỏi: Nếu các tin nhắn không xác thực hoặc ủy quyền được trong khi kết nối WebSocket, thì có bị tính vào hóa đơn sử dụng API của tôi không?

Không, nếu tin nhắn không xác thực hoặc ủy quyền được trong khi kết nối WebSocket thì sẽ không được tính vào hóa đơn sử dụng API của bạn.

Tìm hiểu thêm về Amazon API Gateway

Truy cập trang giá
Bạn đã sẵn sàng để bắt đầu chưa?
Đăng ký
Bạn có thêm câu hỏi?
Hãy liên hệ với chúng tôi