7

Unauthorizedエラー パラメータに文字列を指定して Lambda オーソライザーから Lambda コールバック関数を呼び出すと、本文を含む 401 レスポンスが返されます。

{ "message": "Unauthorized" }

応答で他の文字列を使用しようとすると、次の応答が返されます。

{ "message": null }

代わりに、コールバックの結果パラメータで拒否ポリシー ドキュメントを返すと、次のような応答で 403 が返されます。

{ "message": "Unable to access resource with an explicit deny" }

調べてみると、Lambda オーソライザーからカスタム レスポンスを返すようにゲートウェイ レスポンスを設定する必要があるようです。これは 403 レスポンスに対して取り組んでいますが、401 に対してこれを行う方法がわかりません。

403 については、テンプレートを使用してゲートウェイ レスポンスを作成しました。

{\"message\":\"$context.authorizer.stringKey\"}

次に、結果オブジェクトで次を設定します

ResultObject.context.stringKey = 'My custom response'

これは機能し、ここに文書化されています。

ただし、401 については、ポリシー ドキュメントを返さないため、カスタム レスポンスの使用方法がわかりません。403 の場合と同じゲートウェイ レスポンスを作成しましたが、エラー パラメータに任意の文字列 (「Unauthorized」以外) を含むコールバックをヒットすると、null メッセージが表示されます。これはポリシー ドキュメントを含む応答構造体である必要があるため、結果パラメーターで返すことはできません。

401 でカスタム応答を返す方法についてのアイデアはありますか?

4

2 に答える 2