2015-09-16 32 views
29

Chúng tôi đang phát triển một ứng dụng di động/web mà chúng tôi đang sử dụng awda lambda và db động như các hàm lambda độc lập backend.The của chúng tôi đang hoạt động hoàn hảo. Các cuộc gọi đang được định tuyến qua cổng api. Chúng tôi đang sử dụng các khóa api để tận dụng các tính năng bảo mật mà nó cung cấp. Đối với một số mục đích thử nghiệm, chúng tôi đang cố gắng gọi điểm kết thúc api thông qua một khách hàng còn lại của bên thứ ba POSTMAN.Thực hiện cuộc gọi đến điểm cuối api gateway AWI bằng phím api bằng cách sử dụng ứng dụng khách POSTMAN

Các yêu cầu là của POST loại nhưng không có vấn đề gì chúng tôi cố gắng, chúng tôi nhận

403 ("message": "Missing authentication token.")

Một ảnh chụp được đính kèm để tham khảo. (Vài phần được tô vì lý do an ninh)

enter image description here

  1. Chúng tôi không thể hiểu được nguyên nhân gốc rễ cho hành vi.
  2. nếu có thể đạt được điều tương tự với một số công cụ khác, vui lòng đề xuất.

Trả lời

25

Từ làm việc với Cổng API AWS Tôi đã rơi vào cùng một cái bẫy giống như bạn có. Có hai điều mà có thể gây ra tai tiếng 403 ("message": "Missing authentication token.") nhắn sẽ được hiển thị: bộ nhớ đệm tích cực

  1. CloudFront của

Tôi nhận thấy rằng bạn đang sử dụng CloudFront để cache yêu cầu API của bạn/câu trả lời. CloudFront là một công cụ tuyệt vời - một trong những cơ chế lưu bộ nhớ đệm tốt nhất nếu bạn hỏi tôi - nhưng khi lưu vào bộ nhớ đệm mọi thứ trong quá trình phát triển, thật dễ dàng để bắt kịp các thông báo lỗi được lưu trong bộ nhớ cache. Đây có thể là trường hợp ở đây, vì vậy lời khuyên của tôi là xóa API khỏi CloudFront cho đến khi bạn hoàn thành công việc.

  1. Quên để tái triển khai

Một trong những tính năng chính của API Gateway là cách AWS xử lý nhiều phiên bản của API. Sau khi triển khai, bạn có thể an toàn khi biết rằng các điểm cuối API của bạn sẽ không thay đổi - chính xác những gì bạn muốn từ điểm cuối API.

Điều này là do cách mà các điểm cuối được triển khai. Mỗi thay đổi được thực hiện trong bảng điều khiển AWS phải được triển khai cho một triển khai cụ thể để tương tác trực tiếp.

Ví dụ: nếu tôi triển khai API của mình để triển khai "trực tiếp" và mọi thứ hoạt động tốt, điều đó thật tuyệt. Bây giờ tôi có thể tiếp tục tinh chỉnh cài đặt trong bảng điều khiển AWS để cải thiện API theo thời gian và khi tôi hài lòng với những gì tôi đã thay đổi, tôi có thể triển khai lại để triển khai API khác, có nghĩa là người dùng API hiện tại sẽ không phải thay đổi các phương thức tương tác cho đến khi triển khai được thực hiện trở lại vào triển khai mà họ đang làm việc.

Vấn đề bạn có thể gặp phải là mặc dù bạn đã thực hiện rất nhiều thay đổi trong bảng điều khiển AWS, bạn có thể không được triển khai lại để triển khai mà bạn đang thử nghiệm trong Postman.

Sidenote:

Trong bảng điều khiển biên tập tài nguyên, bạn có thể cung cấp thông tin về các loại phản ứng của phương pháp này, tiêu đề của họ và các loại nội dung. Ở đây có thể cung cấp các thông báo lỗi có ý nghĩa hơn cho các điểm cuối của bạn.

21

Có vẻ như bạn không thêm tài nguyên vào URL của mình. URL phải cái gì đó như:

https://my-api-id.execute-api.region-id.amazonaws.com/test/mydemoresource 

nhưng bạn là giống như

https://my-api-id.execute-api.region-id.amazonaws.com/test 
+1

Có, thông thường chúng tôi đang vội vàng thử nghiệm mọi thứ. Nhưng nếu chúng ta kiên nhẫn đọc thêm một dòng nữa, chúng ta đang ở đó. – Nabin

5

Trong trường hợp của tôi nó là phương pháp tôi được hỗ trợ là POST và tôi đã cố gắng để GET nó trong trình duyệt. Tôi đã thử lại bằng cách thực hiện một số POST trong Postman và nó đã hoạt động!

9

Yêu cầu đường dẫn API Gateway không có ở đó trả về "thông báo: Thiếu mã thông báo xác thực".

Thật không may là khá khó hiểu.

+2

Tương tự nếu bạn sử dụng phương pháp HTTP sai, ví dụ: POST thay vì GET. Siêu bối rối – mbatchkarov

2

Tôi phải thêm gói sử dụng API và sau đó liên kết kế hoạch với giai đoạn API.

Có vẻ như đây là cách duy nhất để liên kết chìa khóa để các API trong AWS ..

0

Trên trang Stage Editor, có một nav trái với tên sân khấu. Nếu bạn mở rộng, bạn sẽ nhận được dấu gạch chéo; nếu bạn mở rộng điều này, bạn sẽ có được tài nguyên của mình. Nếu bạn mở rộng tài nguyên của mình, bạn sẽ có được phương thức của mình và nếu bạn nhấp vào phương thức, bạn sẽ nhận được liên kết "Gọi URL" (tương tự như ở trên nhưng với tài nguyên được thêm vào). Liên kết URL gọi này hoạt động, gọi phương thức GET và trả về kết quả.

Các vấn đề liên quan