2016-06-14 3 views
2

私はいくつかのフィールドを持つDynamodbテーブルを持っています - my_idはPrimaryKeyです。 APIゲートウェイでは、パラメータ{my_id}を受け取るメソッドで応答を設定しました。AWS APIゲートウェイ - クエリで何も返されない場合は404に変更されます

次に、渡されたパラメータを受け取り、一致するすべてのフィールドを返すためにテーブルを照会する統合要求マッピングテンプレートがあります。

次に、返されたアイテムを必要な方法でクリーンアップするインテグレーション応答マッピングテンプレートがあります。

これはすべて完璧に機能します。

どのようにすればいいのか分からないことは、渡されたパラメータがテーブル内のものと一致しない場合です。どのようにして200状態から404状態に変更するのですか?

渡されたパラメータが何も一致しない場合は、エラーが発生しないことから、何も返されません。

インテグレーション応答のマッピングテンプレートを変更して、まずパラメータが空であるかどうかを確認してから、何らかの形でレスポンスステータスを変更するように指示する必要があるようです。

ラムダを使っている人とこのタイプのことに関する情報を見つけることができますが、私はラムダを使用していません - DynamodbテーブルとAPIゲートウェイだけです。

+0

API Gateway GETメソッドにMethod Response of 404を設定しましたか? DynamoDBレスポンスは、インテグレーション応答のAPIゲートウェイエラーコードにマップできるエラーコードを返します。 [Docs here](http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html) – esperluette

+0

問題は、私はクエリを実行しており、クエリで結果が返されない場合、エラーはありません。テーブルが間違っているとエラーが発生しますが、マッピングテンプレートに焼き付けられているので、テーブルが間違っていることはありません。クエリが結果を返さないときにエラーが発生します。 – Ron

+0

ここの文書(http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html)は、「Count」:数値のペアを含む大きなJSON応答を受け取ることを示しているようです。 JSONを解析してCount要素が0であるかどうかをチェックし、それを404エラーにマップするために、インテグレーションレスポンスのボディマッピングテンプレートを使用できるように見えます - http:// docs .aws.amazon.com/apigateway/latest/developerguide/models-mappings.html – esperluette

答えて

0

現在、Apiゲートウェイは統合応答のステータスコード(ここではdynamodbレスポンスコード)を使用してステータスコードのマッピングをサポートしています。唯一の回避策は、エラー正規表現http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-method-settings-execution-console.htmlを使用してマップできる異なるエラーメッセージを出力するラムダ関数を使用することです。

+0

残念ながら、これは本当です。たぶん彼らはいつかそれを変えるだろう。 – Ron

関連する問題