30

バックエンドとして aws lambda と dynamo db を使用するモバイル/ウェブ アプリを開発しています。スタンドアロンのラムダ関数は完全に機能しています。呼び出しは API ゲートウェイ経由でルーティングされています。API キーを使用して、それが提供するセキュリティ機能を活用しています。いくつかのテスト目的で、サードパーティの REST クライアント POSTMAN を介して API エンドポイントを呼び出そうとしています。

リクエストは POST タイプですが、何を試しても取得されます

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

参照用にスナップショットを添付します。(セキュリティ上の理由から、一部に影を付けています)

ここに画像の説明を入力

  1. 行動の根本的な原因を推測することはできません。
  2. 他のツールで同じことが達成できる場合は、提案してください。
4

7 に答える 7

25

AWS API Gateway を使用したことで、私はあなたが持っているように見えるのと同じ罠に陥りました。403 ("message": "Missing authentication token.")悪名高いメッセージが表示される原因は 2 つあります。

  1. CloudFront の積極的なキャッシング

CloudFront を使用して API リクエスト/レスポンスをキャッシュしていることに気付きました。CloudFront は優れたツールです (私に言わせれば最高のキャッシング メカニズムの 1 つです)。しかし、開発中に何かをキャッシュすると、キャッシュされたエラー メッセージに簡単に巻き込まれてしまいます。ここではこれが当てはまる可能性があるため、API が完全に機能するようになるまで CloudFront から API を削除することをお勧めします。

  1. 再デプロイを忘れる

API Gateway の主な機能の 1 つは、AWS が複数のバージョンの API を処理する方法です。デプロイ後は、API エンドポイントが変更されないことを知っていれば安全です。まさに API エンドポイントに求めているものです。

これは、エンドポイントの展開方法によるものです。AWS コンソールで行われた各変更は、ライブで操作するために特定のデプロイにデプロイする必要があります。

たとえば、API を「ライブ」デプロイメントにデプロイし、すべてが正常に機能する場合、それは素晴らしいことです。AWS コンソールで引き続き設定を微調整して、時間の経過とともに API を改善できます。変更内容に満足したら、別の API デプロイに再度デプロイできます。つまり、現在の API ユーザーは自分の展開が作業中の展開に戻されるまでの対話方法。

発生している可能性がある問題は、AWS コンソールで多くの変更を行ったにもかかわらず、Postman でテストしているデプロイに再デプロイしていない可能性があることです。

サイドノート:

リソース エディター パネルでは、このメソッドの応答タイプ、ヘッダー、およびコンテンツ タイプに関する情報を提供できます。ここでは、より意味のあるエラー メッセージをエンドポイントに提供できます。

于 2015-09-16T13:38:57.110 に答える
23

URL にリソースを追加していないようです。URL は次のようになります。

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

しかし、あなたのものはもっと似ています

https://my-api-id.execute-api.region-id.amazonaws.com/test
于 2015-11-25T09:57:46.460 に答える
9

そこにない API Gateway パスを要求すると、「メッセージ: 認証トークンがありません」というペイロードが返されます。

残念ながら、それはかなり混乱しています。

于 2016-04-22T18:25:50.857 に答える
5

私の場合、私がサポートした方法は、ブラウザでPOST試してみたということでした。Postman でGETa を実行して再試行したところ、うまくいきました!POST

于 2016-01-30T06:58:03.890 に答える
4

API 使用計画を追加し、その計画を API ステージにリンクする必要がありました。

AWS でキーを API にリンクするには、これが唯一の方法のようです。

于 2016-09-07T08:42:39.613 に答える
0

デプロイされているリソースを呼び出していることを確認してください。そうでない場合は、代わりにこの紛らわしい API エラーが発生404します。デプロイされた「ステージ」に移動すると、リソースが存在するかどうかを確認できます。

新しいリソースを展開するには:に移動します。Actions -> Deploy API

amz-api-ゲートウェイ

正しいエンドポイントを取得するには 、[ステージ] に移動し、呼び出したいリソースをクリックします。「invoke URL」というリンクが表示されます

リソースエンドポイント

次に、curl コマンドを実行するだけで、

curl --request GET https://88upd88you.execute-api.us-west-2.amazonaws.com/dev/hello

注:dev上記は私の芸名です。

于 2018-11-18T19:40:29.650 に答える