API Gateway {“message”:”Missing Authentication Token”} が返ってきた時
2020/05/19
理解している人にとっては当然のことなのですが、API Gateway初学者が入門、導入記事の通り進めている人が少しつまづいてしまいそうなポイントだったので一応シェア。
状況
API GatewayでAPIをデプロイすると表示される画面。
いろんな記事で、
この表示されている「URLの呼び出し」をクリックすると、設定されたレスポンスが返ってくる
と説明されていることが多いのですが、これを鵜呑みにしてAPIをデプロイしてすぐ出てくるこのURLをクリックすると、
{"message":"Missing Authentication Token"}
と返ってきます。
ブラウザじゃなくて、curlを使ってもダメ、GETとPOSTを取り違えてるわけでもコマンドが間違っているわけでもない、変にアクセスを制限しているわけじゃないのに何故……
となる人もいるかもしれません。(僕は最初そうなりました)
原因
結論から言うと、アクセスするURLが間違っていることが原因です。
API デプロイ後にすぐ表示されるページのURLはルートのURLで、
子リソース(リソースの作成でいろいろと設定した、専ら実際に使う方のURL)が設定されている場合には、アクセスするとさきほどのMissing Authentication Tokenエラーが返ってきます。
(この時点では、設定してきたリソース、メソッドのどれも選択していないので当然といえば当然ですが)
解決
ということで、正しいURL(自分が確認したい子リソースのURL)を確認しましょう。ステージ部分にあるルート(以下の画像で言う test )をクリック。
すると、設定したリソース、メソッドが展開、表示されます。
ここで確認したい子リソースを選択しましょう。例えば、上のケースでtestのGETをクリックすると以下のような画面が表示されます。
さきほどのURLと違って、ルート以下のパスが表示されていることが分かります。
今回はメソッドにGETを設定しているのでブラウザでリンクにアクセスするだけで、期待する値が返ってきます。
POSTを設定している場合はcurlコマンドなどを使って、確認してみましょう。
AWSで用意しているこのエラーメッセージに関するドキュメントを読めば分かることではあるのですが、そもそも初学者はAPI Gatewayについて覚えなければいけないことも多く、混乱してしまうこともあるかと、思い書きました。
ご参考になれば幸い。