2016-04-11 10 views
2

私はserverlessフレームワークの助けを借りてawsプロジェクトを開始しましたが、ラムダ関数の実行に関する質問が1つあります。サーバレスフレームワークコマンドラインで入力パラメータ付きラムダ関数を実行

ラムダ関数を入力パラメータで実行するにはどうすればよいですか?私はアマゾンコンソール、ラムダテスト設定 - >テストイベントを通じてそれを行うことができます。しかし、私はserverlessで対応する関数を見つけることができません、誰も知っていますか?ラムダの部分については

おかげ

答えて

3

あなたはevent.jsonファイルを使用することができます

{ 
    "principalId": "1234", 
    "inputVar": "foo" 
} 

をしてからsls function runを実行します。

docsによると、ステージを指定しないと関数がローカルで実行されます。ステージを指定すると、関数は対応するステージでデプロイされたコードを実行します。しかしドキュメントは時代遅れと思われる、あなたも同じよう-dフラグを渡す必要があります:このコマンドは、ここでは、ローカルevent.jsonファイル

からのパラメータで、あなたの展開ラムダ関数を呼び出します

sls function run myFunction -s dev -d 

機能の実行オプションについてsource codeです。 APIG統合のための

documentationでいくつかのサンプルがあります。

テンプレートを使用したくない場合は、s-function.jsonに関連するコードをエンドポイントの説明の中に挿入するだけです。

"endpoints": [ 
    ... 

    "requestTemplates": { 
     "application/json": { 
     "principalId": "$context.authorizer.principalId", 
     "apiKey": "$context.identity.apiKey", 
     "inputVar": "$input.json('inputVar')" 
     } 
    } 
    ... 
    ] 

構文は、API Gateway Accessing the $input Variable docに記載されているとおりです。

+0

ありがとうAlper、それは今私のために働く。あなたがmetioned-dオプションを使用している間に、ラムダ関数とエンドポイント(apiゲートウェイ)をアマゾンにデプロイせずにアップロードするだけです(新しいバージョンを毎回作成せずに)、時にはamazon 。 –

+0

afaik no。自動バージョン管理は常に起動されます。 pruneプラグインを使用して古いバージョンを削除することができます。 –

+1

関数 '$ serverless deploy function -f functionName'を使用して1つをデプロイできます。プロジェクト全体を展開するよりもはるかに高速です。 CloudFrontの更新をスキップします。ここにいくつかのサンプルコード - [http://serverless-stack.com/chapters/deploy-the-apis.html](http://serverless-stack.com/chapters/deploy-the-apis.html?utm_source= ) – Frank

関連する問題