カテゴリ

最終更新日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_URLconfig 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_ENVconfig varをdevelopmentに設定して、そのようなモードを有効にすることができます。

本番Herokuアプリでこれらの設定変数を理解し、追跡することが重要です。 開発モードは通常、開発には最適ですが、パフォーマンスを低下させる可能性があるため、本番環境にはあまり適していません。

コメントを残す

メールアドレスが公開されることはありません。