2016-06-24 28 views
4

AWS APIゲートウェイでリダイレクト作業を実行しようとしています。私はメソッドのレスポンスをヘッダーとインテグレーションレスポンスにLocationを含めるように設定しました。パラメータを次のように設定しました:Location = integration.response.body.location。ただし、APIをテストすると、場所にリダイレクトする代わりに、APIページの場所のテキストが表示されます。誰かがこれまでに遭遇したことはありますか?応答を使用してaws api gatewayからリダイレクト302

表示される文字列は実際には正しい場所ですが、APIはそのURLに私をリダイレクトしません。

+0

実際にリダイレクトしたい場所はどこですか?それはaws-lambdaから何かですか? – Andremoniy

+0

@Andremoniy最初のページはフォームであるS3からです。送信されると、APIを介してAWSラムダ関数が呼び出され、APIが応答すると、同じバケット内の別のhtmlファイルにリダイレクトします。私は現時点で問題を切り分けました。 {}内に実際の場所を文字列として置くと、リダイレクトが機能します。しかし、JSONオブジェクトを変数に格納してその変数をコールバックに渡すと、リダイレクトは機能しません。 –

答えて

0

APIエンドポイントが302を返していますか?

メソッドに定義されている302以外の2xxまたは3xx応答コードがないことを確認してください。 「成功した」応答コードマッピングは1つしか作成できません。 2xxおよび3xxコードはすべて成功コードとみなされます。

+0

はい、私は302の応答を得ていると確信しています。なぜなら、表示される文字列beigは、私がリダイレクトしたい場所であるからです。値をvarに格納してから変数をコールバックの一部として渡すと、動作していないように見えます。私がコールバックに直接入れると、それは動作します... –

0

[OK]を問題が見つかりました。私が場所を格納していた変数は、オブジェクトではなく文字列として定義されています。なぜなら、Webページはそれをテキストとして表示しているからです。これでページにリダイレクトされます。

0

まず、「location」ヘッダーのメソッド応答を作成する必要があります。次に、ラムダの応答からロケーションヘッダー値をマップしたいとします。 Node.jsランタイムでは、それをintegration.response.body.errorTypeにマップすることができます。あなたが実行してリダイレクトすることができますこの方法:

// Returns 302 or 301 
var err = new Error("HandlerDemo.ResponseFound Redirection: Resource found elsewhere"); 
err.name = "http://a-different-uri"; 
context.done(err, {}); 

をフルWRITEUPについては、以下を参照してください。https://aws.amazon.com/blogs/compute/redirection-in-a-serverless-api-with-aws-lambda-and-amazon-api-gateway/

0

私はここにも以下の後に、この問題を持っていた:https://aws.amazon.com/blogs/compute/redirection-in-a-serverless-api-with-aws-lambda-and-amazon-api-gateway/

も取得するために続けていましたテキスト付きの200応答(APIゲートウェイで200を削除したにもかかわらず)

私たちのチームはAPIゲートウェイの変更を再デプロイする必要がありました。 (ラムダは単に節約する必要があり、API Gatewayは実際に再デプロイする必要があります)

関連する問題