1

サーバーレスは、ランタイム関数コードだけでなく、Lambda 関数の AWS 設定と API Gateway ルーティングの両方で変数を使用するための優れたワークフローを提供します。これについては、http://docs.serverless.com/docs/templates-variablesおよびHow to define variables in a DRY way で説明されています。

を使用してローカルで Lambda 関数をテストしているときに、変数を割り当てる方法がわかりませんsls function run -s stage。オプションを含めて Lambda でテストを実行すると、関数は正常に実行され-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"
}

functions/fn1/s-function.json:

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

functions/fn1/handler.js:

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

何かアドバイス?

ありがとう!

4

3 に答える 3

0

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

要約する:

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

適切な s-variables ファイルから変数を正常に読み取りますが、

serverless function run -s stage

ではない。対照的に、

serverless function run -s stage -d

おそらくプロジェクトにリージョンが1つしかないため、リージョンを明示的に指定しなくても正常に動作します。

于 2016-04-26T14:41:37.117 に答える
0

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

  • region という変数を出力しようとしていること
  • これを含む s-function.json ファイルがあることを確認します。

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

  • ラムダ関数で次のコードを使用して、領域変数の内容にアクセスしようとしています。 process.env.myEnvironmentVar;

これがあなたが得ている警告である場合: Serverless: WARNING: This variable is not defined: region

この場合、問題は次の 2 つのファイルのいずれにもこの変数を定義していないことです。

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

また、s-variables-common.json に値を追加してから s-variables-stage.json にも追加すると、s-variables-stage.json は s-variables-common.json の値をオーバーライドします。

于 2016-04-26T09:28:12.093 に答える
0

まず、次のコマンドを実行して、ステージ/リージョンの変数 json ファイルを _meta フォルダーに作成します。

sls stage create

次に、ステージ名とリージョンを指定します (Amazon アクセス キーとシークレット キーを指定する必要があります)。すると以下のjsonファイルが作成されます。

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

変数を手動で追加する場合は、次のようにします。これらの変数は、上記の s-variables-{your_region}-{your_stage}.json ファイルに追加されます

sls variables set

次に、キーと値を指定するか、次のように1行で指定します

sls variables set -k appEnv -v dev

お役に立てれば。

于 2016-11-23T07:01:45.863 に答える