2016-03-19 18 views
2

私は "環境"と呼ばれるステージ変数を設定しています。AWS API Gatewayでは、ステージ変数をLambda(Node)のイベント変数の一部として含めるにはどうすればよいですか?

JSONの一部としてPOSTリクエストで渡したいと思います。

例:

ステージ変数

  • 環境: "開発"

    { 
        "name": "Toli", 
        "company": "SomeCompany" 
    } 
    

    event変数は次のようになります

JSON。

{ 
    "name": "Toli", 
    "company": "SomeCompany", 
    "environment": "development" 
} 

これまでのところ私が思い付くことが最高の(統合要求の下)以下のマッピングテンプレートました:

{ 
    "body" : $input.json('$'), 
    "environment" : "$stageVariables.environment" 
} 

次にノードで私が使用しての

exports.handler = function(event, context) { 
    var environment = event.environment; 
    // hack to merge stage and JSON 
    event = _.extend(event.body, { 
     environment : environment 
    }); 
    .... 
+0

それを行うための正式な方法であると思われます:http://docs.aws.amazon.com/apigateway/latest/developerguide/amazon-api-gateway-using-stage-variables.html – TimoSolo

答えて

1

あなたの提案を行いますこのタイプのワークフローには、変数をパススルーするためのマッピングテンプレートが推奨されます。

0

$contextオブジェクトのステージ名にアクセスすることもできます。

統合要求:

{ 
    "environment" : "$context.stage" 
} 
2

あなたのAPI Gatewayの方法がラムダプロキシ統合を使用している場合は、すべてのステージ変数がevent.stageVariablesオブジェクトを介して利用できるようになります。私はevent.stageVariables内のすべてのプロパティの上に行くとprocess.env(例:Object.assign(process.env, event.stageVariables);)にそれらを追加する簡単な関数を作成し、私が現在働いているプロジェクトのために

+0

些細なことながら、この偉大な答えは非常に挑戦して来て.. 10倍 –

関連する問題