背景
ローカルで色々と遊びたい。
ただ、AWS上の本番環境への影響は避けたい。
また、コマンドの入力も極力減らしたい。
そういう時に使えるTIPS。
復習もかねて、アウトプットしてみる。
前提
- Node.js(v16.14.2)
- VSCode
- AWSアカウント
結論から先に
package.jsonのscriptsを以下のように設定し、
コマンドでnpm run start
を実行すると、
実はstart
が実行される前に、prestart
が実行される。
"scripts": {
"prestart": "setx AWS_PROFILE kenny_test",
"start": "env-cmd -f .env npm run start-without-env",
"start-without-env": "nodemon ./index.js",
}
流れとしては、以下のようになる。
1.npm run start
をコマンドで実行
2.scriptsの、prestart
が実行される
→AWSプロファイルのkenny_testがセットされる
3.scriptsの、start
が実行される
4.scriptsの、start-witouht-env
が実行される
実際にコマンド上で、npm run start
を実行してみると、以下のように返ってくる。
PS C:********\src> npm run start
> hello_world@1.0.0 prestart
> setx AWS_PROFILE kenny_test
成功: 指定した値は保存されました。
> hello_world@1.0.0 start
> env-cmd -f .env npm run start-without-env
> hello_world@1.0.0 start-without-env
> nodemon ./index.js
npm run start
を実行すると、
上記のとおり、先にprestart
が実行されている事がわかる。
【1】AWSプロファイル(参考URL)
~/.aws
のcredentialsには、以下のように設定する。
(①default, ②kenny_test)
[default]
aws_access_key_id = hogehoge
aws_secret_access_key = gehogeho
region = egohegoh
[kenny_test]
aws_access_key_id = test
aws_secret_access_key = example
例えば、
defaultは【本番環境へ接続するキー】が保存されており、
kenny_testは【開発環境へ接続するキー】が保存されているとする。
[default]
region = ap-northeast-1
output = json
[kenny_test]
region = ap-northeast-1
output = json
【2】package.jsonのscripts
以下を参考にさせて頂いた。(参照元)
特定のコマンド実行時にそのスクリプトが実行される前に実行させたいスクリプトがある場合は、
preを付与したスクリプト名で記述します。
例として実際にコマンド入力で実行するのがstartというスクリプト名だった場合、その前に実行させたいものはprestartというスクリプト名にします。
"scripts": {
"prestart": "setx AWS_PROFILE kenny_test",
"start": "env-cmd -f .env npm run start-without-env",
"start-without-env": "nodemon ./index.js",
}
prestart
で、kenny_testを設定することで、
開発環境へ接続する為、ヒューマンエラーを防ぐ事ができる。
終わりに
本番環境への間違いを避けたい場合、
prestart
を事前に設定することで、
影響を避けられる為、非常に有用な手だと思う。