2

AWS APIゲートウェイとAWSラムダで動作するように既存のアプリケーションを再構築しています。現在のアプリケーションでは、SpringBootアプリケーションとSpring REST Controller注釈として実装されているREST APIとしての機能を公開しています。AWSラムダ関数のAWS APIゲートウェイURIからリクエストとパス変数にアクセスするにはどうすればいいですか

リクエスト本体JSONをAPIゲートウェイからラムダ関数に取得できますが、特定のケースでは、リクエストオブジェクトの変数とラムダ関数でアクセス可能なパス変数が必要になることがあります。私はラムダコンテキストオブジェクトを見ましたが、この点で私を助けることはできませんでした。

例のAPIのURL:私は 次のAPI呼び出しGET http://www.example.com/users/{id}/alertsのid変数に似た変数のパスを使用します。 {id}がパス変数になります。リクエスト変数の使用例は、アラートIDがクエリ文字列パラメータとして渡される次のURLにあります。 - GET http://www.example.com/users/{id}/alerts?id=1234

これを行うには推奨される方法はありますか?私は別のラムダ関数に各APIを結びつけることを目指しているので、私はRequestHandlerインターフェースを使いたくありません。

+0

「リクエストオブジェクトの変数」と「ラムダ関数でアクセス可能なパス変数」についての例を挙げてください。 –

答えて

1

あなたはAWSの統合タイプを使用している場合:

は、あなたのラムダ関数にリクエストボディで$ input.params(「ID」)プロパティを送信するためにマッピングテンプレートを使用してください。

あなたはAWS_PROXY積分型を使用している場合:

あなたは、着信イベントの「pathParameters」プロパティを使用して、パスのパラメータにアクセスすることができます。詳細はdocsをご覧ください。

+0

ありがとう!私は、マッピングテンプレートアプローチを使用して、パスパラメータを取得し、ラムダ関数に変数を要求しました。 – kl27driver

0

ラムダプロキシインテグレーションタイプを使用することをお勧めします。必要なすべての情報を最小限の手間で利用できるようにします。だから、 、次のようにあなたが読む必要があるプロパティが利用できるようになります:

  • あなた/users/...パス:クエリ文字列にevent.path
  • があなたのID:event.queryStringParameters.id
  • あなたにもHTTPメソッドが必要になります:event.httpMethod IDのような
  • あなたのパスパラメータ:event.pathParameters

lambda proxy integration option in api gateway

詳細情報が必要な場合はお知らせください。

+0

ラムダプロキシ統合型は、Javaでサポートされていないようなイベントオブジェクトを通じてデータを利用可能にするようです。私がマッピングテンプレートのアプローチを使用しているもう一つの理由は、Java POJOにマップされたJSONリコースボディを取得し、ラムダ関数に注入することです。 – kl27driver

+0

ラムダプロキシ統合型は、Javaでも確実に動作します –

+0

Javaでの実行方法については、このリンクを参照してください。 http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-create-api -as-simple-proxy-for-lambda.html?shortFooter = true#api-gateway-proxy-integration-lambda-function-java 引用: "この関数は、必要な*を含むJSON文字列を返します。 API GatewayがHTTPレスポンスとしてクライアントに返すためには、* statusCode **と適用可能な*ヘッダー*と** body **が必要です。 しかし、ええ、Javaで初めて試みたのは痛いことでした。それが正しい道を見つけるのに役立ちます。 –

関連する問題