Skip Navigation
Show nav
Dev Center
  • Get Started
  • ドキュメント
  • Changelog
  • Search
  • Get Started
    • Node.js
    • Ruby on Rails
    • Ruby
    • Python
    • Java
    • PHP
    • Go
    • Scala
    • Clojure
    • .NET
  • ドキュメント
  • Changelog
  • More
    Additional Resources
    • Home
    • Elements
    • Products
    • Pricing
    • Careers
    • Help
    • Status
    • Events
    • Podcasts
    • Compliance Center
    Heroku Blog

    Heroku Blog

    Find out what's new with Heroku on our blog.

    Visit Blog
  • Log inorSign up
View categories

Categories

  • Heroku のアーキテクチャ
    • コンピューティング (dyno)
      • dyno の管理
      • dyno の概念
      • dyno の動作
      • dyno の参照資料
      • dyno のトラブルシューティング
    • スタック (オペレーティングシステムイメージ)
    • ネットワーキングと DNS
    • プラットフォームポリシー
    • プラットフォームの原則
  • 開発者ツール
    • コマンドライン
    • Heroku の VS Code 拡張機能
  • デプロイ
    • Git を使用したデプロイ
    • Docker によるデプロイ
    • デプロイ統合
  • 継続的デリバリーとインテグレーション
    • 継続的統合
  • 言語サポート
    • Node.js
      • Node.js アプリのトラブルシューティング
      • Heroku での Node.js の動作
      • Node.js の操作
    • Ruby
      • Rails のサポート
      • Bundler の使用
      • Ruby の操作
      • Heroku での Ruby の動作
      • Ruby アプリのトラブルシューティング
    • Python
      • Python の操作
      • Python でのバックグラウンドジョブ
      • Heroku での Python の動作
      • Django の使用
    • Java
      • Heroku での Java の動作
      • Java の操作
      • Maven の使用
      • Spring Boot の使用
      • Java アプリのトラブルシューティング
    • PHP
      • PHP の操作
      • Heroku での PHP の動作
    • Go
      • Go の依存関係管理
    • Scala
    • Clojure
    • .NET
      • Working with .NET
  • データベースとデータ管理
    • Heroku Postgres
      • Postgres の基礎
      • Postgres スターターガイド
      • Postgres のパフォーマンス
      • Postgres のデータ転送と保持
      • Postgres の可用性
      • Postgres の特別なトピック
      • Heroku Postgres への移行
    • Heroku Key-Value Store
    • Apache Kafka on Heroku
    • その他のデータストア
  • AI
    • Vector Database
    • Working with AI
    • Heroku Inference
      • AI Models
      • Inference Essentials
      • Heroku Inference Quick Start Guides
      • Inference API
    • Model Context Protocol
  • モニタリングとメトリクス
    • ログ記録
  • アプリのパフォーマンス
  • アドオン
    • すべてのアドオン
  • 共同作業
  • セキュリティ
    • アプリのセキュリティ
    • ID と認証
      • シングルサインオン (SSO)
    • Private Space
      • インフラストラクチャネットワーキング
    • コンプライアンス
  • Heroku Enterprise
    • Enterprise Accounts
    • Enterprise Team
    • Heroku Connect (Salesforce 同期)
      • Heroku Connect の管理
      • Heroku Connect のリファレンス
      • Heroku Connect のトラブルシューティング
  • パターンとベストプラクティス
  • Heroku の拡張
    • Platform API
    • アプリの Webhook
    • Heroku Labs
    • アドオンのビルド
      • アドオン開発のタスク
      • アドオン API
      • アドオンのガイドラインと要件
    • CLI プラグインのビルド
    • 開発ビルドパック
    • Dev Center
  • アカウントと請求
  • トラブルシューティングとサポート
  • Salesforce とのインテグレーション
  • データベースとデータ管理
  • Heroku Postgres
  • PrivateLink 経由での Private または Shield の Heroku Postgres への接続

PrivateLink 経由での Private または Shield の Heroku Postgres への接続

日本語 — Switch to English

最終更新日 2025年02月07日(金)

Table of Contents

  • Heroku の前提条件
  • Heroku エンドポイントのプロビジョニング
  • Amazon VPC エンドポイントのプロビジョニング
  • Heroku と Amazon VPC エンドポイントの接続
  • VPC エンドポイント経由での EC2 から Heroku Postgres への接続
  • 制限
  • Private Space の信頼済み IP 範囲との比較

この記事では、AWS PrivateLink​ を使用して、AWS VPC と、Private Space​ または Shield Private Space​ で実行されている Heroku Postgres​ データベースの間に安全な接続を作成する方法について説明します。このプロセスは、大きく分けて 3 つの手順で構成されます。

  1. Private または Shield Heroku Postgres データベースでエンドポイントサービスを作成する
  2. エンドポイントネットワークインターフェースを AWS VPC に作成する
  3. 2 つのエンドポイント間に安全な接続を確立する

接続のセットアップの一環として、承認されたアカウントのリストを指定し、VPC から Heroku Postgres データベースへのアクセスを制限することができます。

この機能を使用するには、Heroku Postgres データベースと同じリージョンにあるサブネットに、作成した Amazon VPC をプロビジョニングする必要があります。詳細は、「リージョン​」を参照してください。

Heroku の前提条件

PrivateLink エンドポイントをセットアップするには、次の Heroku リソースが必要です。

  • Private Space または Shield Private Space。Heroku Dashboard か Heroku CLI のどちらかを使用して Private Space​ または Shield Private Space​ を作成します。
  • Private Space または Shield Private Space で、Heroku Postgres データベースをアタッチした状態で実行されている Heroku アプリ。Private Space または Shield Private Space で実行されているすべての Heroku Postgres インスタンスでは、それぞれ private​ または shield​ プランタイプのいずれかを使用します。データベースの作成方法については、「Heroku Postgres のプロビジョニング​」を参照してください。

Heroku エンドポイントのプロビジョニング

手順 1: PrivateLink CLI プラグインを使用して Heroku Data をインストールする

CLI プラグインをインストールするには、次のコマンドを実行します。

$ heroku plugins:install @heroku-cli/plugin-data-privatelink

手順 2: AWS アカウント ID を取得する

AWS アカウント ID は、次のように AWS CLI を使用して取得できます。

$ aws sts get-caller-identity --output text --query 'Account'

123456789101

このコマンド例では、アカウント ID 123456789101​ が返されています。

アカウント ID は、AWS アカウントの Account (アカウント) ページから取得することもできます。Account ID​ は Account Settings (アカウント設定) セクションに表示されます。

サンプル AWS アカウントのアカウントページ

手順 3: PrivateLink エンドポイントを作成する

次の Heroku CLI コマンドを使用して PrivateLink エンドポイントを作成し、値を置き換えます。

$ heroku data:privatelink:create POSTGRESQL_ADDON_NAME --aws-account-id ACCOUNT_ID --app APP_NAME
  • POSTGRESQL_ADDON_NAME​ を Heroku Postgres データベースの名前に置き換えます (例: ​postgresql-simply-12345​)。
  • APP_NAME​ を自分のアプリ名に置き換えます。
  • ACCOUNT_ID​ は、Heroku Postgres データベースへのアクセスを許可する AWS アカウントに置き換えます。次のいずれかのパターンに一致する ID を指定してください。
    • account-id
    • account-id:user/username
    • account-id:role/rolename

--aws-account-id​ フラグを複数回指定して、複数のアカウントを含めることができます。

次の例は、コマンドとその出力結果です。

$ heroku data:privatelink:create postgresql-simply-12345 --aws-account-id 123456789101:user/abc.xyz --app privatelink-vpc-endpoint-demo
Creating privatelink... done

Service Name: Provisioning
Status:       Provisioning

The privatelink is now being provisioned for postgresql-simply-12345.
Run heroku data:privatelink:wait postgresql-simply-12345 -a APP to check the creation process.

新しい PrivateLink エンドポイントが利用可能になるまで、通常 5 ~ 10 分かかります。heroku data:privatelink:wait postgresql-simply-12345 --app APP_NAME​で進捗状況を追跡できます。

手順 4: エンドポイントのサービス名を取得する

PrivateLink エンドポイントのプロビジョニングが終了したら、次のコマンドを使用してその詳細を確認します。

$ heroku data:privatelink POSTGRESQL_ADDON_NAME --app APP_NAME

POSTGRESQL_ADDON_NAME​ は Heroku Postgres データベースの名前に、APP_NAME​ はアプリの名前にそれぞれ置き換えます。

次の例は、コマンドとその出力結果です。

$ heroku data:privatelink postgresql-simply-12345 --app privatelink-vpc-endpoint-demo
=== privatelinks for postgresql-simply-12345
Service Name:         com.amazonaws.vpce.us-east-1.vpce-svc-0410a2e25933fe8ec
Status:               Operational

=== Allowed Accounts
ARN                                    Status
arn:aws:iam::123456789101:user/abc.xyz Active

Your privatelink is now operational.
You must now copy the Service Name and follow the rest of the steps listed in https://devcenter.heroku.com/articles/heroku-postgres-via-privatelink.

コマンドの出力から Service Name​ フィールドの値をコピーします。前の例では、サービス名は com.amazonaws.vpce.us-east-1.vpce-svc-0410a2e25933fe8ec​ です。この値は、Amazon VPC エンドポイントをプロビジョニング​するために必要になります。

Amazon VPC エンドポイントのプロビジョニング

このセクションの手順は、Amazon VPC ダッシュボードから実行します。

手順 1: セキュリティグループを作成して設定する

適切な ingress セキュリティルールを持つセキュリティグループがエンドポイントに必要です。セキュリティグループを作成するには:

  1. VPC ダッシュボードの Security Groups (セキュリティグループ) タブで、Create security group (セキュリティグループの作成) をクリックします。
  2. Basic details (基本情報詳細) セクションで、セキュリティグループの名前と説明を指定し、目的の VPC を選択します。
  3. Inbound rules (インバウンドルール) セクションで、Add rule (ルールを追加) をクリックします。
  4. 有効な IP アドレスからポート 5432–5433​ への TCP アクセスを有効にします。
  5. Create security group (セキュリティグループの作成) をクリックします。

AWS コンソールのセキュリティグループの作成ウィンドウ

手順 2: エンドポイントを作成する

エンドポイントを作成するには:

  1. VPC ダッシュボードの Endpoints (エンドポイント) タブに移動し、Create Endpoint (エンドポイントの作成) をクリックします。
  2. Name tag (名前タグ) フィールドにエンドポイントの名前を入力します。
  3. Type (タイプ) セクションで、PrivateLink Ready partner services (PrivateLink Ready パートナーサービス) カテゴリを選択します。
  4. Service settings (サービス設定) セクションで、先ほど取得した​ Service name​ 値を貼り付けます。
  5. 次に、Verify service (サービスの確認) をクリックして、使用可能なサブネットの一覧を表示します。

    The Create Endpoint window on the AWS Console

  6. Network Settings (ネットワーク設定) セクションで、セキュリティグループの作成時に指定した VPC を選択します。

  7. Subnets (サブネット) セクションで、有効にするサブネットとサブネット ID を選択し、使用する IP アドレスの種類を選択します。

  8. Security group (セキュリティグループ) セクションで、前の手順で作成したセキュリティグループを選択し、Create endpoint (エンドポイントの作成) をクリックします。

    The Network Settings, Subnets, and Security Groups section of the Create Endpoint window on the AWS Console

作成したエンドポイントの初期ステータスは pending acceptance​ で、5 ~ 10 分後に available​ に移行します。

Heroku Dashboard から利用可能かどうかを確認することもできます。データベースの Settings tab (設定タブ) に移動し、Heroku Postgres via PrivateLink (PrivateLink 経由の Heroku Postgres) セクションの Show Configuration (設定を表示) をクリックします。[接続] で接続ステータスを確認できます。

Heroku と Amazon VPC エンドポイントの接続

Amazon VPC エンドポイントが available​ になったら、VPC が Heroku Postgres データベース (DATABASE_ENDPOINT_ID_URL​) および PgBouncer (DATABASE_ENDPOINT_ID_PGBOUNCER_URL​) と通信できるようにするために、Heroku によって作成される環境設定から URL を取得できます。

PgBouncer は、Heroku Postgres データベース用の接続プールを設定できるようにするサービスです。詳細は、「Heroku Postgres のサーバー側接続プール​」を参照してください。

まず、PrivateLink エンドポイントのエンドポイント ID を取得し、その末尾の 17 文字の文字列を抽出します。この文字列を大文字に変換し、下記のコマンドで使用します。たとえば、エンドポイント ID が vpce-01c87ae3c05563935​ である場合、このエンドポイント ID は 01C87AE3C05563935​ になります。

ENDPOINT_ID_HERE​ の文字列を置き換えて、コマンドを実行します。

$ heroku config --app your_app_name | grep ENDPOINT_ID_HERE

AWS VPC エンドポイント接続 URL と、それに対応した Heroku Postgres データベース用の接続文字列が表示されます。接続文字列は次の形式です。

postgres://user:password@vpc-endpoint-dns-name:5432/database

この接続文字列を使用して、AWS VPC 内のアプリケーションをプライベートの Heroku Postgres データベースと PgBouncer インスタンスに接続できるようになりました。次の例は、コマンドとその出力結果です。

$ heroku config --app privatelink-vpc-endpoint-demo | grep 01C87AE3C05563935

DATABASE_ENDPOINT_01C87AE3C05563935_URL:           postgres://abcdefghijklmn:abcdefghijklmnopqrstuvwxyz123456789101112131415161718192021222324@ec2-3-83-63-168.compute-1.amazonaws.com:5432/dd0k757ojc5qt
DATABASE_ENDPOINT_01C87AE3C05563935_PGBOUNCER_URL: postgres://abcdefghijklmn:abcdefghijklmnopqrstuvwxyz123456789101112131415161718192021222324@ec2-3-83-63-168.compute-1.amazonaws.com:5433/dd0k757ojc5qt

Heroku Dashboard からエンドポイント ID を取得することもできます。

  1. Heroku Dashboard でデータベースに移動し、Settings (設定) タブをクリックします。
  2. Heroku Postgres via PrivateLink (PrivateLink 経由の Heroku Postgres) セクションの横にある Show Configuration (設定を表示) をクリックします。
  3. エンドポイント ID を表示するには、Reveal Credentials (資格情報を表示) をクリックします。

この機能の使用に関して問題または気になる点がある場合は、サポートチケット​を開いてください。

VPC エンドポイント経由での EC2 から Heroku Postgres への接続

VPC エンドポイントを設定し終えたら、AWS VPC に EC2 インスタンスを作成して、Heroku Postgres に接続できます。

EC2 ダッシュボードで、 Launch an instance (インスタンスの起動) をクリックします。インスタンスに名前を付け、AMI タイプを選択します。

EC2 ダッシュボードのインスタンス AMI ウィンドウを起動する

次に、インスタンスタイプとキーペア名を選択します。この例では、Ubuntu t2.micro インスタンスを作成します。

EC2 ダッシュボードのインスタンスの種類ウィンドウを起動する

ネットワーク設定を行うときは、先ほど作成した​セキュリティグループがある VPC ネットワークを選択し、適切なサブネットを選択します。インスタンスの概要を確認し、 Launch instance (インスタンスの起動) をクリックします。

EC2 ダッシュボードのインスタンスネットワーク設定ウィンドウを起動する

インスタンスのステータスが running​ に遷移し、すべてのステータスチェックに合格したら、インスタンスの作成中に指定した SSH キーペアを使用してインスタンスに接続します。

接続したら、次のコマンドで EC2 インスタンスに Postgres をインストールします。

$ sudo apt-get -qq update && sudo apt-get install -y curl ca-certificates
$ curl -s https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
$ sudo apt-get -qq update
$ sudo apt-get install -y postgresql-client-16

その後、次のコマンドを使用して、EC2 インスタンスから Heroku Postgres データベースに接続できます。

$ psql postgres://user:password@vpc-endpoint-dns-name:5432/database

次のスクリーンショットは、サンプルの EC2 インスタンスの内部から Heroku Postgres データベースに接続するために使用する接続文字列を示しています。

VPC EC2 インスタンスからプライベート Postgres データベースへの接続

制限

  • 作成する Amazon VPC エンドポイントは、Heroku Postgres データベースと同じリージョンにあるサブネットにプロビジョニングする必要があります。
  • Heroku Postgres データベースへの完全に安全なアクセスを確保するため、ユーザーの責任において VPC のセキュリティを確認してください。

Private Space の信頼済み IP 範囲との比較

Private Spaces では、データサービス用の信頼済み IP 範囲​をベータ機能としてサポートしています。この機能は、Private Space 境界の外側から Heroku Postgres データベースに接続する必要がある場合の選択肢です。この機能を有効にするには Heroku に連絡する​必要があり、アクセス権を細かく設定することはできません。

AWS PrivateLink 経由で接続することにより、データベースはお客様自身の VPC の一部として扱われ、ユーザーとロールの集合へのアクセスをお客様が制限できます。したがって、お客様のユースケースで利用可能な場合は常に、こちらの手法を推奨します。

関連カテゴリー

  • Heroku Postgres
暗号化鍵を使用した Heroku Postgres の暗号化 外部リソースから Private または Shield の Heroku Postgres データベースに接続する

Information & Support

  • Getting Started
  • Documentation
  • Changelog
  • Compliance Center
  • Training & Education
  • Blog
  • Support Channels
  • Status

Language Reference

  • Node.js
  • Ruby
  • Java
  • PHP
  • Python
  • Go
  • Scala
  • Clojure
  • .NET

Other Resources

  • Careers
  • Elements
  • Products
  • Pricing
  • RSS
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku Blog
    • Heroku News Blog
    • Heroku Engineering Blog
  • Twitter
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku
    • Heroku Status
  • Github
  • LinkedIn
  • © 2025 Salesforce, Inc. All rights reserved. Various trademarks held by their respective owners. Salesforce Tower, 415 Mission Street, 3rd Floor, San Francisco, CA 94105, United States
  • heroku.com
  • Legal
  • Terms of Service
  • Privacy Information
  • Responsible Disclosure
  • Trust
  • Contact
  • Cookie Preferences
  • Your Privacy Choices