次のエンドポイントを使用して、AWSAPIゲートウェイでシンプルなAPIを作成しました。
POST /v1/users
メソッド実行/メソッドリクエストにリクエストモデルを追加しました:
このモデルスキーマは次のようになります。
ただし、json body { "foo": "bar" }
を使用してそのエンドポイントにリクエストを送信すると、それは拒否されず、ラムダ関数が実行されます。
では、リクエストの検証に使用されていないのに、JSONスキーマを定義するオプションがあるのはなぜですか?
これを自分で理解しようとしているだけです。数時間前に質問しただけです。
これまでのところ、私が見つけた唯一のリファレンスはここにあります:
http://docs.aws.Amazon.com/apigateway/latest/developerguide/how-to-method-settings.html
GET以外のメソッドタイプの場合は、[リクエストモデル]を展開し、[コンテンツタイプとモデル名]の場合は、コンテンツタイプを入力して、呼び出し元から提供されたデータを期待される形式に変換するモデルの名前を選択します。
したがって、検証よりも変換の方が重要なようですが、これが実際にどのように機能するかは特に明確ではありません。
[〜#〜]更新[〜#〜]
私はちょうどこのHackerNewsスレッドに気づきました:
https://news.ycombinator.com/item?id=988068
AWSエンジニアの1人がそこで応答し、次のように述べました。
検証にモデルは必要ありません。これらは、クライアントSDKでオブジェクトを生成するために使用されるだけです。
とにかく、API Gatewayでの入力/モデルの検証は、セキュリティの観点からの追加の防御層としてのみ考慮されるべきです。
あなたのサービスは常に入力/モデルを検証しなければなりませんそれはあなたが委任できるものではありません!