コマンドラインによるインストール
アドオンはコマンドライン操作でも追加することができます。アドオンを追加する「heroku addons:create」や、すでに特定のアプリケーションに追加されたアドオンを別のアプリケーションに追加する「heroku addons:attach」の2つのコマンドがあります。
$ heroku addons:create [アドオン名]:[プラン] --app [アプリケーション名] $ heroku addons:attach [(追加により付与された)アドオン識別名] --app [アプリケーション名]
例えば、Heroku Postgresを「shrouded-peak-81347」アプリケーションに追加するには、次のコマンドを実行します。
$ heroku addons:create heroku-postgresql:hobby-dev --app shrouded-peak-81347 Creating heroku-postgresql:hobby-dev on ⬢ shrouded-peak-81347... free Database has been created and is available ! This database is empty. If upgrading, you can transfer ! data from another database with pg:copy Created postgresql-deep-74187 as DATABASE_URL Use heroku addons:docs heroku-postgresql to view documentation
これで、Heroku Postgresがアプリケーション「shrouded-peak-81347」に追加され、「postgresql-deep-74187」と言う識別名が付与されました。この追加したHeroku Postgres「postgresql-deep-74187」を別のアプリケーション「aqueous-earth-70365」に追加するには、次のコマンドを実行します。
$ heroku addons:attach postgresql-deep-74187 --app aqueous-earth-70365 Attaching postgresql-deep-74187 to ⬢ aqueous-earth-70365... done Setting DATABASE config vars and restarting ⬢ aqueous-earth-70365... done, v19
設定変数によるアドオンの利用
さて、無事アドオンが追加されましたが、アプリケーションからはどのように使えば良いのでしょうか? 例えばHeroku Postgresでは、追加したアドオンの管理画面からID/パスワード/接続URLなどの情報を確認し、それをアプリケーションのプログラム内に設定して利用することもできますが、もっと便利な方法があります。それが設定変数です。
設定変数は、アプリケーションから呼び出せる環境変数のことです。ID/パスワード/接続URLなどは、ソースコードに書き込むのではなく設定変数から呼び出して使用することで、利用の容易性とプログラムの可搬性を高めることもできます。Heroku Postgresアドオンを追加すると、次のような設定変数がアプリケーションに追加されます。設定変数はアプリケーションのダッシュボードにある[Settings]タブの[Config Variables]で確認・設定することができます。
例えば、Node.jsプログラムからHeroku Postgresへの接続は、次のように記述することができます。
var pg = require('pg');
pg.defaults.ssl = true;
pg.connect(process.env.DATABASE_URL, function(err, client) {
if (err) throw err;
console.log('Connected to postgres! Getting schemas...');
client
.query('SELECT table_schema,table_name FROM information_schema.tables;')
.on('row', function(row) {
console.log(JSON.stringify(row));
});
});
Postgresアクセス用のモジュールpgを読み込み、pg.connectの引数として、設定変数に定義されているDATABASE_URLを渡しています。pgモジュール内で接続情報が自動的に接続ユーザー名、パスワード、URLなどに分解されて利用されるため、非常にすっきりとした記述で、データベースへのアクセスを実現できます。
SSO(Single SIGN ON)でアドオンのダッシュボードにも簡単アクセス
アドオンは、それぞれ専用の管理画面を持っていることがあります。アプリケーションのダッシュボードに表示される各アドオン名をクリックすると、管理画面に遷移します。外部ベンダーが提供しているアドオンによっては、ベンダー提供サービスへのアカウント作成と連携をアドオン追加時に行ってくれます。例えば、画像加工とホスティングのCloudinaryですが、アドオン名をクリックすると、CloudinaryのWebサイトへSSOで遷移し、管理画面が表示されます。個別に外部ベンダーサイトでの登録や、連携のための設定を行う必要はありません。
