はじめに
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) だとこれだけではまだ要件が足りないのですが、使えるところでは使っていきたいですね。