Heroku上で環境変数を設定したい、もしくは取得したい場合の手順をまとめました。
環境変数は主に下記2種類の方法で取り扱うことができます。
- Heroku CLIを利用してコマンドにて設定 & 取得
- Herokuの管理画面にて設定 & 取得
どちらの方法もこの記事で解説しています。
また、Herokuが環境変数を設定するときのルールも設けているので、変数を書き換えるときなどは参照すると良いと思います。
実際に設定した変数を使う方法もカバーしているので、ぜひこの記事でHeroku上における環境変数の取り扱いをマスターしてしまいましょう。
この記事でわかること
・Heroku上の環境変数の取り扱い方法
・環境変数を設定するときのルール
・プログラム上で環境変数を参照する方法
Heroku CLIを利用してコマンドにて環境変数を設定 & 取得
Heroku Command Line Interface(CLI)は、Heroku上のアプリをターミナルから直接操作するものです。
設定されている環境変数を確認
すでに設定されている環境変数をまとめて確認したい場合は、下記コマンドにて確認できます。
$ heroku config
特定の変数のみ参照したい場合は以下。
$ heroku config:get 環境変数名
環境変数を設定する
すでにある環境変数を書き換える場合も、新しく設定する場合も同じコマンドで可能です。
$ heroku config:set 環境変数名=設定内容
=の前後にスペースを入れないように注意
なお、下記のように同時に複数設定することも可能です。
$ heroku config:set S3_KEY=8N029N81 S3_SECRET=9s83109d3+583493190
環境変数を削除する
登録済みの環境変数を削除する場合は以下。
$ heroku config:unset 環境変数名
Herokuの管理画面にて環境変数を設定 & 取得
Heroku Dashboard上で環境変数の設定を編集することができます。
「Settings」メニューを開いてください。
Config Vars欄にて環境変数を追加、編集、削除が可能です。
Herokuにおいて環境変数を設定するときのルール
Herokuでは、環境変数を設定するにあたり4つのルールを設定しています。
- キーには英数字とアンダースコア(
_
)のみを利用する - 環境設定のデータは32KB以下に抑える
- キーの先頭に二重のアンダースコア(
__
)は利用しない - (Herokuでもともと設定されているものを除き)キーを
HEROKU__
で始めない
設定した環境変数がすべてのプログラミング言語からアクセスできるようにするなど、動作環境を保証するために守るべきルールです。
Heroku上の環境変数だからと、安易にHEROKU_KEY
などとしないように注意しましょう。
設定した環境変数をプログラム内で使用する方法
設定した環境変数は、簡単にプログラム内で参照することができます。
例として、下記の通り環境変数を設定したとします。
$ heroku config:set S3_KEY=8N029N81 S3_SECRET=9s83109d3+583493190
Heroku上でよく使われる4言語において、キーS3_KEY
, S3_SECRET
をどうやって参照するのかをご紹介します。
Rubyの場合
ENV['KEY']
の形式で環境変数にアクセスできます。
AWS::S3::Base.establish_connection!(
:access_key_id => ENV['S3_KEY'],
:secret_access_key => ENV['S3_SECRET']
)
Node.jsの場合
process.env
を利用して環境変数にアクセスします。
const aws = require('aws-sdk');
let s3 = new aws.S3({
accessKeyId: process.env.S3_KEY,
secretAccessKey: process.env.S3_SECRET
});
Javaの場合
System.getenv('key')
の形で環境変数にアクセス可能です。
S3Handler = new S3Handler(System.getenv("S3_KEY"), System.getenv("S3_SECRET"))
Pythonの場合
botoライブラリを利用して、環境変数にアクセスできるようにします。
from boto.s3.connection import S3Connection
s3 = S3Connection(os.environ['S3_KEY'], os.environ['S3_SECRET'])
まとめ
作ったプロダクトをHeroku上にデプロイするときに必ず必要になる環境変数。
取り扱い方法自体はかなりシンプルなので、困ったときはこの記事を参照しながら設定していってくださいね。
コメント