はじめに
JavaScript でプログラムを書いていると機密情報を含んだ設定値を記述することがあります。
私の場合は、AWS のアクセスキーなどでした。
それでいろいろと調べていたところ、JavaScript のコードでprocess.env.XXXXXという記述を何度か見かけました。
process.env.XXXXXとはなにかという説明がなく使われていたので最初分からなかったのですが、これはdotenvというツールを用いて、機密情報の設定値を JavaScript のコードから外部ファイルに外だししたものでした。
この記事では、dotenvの使い方をご紹介します。
dotenv のインストール
npm か yarn のどちらかでプロジェクトにdotenvをインストールします。
> npm install dotenv
or
> yarn add dotenv
dotenv の設定
dotenvはプロジェクトのルートに.envという設定ファイルを作成する必要があります。
後述のサンプルプログラムで使用する内容なら、以下のように記述します。
S3_BUCKET_NAME=S3BucketName ACCESS_KEY_ID=AccessKeyID SECRET_ACCESS_KEY=SecretAccessKey DISTRIBUTION_ID=DistributionID
この情報が GitHub などに上がったら大変なので、.gitignoreに以下の設定をちゃんとしておきます。
.env
サンプルプログラム
では実際にどのようにdotenvを使うのかですが、以下の記事で使用した JavaScript のビルドファイルで試してみます。
元々の JavaScript コードの設定値部分は以下のようになります。
const config = { folderPath: '../build', // path relative script's location s3BucketName: '{S3バケット名}', accessKeyId: '{アクセスキーID}', // IAM user's AccessKeyID secretAccessKey: '{シークレットアクセスキー}', // IAM user's SecretAccessKey DistributionId: '{CloudFrontのID}' // DistributionId of CloudFront };
これをdotenvを使ったら以下のようなコードになります。
require('dotenv').config(); const config = { folderPath: '../build', // path relative script's location s3BucketName: process.env.S3_BUCKET_NAME, accessKeyId: process.env.ACCESS_KEY_ID, // IAM user's AccessKeyID secretAccessKey: process.env.SECRET_ACCESS_KEY, // IAM user's SecretAccessKey DistributionId: process.env.DISTRIBUTION_ID // DistributionId of CloudFront };
コードの先頭あたりでrequire('dotenv').config();を呼び出す必要がありますが、機密情報がコードからなくなりすっきりしましたね。
おわりに
dotenv を使うと、簡単に機密情報の設定値を JavaScript コードから外出しできます。
SPA (Single Page Application) だとこれだけではまだ要件が足りないのですが、使えるところでは使っていきたいですね。