Private Space と Shield Space での Heroku Postgres
この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。
最終更新日 2023年11月20日(月)
Table of Contents
Private Space での Heroku Postgres は Heroku Enterprise でのみ利用できます。
この記事では、Heroku Postgres のプロビジョニング、プラン、および接続に関する考慮事項のうち Private Space に特有のものについて説明します。Common Runtime 上の既存の Heroku Postgres データベースを Private Space に移行することを検討している場合は、「Migrating Heroku Postgres Databases to Private Spaces」(Heroku Postgres データベースを Private Space に移行する) を参照してください。
Heroku Private Space は、分離されたネットワーク内でアプリケーションを実行するための専用環境です。これは、dyno、データストア、サードパーティのアドオンなど、アプリケーションのスタックのすべての部分が、この分離された環境の中に含まれていることを意味します。
開発者は、Common Runtime 内で実行するときと同様のエクスペリエンスで、Heroku Postgres を Private Space または Shield Space 内で実行できます。同じ CLI コマンドと Web インターフェースの多くは、同じように機能します。
Private および Shield の Heroku Data アドオンは、ビルド時にアプリケーションからアクセスできません。プライベートデータストアへの依存を解消するか、パブリックの Heroku Data プランを利用するか、またはサポートに連絡して指示に従うことをお勧めします。
プロビジョニング
Private Space と Shield Space では、Heroku Postgres プランのセットがそれぞれ独自であり、プランの内容は Space のタイプごとに固有です。us-east-1
または eu-west-1
の Private Space または Shield Space に、Essential、Standard、または Premium 層のデータベースをプロビジョニングできます。これらのアドオンはお客様の Private Space と自動的にネットワーク接続されません。
新しいデータベースを作成する
多くの buildpack は、Heroku ビルドプロセスの一環としてデータベースをプロビジョニングします。Private Space または Shield Space 内にアプリを作成する場合、プロビジョニング時には、最小の利用可能な Private プランまたは Shield プランがデフォルトで使用されます。すべての利用可能な Private 層プランと Shield 層プランの一覧については、以下を参照してください。
Private の Heroku Postgres データベースは、CLI を使用してプロビジョニングできます。
$ heroku addons:create heroku-postgresql:private-4 -a private-sushi
Shield 層のデータベースは Shield Space 内にしか作成できません。 Private 層のデータベースは Shield Space と Private Space のどちらにも作成できます。
作成するデータベースのリージョンとタイプによっては、データベースが使用可能になるまでにプロビジョニングのプロセスに最大 10 分かかる場合があります。
Private 層のプラン
Heroku Postgres では、Private Space 向けの一連のプランを提供しています。Private 層は、1 か月に最大 15 分のダウンタイムを許容する本番環境アプリケーション用に設計されています。すべての Private 層データベースには、以下のものが含まれます。
- 行数制限なし
- インメモリキャッシュの段階的な拡張
- フォークとフォローのサポート
- 最大 7 日分のロールバック
- アプリケーションのログストリームにデータベースメトリクスを公開
- 高可用性
- ディスクに書き込まれたすべてのデータを自動で保存時暗号化
プラン名 | プロビジョニング名 | RAM サイズ | ストレージ制限 | 接続制限 | 月額料金 |
---|---|---|---|---|---|
Private-0 | heroku-postgresql:private-0 |
4 GB | 68 GB | 120 | $300 |
Private-2 | heroku-postgresql:private-2 |
8 GB | 256 GB | 400 | $600 |
Private-3 | heroku-postgresql:private-3 |
15 GB | 512 GB | 500 | $1000 |
Private-4 | heroku-postgresql:private-4 |
30 GB | 768 GB | 500 | $1500 |
Private-5 | heroku-postgresql:private-5 |
61 GB | 1 TB | 500 | $2800 |
Private-6 | heroku-postgresql:private-6 |
122 GB | 1.5 TB | 500 | $3600 |
Private-L-6 | heroku-postgresql:private-l-6 |
122 GB | 2 TB | 500 | $5300 |
Private-XL-6 | heroku-postgresql:private-xl-6 |
122 GB | 3 TB | 500 | $6800 |
Private-7 | heroku-postgresql:private-7 |
244 GB | 2 TB | 500 | $7000 |
Private-8 | heroku-postgresql:private-8 |
488 GB | 3 TB | 500 | $10000 |
Private-9 | heroku-postgresql:private-9 |
768 GB | 4 TB | 500 | $13000 |
Private-L-9 | heroku-postgresql:private-l-9 |
768 GB | 5 TB | 500 | $15000 |
Private-XL-9 | heroku-postgresql:private-xl-9 |
768 GB | 6 TB | 500 | $17000 |
Private-10 | heroku-postgresql:private-10 |
1 TB | 8 TB | 500 | $28000 |
Shield 層プラン
Heroku Postgres では、Shield Space 向けの一連のプランを提供しています。Shield 層は、1 か月あたり最大 15 分のダウンタイムを許容できる本番環境アプリケーション向けに設計されています。すべての Shield 層データベースには、以下のものが含まれます。
- 行数制限なし
- インメモリキャッシュの段階的な拡張
- フォークとフォローのサポート
- 最大 7 日分のロールバック
- アプリケーションのログストリームにデータベースメトリクスを公開
- 高可用性
- ディスクに書き込まれたすべてのデータを自動で保存時暗号化
Shield 層データベースは Private 層データベースとは異なり、Shield Space との組み合わせでしか使用できません。Shield の Heroku Postgres データベースは、コンプライアンスを満たすことがアプリケーションとビジネスの目標である状況に適しています。Shield データベースには、以下の機能セットと制限もあります。
- dyno から Shield データベースへの非 TLS 接続は実行できません。暗号化接続が常に強制されます。
- Dataclips は Shield データベースに接続できません
- Private Space の外部から
heroku pg:psql
を使用して Shield データベースに接続することは許可されていません - Private Space の外部から “信頼済み IP” を使用して Shield データベースに直接アクセスすることは許可されていません
- Shield データベースは、追加の侵入検知およびホストスキャンメカニズムによって監視されます。
- PGBackups は Shield データベースでは機能しません
- Shield データベースは、Shield 以外の Space にフォークまたはフォロワーを持つことはできません。
pg:diagnose
と、Heroku Data ダッシュボードのDiagnose
(診断) タブは使用できません
プラン名 | プロビジョニング名 | キャッシュサイズ | ストレージ制限 | 接続制限 | 月額料金 |
---|---|---|---|---|---|
Shield-0 | heroku-postgresql:shield-0 |
4 GB | 68 GB | 120 | $350 |
Shield-2 | heroku-postgresql:shield-2 |
8 GB | 256 GB | 400 | $750 |
Shield-3 | heroku-postgresql:shield-3 |
15 GB | 512 GB | 500 | $1200 |
Shield-4 | heroku-postgresql:shield-4 |
30 GB | 768 GB | 500 | $1800 |
Shield-5 | heroku-postgresql:shield-5 |
61 GB | 1 TB | 500 | $3400 |
Shield-6 | heroku-postgresql:shield-6 |
122 GB | 1.5 TB | 500 | $4400 |
Shield-L-6 | heroku-postgresql:shield-l-6 |
122 GB | 2 TB | 500 | $6400 |
Shield-XL-6 | heroku-postgresql:shield-xl-6 |
122 GB | 3 TB | 500 | $8400 |
Shield-7 | heroku-postgresql:shield-7 |
244 GB | 2 TB | 500 | $8400 |
Shield-8 | heroku-postgresql:shield-8 |
488 GB | 3 TB | 500 | $12250 |
Shield-9 | heroku-postgresql:shield-9 |
768 GB | 4 TB | 500 | $16000 |
Shield-L-9 | heroku-postgresql:shield-l-9 |
768 GB | 5 TB | 500 | $18500 |
Shield-XL-9 | heroku-postgresql:shield-xl-9 |
768 GB | 6 TB | 500 | $21000 |
Shield-10 | heroku-postgresql:shield-10 |
1 TB | 8 TB | 500 | $34000 |
ターミナルから Shield データベースに接続する
ローカルマシンからデータベースに接続するとき、任意の ingress ルールが許可されていないため、heroku pg:psql
などの Heroku CLI コマンドラインツールは機能しません。代わりに、プライマリデータベースで DATABASE_URL
環境設定を使用していると想定して、Heroku Dyno を介してデータベース接続を実行する必要があります。
$ heroku run bash
Running bash on ⬢ sushi... up, run.3032 (1X)
~ $ psql $DATABASE_URL
psql (9.6.1, server 9.6.2)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.
d8vbabiotc9412=>
データベースへの接続
プログラミング言語別の詳細
Private データベースへのすべての接続は TLS/SSL を使用して行う必要があります。Heroku Postgres の接続に関するドキュメントを参照してください。Java、Ruby、JRuby、Python、Go、PHP、および Node.js の例が含まれています。
AWS PrivateLink 経由で Amazon VPC に接続する
PrivateLink を使用すると、Private または Shield の Heroku Postgres データベースに Amazon VPC から接続できます。詳細は、「Connecting to a Private or Shield Heroku Postgres Database via PrivateLink」(PrivateLink 経由で Private または Shield の Heroku Postgres データベースに接続する) を参照してください。
mTLS 経由の接続
Mutual TLS を使用すると、外部リソースと、Private Space または Shield Private Space で実行されている Heroku Postgres データベースの間に、安全で相互に認証されたチャネルを作成できます。詳細は、「Connecting to a Private or Shield Heroku Postgres Database from an External Resource」(外部リソースから Private または Shield の Heroku Postgres データベースに接続する) を参照してください。
Heroku ランタイムからの接続
Private プランのデータベースインスタンスへの接続は、Private Space 内でしか実行できません。他の Private Space から、または Common Runtime からは接続を実行できません (また、Space の境界を越えて Private Space のデータベースをアタッチすることはできません)。
別の Private Space または Common Runtime からデータベースに接続する必要がある場合、Private プラン以外のデータベースインスタンスを Common Runtime で実行することが解決方法になる可能性があります。
mTLS を使用して別の Private Space からデータベースに接続することもできます。詳細は、「Connecting to a Private or Shield Heroku Postgres Database from an External Resource」(外部リソースから Private または Shield の Heroku Postgres データベースに接続する) を参照してください。
あるリージョン内のデータベースに別のリージョン内の Private Space から接続している場合は、レイテンシーが増加する可能性があります。
CLI の使用
他の層の Heroku Postgres データベースとは異なり、Private データベースと Shield データベースはローカルコンピューターからアクセスできません。
Private プランの Heroku Postgres データベースへのアクセスには、heroku pg:psql
を使用できます。これにより、分離されたネットワーク境界を越えてデータベースに接続するための適切な承認を持っていることが保証されます。
Shield プランの Heroku Postgres データベースへのアクセスに関しては、heroku pg:psql
は使用できず、Shield Space 内の dyno を経由する方法でしかデータベースにアクセスできません。
データ用の信頼済み IP
データ用の信頼済み IP は、Private Space 内の Private プランの機能です。Shield Private Space 内のデータベースは信頼済み IP を使用できません。
Private Space 境界の外側から Private プランの Heroku Postgres データベースに直接接続する必要がある場合、Private Space の信頼済み IP 機能を使用して接続を有効にします。信頼済み IP を直接接続に使用するには、Heroku で Private Space を許可リストに登録して機能を有効にする必要があります。お客様の Private Space を登録するユースケースや登録の可否については、サポートチケットを開いてください。データサービス (Heroku Postgres、Heroku Data for Redis、および Apache Kafka on Heroku) 用の信頼済み IP についての詳細は、Private Space のドキュメントを参照してください。