2015-12-20 4 views
14

私はラムダエンドポイントにGETリクエストを行うときに、URL文字列にval1とval2のを渡したいと言う:GETリクエストを使用してAWSラムダ関数に引数を渡すにはどうすればよいですか?

https://xyz.execute-api.amazonaws.com/prod/test?val1=5&val2=10 

そして、私は2つの入力、val1とval2のを合計する簡単な関数があります。

def lambda_handler(event, context): 
    # How do I get at val1 and val2?? 
    return {'result': val1 + val2} 

AWS APIゲートウェイのメソッドリクエストのURLクエリ文字列パラメータにval1とval2を追加しました。しかし、どのように私は関数内でそれらにアクセスできますか?

+0

'event'と' context'の両方を印刷しようとしましたか? [ドキュメントのサンプル](http://docs.aws.amazon.com/lambda/latest/dg/python-programming-model-handler-types.html)をご覧ください。 – albert

+0

データを渡すと正しく、あなたは 'event'オブジェクトに' event.val1'のようなものでアクセスできるはずです(JSのオブジェクトのプロパティにアクセスする方法は少なくともあります) – JohnAllen

答えて

16

APIゲートウェイのメソッド要求セクションのクエリ文字列パラメータを定義したら、その後、メソッドの実行セクションにマッピングテンプレートを定義する必要があります。 メソッド実行セクションで

マッピング・テンプレートを選択し、は、マッピングテンプレートを追加]をクリックします。 コンテンツタイプためapplication/jsonを入力し、次のようになりますマッピングテンプレートを作成します。

{ 
    "va1": "$input.params('val1')", 
    "val2": "$input.params('val2')" 
} 

これは、(いずれかのパスに渡される、またはヘッダーで、またはで入力パラメータを取るためにAPIゲートウェイを教えてくれますクエリパラメータ)をval1val2と呼び、イベントデータのラムダ関数にval1val2として送信します。

+2

ありがとう。私は、マッピング・テンプレートがメソッド実行ページの統合要求の下にあると付け加えます。このリンクは役に立ちました:https://forums.aws.amazon.com/thread.jspa?threadID=192601まだいくつかの問題を抱えていますが、少なくとも私はどこを見るかを知っています。 – capitalistcuttle

+1

多分、私はこれらすべての層に何らかの理由を見出すでしょうが、一見すると、これは私が想像していたよりもはるかに面倒だと言わなければなりません。 Pythonはイントロスペクターブルなので、AWS Lambdaは関数シグネチャを調べることで自動的にマッピングを作成できます。 – capitalistcuttle

+2

このリンクは、マッピングテンプレートの編集時にさまざまな種類のパラメータを含める方法についていくつかの詳細を明らかにしました:http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html #入力変数参照 – python1981

関連する問題