2016-04-26 2 views
1

サーバーレスは、ランタイム関数コードとラムダ関数とAPIゲートウェイルーティングのAWS構成の両方で変数を使用するための素晴らしいワークフローを提供します。これは、http://docs.serverless.com/docs/templates-variablesおよびHow to define variables in a DRY wayに記載されています。ローカルテストでサーバーレス変数

sls function run -s stageを使用してラムダ関数をローカルでテストしているときに変数を割り当てる方法がわかりません。 -dオプションを含めることでラムダでテストを実行すると機能は正常に動作しますが、必要な変数が割り当てられていないために失敗します。サーバーレスは、これらのメッセージを提供します。

Serverless: WARNING: This variable is not defined: region 
Serverless: WARNING: This variable is not defined: appEnv 

リンク2で説明したように、私はDRY変数を使用しています。具体的には:

S-変数-aguldman-useast1.json:

{ 
    "appEnv": "qa" 
} 

機能/ FN1/S-function.json:

{ 
... 
    "environment": { 
    "NODE_ENV": "${appEnv}" 
    } 
... 
} 

機能/ FN1/handler.js:

... 
var foo = process.env.NODE_ENV; 
... 

アドバイスはありますか?

ありがとうございます!

答えて

0

私はあなたの質問からいくつかの情報が欠けているので、私はここで少し推測する必要があります。だから私はそれを仮定します:

あなたは出力にあなたがそれでこれを持っているS-function.jsonファイル持って地域
  • という変数しようとしている

    • "environment": { "myEnvironmentVar":"${myEnvironmentVar}" }

    • あなたにラムダ関数でこのコードを使用した領域変数のコンテンツにアクセスしようとしている。 process.env.myEnvironmentVar;

    これはあなたが取得している警告である場合:

    • _meta /変数: Serverless: WARNING: This variable is not defined: region

      このような場合は、問題は、あなたがこの変数にこれらの2つのファイルのいずれかを定義していないということです

    • /s-variables-common.json _meta /変数/秒-変数-stage.json

    また、あなたは、S-変数-common.jsonに値を追加し、また、S-するためにそれを追加した場合variables-stage.json、s-var iables-stage.jsonはs-variables-common.jsonの値を上書きします

  • +0

    右。ひどい質問をお詫びします。私はちょうどそれを改善し、そうする過程で(予想通り)自分自身の質問に答えることができた。助けてくれてありがとう! –

    0

    -r us-east-1オプションをserverless function runに追加すると正常に動作します。面倒なことに、サーバーレスでは、リモートで(プロジェクトに単一のリージョンがある場合)実行されたときに-rオプションは必要ありませんが、ローカルで実行されるときには実行されます。

    serverless function run -s stage -r us-east-1 
    

    が正常に適切なS-変数ファイルから変数を読み込みますが、

    serverless function run -s stage 
    

    はしていません:

    を要約します。これとは対照的に、

    serverless function run -s stage -d 
    

    は私が唯一の私のプロジェクトには1つの領域を持っていると思われるので、明示的に指定されている領域なしで正常に動作します。

    0

    その後、自分の芸名と領域は(あなたがアマゾンのアクセスキーと秘密鍵を提供する必要が提供_metaフォルダに

    sls stage create 
    

    をあなたのステージ/地域の変数JSONファイルを作成するには、すべての実行は、次のコマンドの最初の)。次に、以下のjsonファイルが作成されます。

    _meta/variables/s-variables-{your_region}-{your_stage}.json 
    ie. _meta/variables/s-variables-us-east-1-dev.json 
    

    変数を手動で追加する場合は、次のようにします。

    sls variables set 
    

    を提出した後

    sls variables set -k appEnv -v dev 
    

    希望を次のようにキーと値または一列にを与える.json {your_stage} - これらの変数は、上記S-変数 - {your_region}に追加されますこれは役に立ちます。

    関連する問題