カテゴリ
最終更新日2020年3月09日
単一のアプリは、少なくとも開発マシンやHerokuの本番環境を含む複数の環境で常に実行されます。 オープンソースのアプリは、何百もの異なる環境に展開される可能性があります。
これらの環境はすべて同じコードを実行する可能性がありますが、通常は環境固有の設定があります。 たとえば、アプリのステージング環境と本番環境では、異なるAmazon S3バケットを使用する場合があります。
アプリの環境固有の設定は、(アプリのソースコードではなく)環境変数に格納する必要があります。 これにより、各環境の構成を単独で変更でき、セキュリティで保護された資格情報がバージョン管理に格納されないようになります。 環境にconfigを保存する方法の詳細については、こちらを参照してください。
従来のホストでは、またはローカルで作業するときは、.bashrc
ファイルに環境変数を設定することがよくあります。 Herokuでは、設定変数を使用します。
設定変数の管理
任意のメソッドを使用して設定変数を設定または削除すると、アプリが再起動され、新しいリリースが作成されます。
Config varの値は永続的であり、デプロイとアプリの再起動の間もその場所に保持されます。 値を変更する必要がない限り、設定する必要があるのは一度だけです。
Heroku CLIの使用
Heroku CLIのheroku config
コマンドを使用すると、アプリの設定変数を簡単に管理できます。
現在の設定var値の表示
$ heroku configGITHUB_USERNAME: joesmithOTHER_VAR: production$ heroku config:get GITHUB_USERNAMEjoesmith
設定varの設定
$ heroku config:set GITHUB_USERNAME=joesmithAdding config vars and restarting myapp... done, v12GITHUB_USERNAME: joesmith
設定varの削除
$ heroku config:unset GITHUB_USERNAMEUnsetting GITHUB_USERNAME and restarting myapp... done, v13
Herokuダッシュボードの
アプリのSettings
タブから設定varを編集することもできます:
プラットフォームAPIの使用
単純なHTTPS RESTクライアントとJSONデータ構造を使用して、Heroku Platform APIを使用してプログラムでアプリの設定変数を管理できます。 アプリの適切な権限を持つユーザーを表す有効なHerokuアクセストークンが必要です。
コードからconfig var値にアクセスする
Config varは、環境変数としてアプリのコードに公開されます。 たとえば、ノードで。jsアプリのDATABASE_URL
config varにprocess.env.DATABASE_URL
でアクセスできます。
例
あなたのS3アカウントキーのためのいくつかの設定変数を追加します:
$ cd myapp$ heroku config:set S3_KEY=8N029N81 S3_SECRET=9s83109d3+583493190Setting config vars and restarting myapp... done, v14S3_KEY: 8N029N81S3_SECRET: 9s83109d3+583493190
実行時に変数を読み取るようにコードを設定します。 たとえば、RubyではENV
パターンを使用して環境変数にアクセスするので、次のように初期化子を書くことができます:
AWS::S3::Base.establish_connection!( :access_key_id => ENV, :secret_access_key => ENV)
ノードで。js、環境変数にアクセスするにはprocess.env
を使用します:Javaでは、次のようにSystem.getenv('key')
への呼び出しを介してアクセスできます:
S3Handler = new S3Handler(System.getenv("S3_KEY"), System.getenv("S3_SECRET"))
Pythonでは、botoライブラリを使用します:
from boto.s3.connection import S3Connections3 = S3Connection(os.environ, os.environ)
これで、Herokuにデプロイすると、アプリは設定で設定されたキーを使用します。
Config varポリシー
- Config varキーは、すべてのプログラミング言語からアクセスできるように、英数字とアンダースコア文字(
_
)のみを使用する必要があります。 Config varキーにはハイフン文字を含めるべきではありません。 - Config varデータ(すべてのキーと値の組み合わせ)は、各アプリで32kbを超えることはできません。
- 設定varキーは二重アンダースコア(
__
)で始まるべきではありません。 - 設定varのキーは、Herokuプラットフォーム自体によって設定されていない限り、
HEROKU_
で始まるべきではありません。
アドオンと設定変数
アプリのアドオンをプロビジョニングする場合、通常は1つ以上の設定変数がアプリに追加されます。 これらの設定変数の値は、アドオンプロバイダーによっていつでも更新される可能性があります。
アドオンの値と設定変数の使用方法の詳細については、”アドオンの値を変更できる”を参照してください。
ローカル設定
Herokuローカルコマンドラインツールを使用して、アプリをローカルで実行します。
生産と開発モード
多くの言語とフレームワークは開発モードをサポートしています。 これにより、通常、より多くのデバッグが可能になり、変更されたソースファイルの動的な再ロードまたは再コンパイルが可能になります。
たとえば、Ruby環境では、RACK_ENV
config varをdevelopment
に設定して、そのようなモードを有効にすることができます。
本番Herokuアプリでこれらの設定変数を理解し、追跡することが重要です。 開発モードは通常、開発には最適ですが、パフォーマンスを低下させる可能性があるため、本番環境にはあまり適していません。