外部リソースから Common Runtime Heroku Postgres データベースに接続する
最終更新日 2024年04月30日(火)
Table of Contents
Common Runtime データベースはどこからでもアクセスできます。Postgres クライアントを使用しているすべてのアプリケーションが、これらのデータベースに接続できます。Common Runtime で利用可能な Postgres プランは Essential、Standard、Premium です。
Private および Shield 層のデータベースはアクセスが制限されています。詳細は、「外部リソースから Private または Shield の Heroku Postgres データベースに接続する」を参照してください。
アプリの環境設定
すべての Heroku Postgres データベースは Heroku アプリケーションに属します。アプリケーションの名前は data.heroku.com のデータベースページで、または Heroku CLI から heroku pg:info
を使用して確認できます。アプリケーションにコードがない場合でも、データベース URL を含むアプリ環境設定を介してデータベースにアクセスできます。この設定は Heroku によって管理され、データベースのネットワークの場所と資格情報は基本的にここから取得します。
heroku pg:psql
を使用して接続する
CLI から Heroku Postgres データベースに接続するには、Heroku CLI から heroku pg:psql
コマンドを実行します。このコマンドでは、デフォルトで DATABASE_URL
のプライマリデータベースに接続しますが、次のようにして接続先のデータベースを指定できます。
USAGE
$ heroku pg:psql [ADDON]
EXAMPLE
$ heroku pg:psql postgresql-sinuous-83720
heroku pg:psql
は、PostgreSQL のネイティブ対話型ターミナル psql
のラッパーです。Heroku CLI がインストールされていない場合、Postgres をローカルにインストールし、psql <DATABASE_URL>
を実行して Heroku Postgres データベースに直接接続することもできます。
デスクトップ SQL クライアントから接続する
デスクトップ SQL クライアントから Heroku Postgres データベースに接続するには、heroku pg:credentials:url
を実行して Postgres 接続文字列を取得します。
$ heroku pg:credentials:url DATABASE
Connection info string:
"dbname=dee932clc3mg8h host=ec2-123-73-145-214.compute-1.amazonaws.com port=6212 user=user3121 password=98kd8a9 sslmode=require"
Postgres 接続文字列には次の情報が含まれています。
- データベースの URI。例:
dbname=dee932clc3mg8h host=ec2-123-73-145-214.compute-1.amazonaws.com
- データベースの資格情報。例:
user=user3121
、password=98kd8a9
- SSL 接続。例:
sslmode=require
Heroku の外部のアプリやサービスから接続する
Heroku Postgres データベースには、多くのプログラミング言語およびフレームワークからアクセスできます。Heroku Postgres データベースとの接続の作成例については、「Heroku Postgres への接続」を参照してください。
Salesforce 製品から接続する
Heroku と Salesforce プラットフォームを統合するには、いくつかの方法があります。どの統合方法を選ぶのが正しいのかは、ユースケース、統合するソース、データ量、統合の頻度などによって異なります。Heroku を Salesforce と統合するためのすべてのオプションについては、「Heroku と Salesforce プラットフォームの概要の統合」の記事を参照してください。以下、Heroku Postgres と Salesforce の統合例をいくつか示します。
Heroku Connect
Heroku Connect は、Salesforce 組織と Heroku Postgres データベースの間でデータを同期するアドオンです。宣言型インターフェースを使用して、Postgres のテーブルと同期する Salesforce オブジェクトのマッピングを選択および作成します。Heroku Connect では、Heroku Postgres から Salesforce への一方向の同期とデータの読み取りを実行できます。逆に、Salesforce から Heroku Postgres への双方向の同期とデータの書き込みを設定することもできます。
Heroku Connect の使用を開始するには、「クイックスタート: Heroku Connect」を参照してください。
Heroku External Objects と Salesforce Connect
Heroku External Objects には、Heroku Connect で使用するように設定されている Heroku Postgres データベースの oData ラッパーが用意されています。Heroku External Objects を使用すると、ラッパーによって生成される RESTful エンドポイントを使用して、他の Web サービスで Heroku Postgres データベースからデータを取得できます。Salesforce Connect と組み合わせて、Salesforce 組織から直接、Heroku Postgres のデータを表示、編集、検索できます。
Salesforce 組織で Heroku External Objects の使用を開始するには、「Heroku External Objects と Salesforce Connect」を参照してください。
MuleSoft
MuleSoft は、複雑なマルチシステム統合を作成したり、API の完全なライフサイクルを管理したりするための iPaaS (integration Platform as a Service) です。MuleSoft ではバックエンドのシステムとプロセスの複雑さが抽象化され、スケーラブルで管理しやすい、Heroku アプリから呼び出せる API が提供されます。データベースコネクターを使用すると、Heroku Postgres などの JDBC 準拠データベースに接続できます。
Heroku Postgres で MuleSoft コネクターの使用を開始するには、「MuleSoft への Heroku データサービスの接続」を参照してください。
CRM Analytics
CRM Analytics は、任意のデータソースを操作する顧客およびビジネス分析プラットフォームです。コネクターによって、Salesforce の内部と外部にあるデータ (Heroku Postgres データなど) を接続する方法が提供されます。
CRM Analytics に Heroku Postgres データベースを接続するには、「Heroku Postgres 接続」を参照してください。
考慮事項
Heroku アプリケーション以外の場所で Heroku Postgres データベースを効果的に使用するには、以下の点を考慮してください。
資格情報を別の環境やアプリのコードにコピーして貼り付けないようにする
データベース URL は Heroku によって管理され、次のような場合に変更されます。
- ユーザーが
heroku pg:credentials:rotate
を使用してデータベースの資格情報の変更を開始した - 壊滅的なハードウェア障害が発生し、Heroku Postgres のスタッフが新しいハードウェア上にデータベースを復旧する必要がある
- セキュリティの問題または脅威に対処するため、Heroku Postgres のスタッフがデータベースの資格情報を変更する必要がある
- HA 対応プランでの自動フェイルオーバーイベント
データベース URL の環境設定は常に、アプリケーションの起動時に、対応する Heroku アプリから取得してください。たとえば、12 要素アプリケーション設定の原則に従い、Heroku CLI を使用してプロセスを起動できます。次に例を示します。
DATABASE_URL=$(heroku config:get DATABASE_URL -a your-app) your_process
こうすれば、プロセスまたはアプリケーションで常に、正しいデータベース資格情報を確実に取得できます。
データベースをアドオンとして他の Heroku アプリにアタッチする
他の Heroku アプリからデータベースに接続している場合、複数のアプリケーションにデータベースアドオンを直接アタッチできます。データベースを複数のアプリにアタッチすると、データベースの URL の変更が確実に、自動で他のアプリに伝播します。
SSL を有効にする
アプリケーションから Heroku Postgres データベースに接続するには、アプリケーションで SSL をサポートし、有効にする必要があります。ほとんどのクライアントではデフォルトで SSL を使用して接続しますが、接続する前に sslmode=require
クエリパラメータをデータベース URL に追加することが必要な場合があります。
DATABASE_URL
環境設定の値を直接編集するのではなく、必ずコードからデータベースの URL に sslmode=require
パラメータを追加してください。フェイルオーバーなどのさまざまな自動イベントによって環境設定の値が変更され、編集内容が上書きされる可能性があるためです。
Heroku Postgres Backups を使用する
データベースの自動バックアップを取得するには、関連付けられた Heroku アプリで Heroku Postgres Backups を使用します。pg:backups:capture
コマンドを使用して、データベースの手動バックアップを作成できます。データベースに対して毎日実行するようバックアップのスケジュールを設定することもできます。
デフォルトでは、PgBackups は Heroku アプリで DATABASE_URL
にあるデータベースのバックアップを実行します。取得するデータベースアドオンの名前を指定することもできます。