バックエンドとしてaws lambdaおよびdynamo dbを使用しているモバイル/ Webアプリを開発しています。スタンドアロンのラムダ関数は完全に機能しています。呼び出しは、APIゲートウェイ経由でルーティングされています。 APIキーを使用して、提供するセキュリティ機能を活用しています。いくつかのテスト目的で、サードパーティのレストクライアントPOSTMANを介してAPIエンドポイントを呼び出そうとしています。
リクエストはPOSTタイプですが、何を試そうとしても、
403 ("message": "Missing authentication token.")
参照用にスナップショットが添付されています。 (セキュリティ上の理由により、一部が網掛けされています)
AWS API Gatewayでの作業から、あなたが持っていると思われるのと同じtrapに陥りました。悪名高い403 ("message": "Missing authentication token.")
メッセージが表示される原因には、次の2つがあります。
CloudFrontを使用してAPIリクエスト/レスポンスをキャッシュしていることに気付きました。 CloudFrontは素晴らしいツールです(私に聞いたら最高のキャッシングメカニズムの1つです)が、開発中に物事をキャッシュすると、キャッシュされたエラーメッセージに簡単に追いつくことができます。この場合が該当する可能性があるため、APIを完全に機能するまでCloudFrontから削除することをおすすめします。
API Gatewayの主要な機能の1つは、AWSが複数のバージョンのAPIを処理する方法です。デプロイされると、APIエンドポイント変更されない — APIエンドポイントに必要なものを正確に知ることができます。
これは、エンドポイントの展開方法によるものです。ライブと対話するには、AWSコンソールで行われた各変更を特定のデプロイにデプロイする必要があります。
たとえば、APIを「ライブ」デプロイメントにデプロイし、すべてが正常に機能する場合、それは素晴らしいことです。これで、AWSコンソールの設定を微調整してAPIを改善できるようになりました。変更内容に満足したら、別のAPIデプロイに再度デプロイできます。つまり、現在のAPIユーザーは、展開が作業中の展開に戻るまで、相互作用メソッド。
発生する可能性のある問題は、AWSコンソールで多くの変更を行ったにもかかわらず、Postmanでテストしているデプロイメントに再デプロイしていない可能性があることです。
サイドノート:
[リソースエディター]パネルで、このメソッドの応答タイプ、ヘッダー、コンテンツタイプに関する情報を提供できます。ここで、より意味のあるエラーメッセージをエンドポイントに提供できます。
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
存在しないAPI Gatewayパスを要求すると、「message:Missing Authentication Token」ペイロードが返されます。
残念ながら、それはかなり混乱しています。
私の場合、サポートしているメソッドはPOST
であり、ブラウザでGET
を試してみました。 PostmanでPOST
を実行して再試行しましたが、うまくいきました!
API使用プランを追加してから、プランをAPIステージにリンクする必要がありました。
これが、キーをAWSのAPIにリンクする唯一の方法のようです。
デプロイされているリソースを呼び出していることを確認してください。そうでない場合は、404
の代わりに、この 混乱するAPIエラー を使用します。デプロイされた「ステージ」に移動して、リソースが存在するかどうかを確認できます。
新しいリソースを展開するには:Actions -> Deploy API
に移動します
正しいエンドポイントを取得するには [ステージ]に移動して、呼び出したいリソースをクリックします。リンク「invoke URL」が表示されます
その後、単にcurlコマンドを実行できます
curl --request GET https://88upd88you.execute-api.us-west-2.amazonaws.com/dev/hello
注:上記のdev
は私のステージ名です。
[ステージエディター]ページには、ステージ名の左ナビゲーションがあります。これを展開すると、スラッシュが付きます。これを展開すると、リソースが得られます。リソースを展開するとメソッドが取得され、メソッドをクリックすると「Invoke URL」リンクが表示されます(上記と同じですが、リソースが追加されています)。この呼び出しURLリンクは機能し、GETメソッドを呼び出して結果を返します。