スキップしてコンテンツを表示

Lambda オーソライザーを作成した後に API Gateway の "401 Unauthorized" エラーが表示される理由を教えてください。

所要時間2分
0

Amazon API Gateway API 用の AWS Lambda オーソライザーを作成すると、"401 Unauthorized" エラーが表示されます。

簡単な説明

Lambda オーソライザーを使用する API Gateway API が不正なリクエストを受け取ると、API Gateway は 401 Unauthorized レスポンスを返します。

注: API Gateway は、さまざまな理由で "401 Unauthorized" エラーを返します。この記事では、API Gateway の事前認証検証に失敗する認証情報 (トークン、ヘッダー、クエリパラメータ) の欠落または無効が原因で発生する 401 エラーについて説明します。これらのエラーは、Lambda オーソライザー関数を呼び出す前に API Gateway がリクエストを拒否した場合に発生します。

トークンベースの Lambda オーソライザーの場合

"401 Unauthorized" エラーは通常、必要なトークンがないか、オーソライザーのトークンが検証式を検証しなかった場合に発生します。

リクエストパラメータベースの Lambda オーソライザーの場合

"401 Unauthorized" エラーは通常、設定された ID ソースが見つからない、NULL、空、または有効でない場合に発生します。

この種のエラーをトラブルシューティングするには、API へのリクエストに含まれる必須情報を確認してください。次に、必要なヘッダーとトークン値、または ID ソースを指定して API を呼び出し、オーソライザーをテストします。

Lambda オーソライザーの設定例については、「TOKEN オーソライザー Lambda 関数の例」と「REQUEST オーソライザー Lambda 関数の例」を参照してください。

解決策

Lambda オーソライザーの設定を確認する

次の手順を実行します。

  1. API Gateway コンソールを開きます。
  2. [API] で、API の名前を選択します。
  3. API の名前の下で、[オーソライザー] を選択します。
  4. ユースケースに合ったオーソライザーの設定を確認します。

トークンベースの Lambda オーソライザー

Lambda イベントペイロードが [トークン] として設定されている場合は、トークンソースの値を確認します。API の呼び出しでは、トークンソースの値をリクエストヘッダーとして使用する必要があります。

重要: トークン検証に正規表現を入力すると、API Gateway はこの表現と照合してトークンを検証します。例えば、正規表現 \w{5} を入力した場合、5 文字の英数字文字列を含むトークン値のみが正常に検証されます。

リクエストパラメータベースの Lambda オーソライザー

Lambda イベントペイロードが [リクエスト] として設定されている場合は、設定されている ID ソースを確認します。ID ソースは、ヘッダー、クエリ文字列、複数値クエリ文字列、ステージ変数、または $context 変数である可能性があります。

重要: 認証キャッシュがオンになっている場合、API へのリクエストは設定されたすべての ID ソースと照合して検証されます。キャッシュをオフにして Lambda オーソライザーをテストしてください。

API をデプロイする

Lambda オーソライザーの設定またはその他の API 設定を変更した場合は、API を再デプロイして変更をコミットします。

Lambda オーソライザーをテストする

Lambda オーソライザーをテストするには、API Gateway コンソール、cURL、または Postman のいずれかを使用して API へのテスト呼び出しを行います。

重要: Lambda オーソライザーの設定に従ってリクエストをフォーマットしてください。

API Gateway コンソールを使用して Lambda オーソライザーをテストする

次の手順を実行します。

  1. API Gateway コンソールを開きます。
  2. [API] で、API の名前を選択します。
  3. API の名前の下で、[オーソライザー] を選択します。
  4. [オーソライザー] で、テストするオーソライザーの名前を選択します。
  5. [オーソライザーのテスト] で、ユースケースに合わせて次の手順を実行します。

トークンベースの Lambda オーソライザー

[オーソライザーのテスト] を選択し、[認証トークン] の値は指定しないでください。API Gateway はレスポンスコード: 401 を返します。これは認証トークンが空のためです。

正規表現 \w{5} を使用してトークン検証を設定した場合は、"abc123" など、無効な認証トークンの値を入力します。次に、[オーソライザーのテスト] をクリックします。API Gateway はレスポンスコード: 401 を返します。認証トークントークン検証式を満たしていないためです。

[認証トークン] の値に allow と入力し、[オーソライザーのテスト] をクリックします。API Gateway はレスポンスコード: 200 メッセージを返します。

リクエストパラメータベースの Lambda オーソライザー

リクエストパラメータを削除し、[オーソライザーのテスト] をクリックします。API Gateway はレスポンスコード: 401 を返します。これはリクエストパラメータがないためです。

[リクエストパラメータ] に headerValue1queryValue1stageValue1 と入力し、[オーソライザーのテスト] をクリックします。API Gateway はレスポンスコード: 200 メッセージを返します。

Postman または cURL を使用して Lambda オーソライザーをテストする

Postman を使用して Lambda オーソライザーをテストする方法については、「API Gateway Lambda オーソライザーで API を呼び出す」を参照してください。Postman の詳細については、Postman のウェブサイトを参照してください。

curl の詳細については、curl プロジェクトのウェブサイトの「curl」を参照してください。

注: テストする前に Lambda オーソライザーの認証キャッシュをオフにした場合は、テスト後に再度有効にしてください。

認証キャッシュを再度有効化したら、API を再デプロイして変更をコミットします。Lambda オーソライザーからクロスオリジンリソース共有 (CORS) エラーを受け取った場合は、DEFAULT 4XX API Gateway レスポンスの CORS ヘッダーを追加します。詳細については、「API Gateway が CORS エラーを返す場合のトラブルシューティング方法を教えてください」を参照してください。

関連情報

Amazon API Gateway とは何ですか?

API Gateway で REST API へのアクセスを制御および管理する

API Gateway REST API または WebSocket API のトラブルシューティング用に、CloudWatch Logs を有効にする方法を教えてください。

1コメント

This article was reviewed and updated on 2026-02-18.

エキスパート

応答済み 1ヶ月前

関連するコンテンツ