0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Apexで環境変数を切り替える話

Last updated at Posted at 2017-03-01

Apexで環境変数を切り替える話

Apexについて

あとclassmethodのblog記事とか読むといいと思います。
http://dev.classmethod.jp/cloud/aws/how-to-manage-aws-lambda-functions-with-apex/

やりたいこと1 devとかprodとかで環境変数を切り替えたい

このへん のやり方とかつらつら見てたんですが、最新(現在v0.13.0)だと公式でサポートされていました。

├── functions
│   └── function-name
│       ├── index.js
│       └── package.json
└── project.json

なところを、

├── README.md
├── functions
│   └── function-name
│       ├── index.js
│       └── package.json
├── project.development.json
├── project.json
├── project.production.json
└── project.staging.json

てな感じに分けて、

$ apex deploy -e development

とすればproject.development.jsonが読み込まれるし、

$ apex deploy -e staging

とすればproject.staging.jsonが読み込まれます。
VPCが違うとか、RDSの接続先が違うとかはこれで解消。

やりたいこと2 手元で実行する際もどうにかしたい

といったあたりを踏まえて、↓のような処理を追加。
※ 別途project.local.json作ってます。

if (!process.env.AWS_LAMBDA_FUNCTION_NAME) {
  var path = '../../project.local.json';
  if (process.env.NODE_ENV) {
    path = '../../project.' + process.env.NODE_ENV + '.json';
  }
  var parsedObj = JSON.parse(fs.readFileSync(path, 'utf8'));

  Object.keys(parsedObj.environment).forEach(function (key) {
    process.env[key] = process.env[key] || parsedObj.environment[key];
  });
}

これで手元でもLambdaでも同じノリで設定が書けるようになりました。

まとめ

PHP書くって当初聞いていたんですが、なぜかNode.jsを書いています。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?