2017-05-11 47 views
2

私は、ローカル開発のためにサーバーレスとサーバーレス・ローカルを使用しています。serverless.ymlの外部ファイルから環境変数を設定する

私はアプリケーションでnode.envから取得する環境変数への参照を保持する外部ファイルを持っています。

私が理解から、私はそのような

dev: 
    AWS_KEY: 'key', 
    SECRET: 'secret 
test: 
    AWS_KEY: 'test-key', 
    SECRET: 'test-secret', 
etc: 
    ... 

としての私の環境変数を設定し、これらの環境変数は、私のserverless.ymlに次の行を通じて私のアプリで

provider: 
    name: aws 
    runtime: nodejs4.3 
    stage: ${opt:stage, self:custom.default_stage} 
    deploymentBucket: serverless-deploy-packages/${opt:stage, self:custom.default_stage} 
    environment: 
    ${file(./serverless-env.yml):${opt:stage, self:custom.default_stage}} 
が含まれていることができるはずです

その後、コマンドラインで、私は呼ん

serverless offline --stage dev --port 9000

これは私のアプリで正しいvarsを含むと思っていましたが、うまくいきません。これはどのように動作するはずですか?私はここで何か間違っていますか?

答えて

1

docsから:

あなたは変数に外部ファイルの内容を設定することができます。

file: ${file(./serverless-env.yml)} 

以降、あなたはファイル変数にアクセスするには、この新しい変数を使用することができます。

secret: file.dev.SECRET 

それとも、ファイルを直接使用することができます。

secret: ${file(./serverless-env.yml):dev.SECRET} 
+0

ドキュメントは不完全ですが、必要以上に冗長であると記述することで「できる」ことができます。 yamlの環境エントリに直接値を渡すと、yamlにエラーが発生していないことがわかりました。 – pedalpete

3

あなたは今もサーバーレスフレームワークとリモート非同期の値を使用することができます。 https://serverless.com/blog/serverless-v1.13.0/

を参照してください。これは、あなたがS3またはリモート・データベースから値を呼び出すことができることを意味など

例:

serverless.yml

service: serverless-async-vars 

provider: 
    name: aws 
    runtime: nodejs6.10 

custom: 
    secret: ${file(./vars.js):fetchSecret} # JS file running async/promised 

module.exports.fetchSecret =() => { 
    // async code 
    return Promise.resolve('SomeSecretKey'); 
} 
vars.js
0

私はこれを正しくしましたが、ファイルを間違って参照していました。

これはドキュメントには表示されませんが、environmentにファイルを渡すと、yamlファイルが含まれ、上記の構造が機能します。

関連する問題