MuleSoft への Heroku データサービスの接続
この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。
最終更新日 2023年05月17日(水)
Table of Contents
この記事は、MuleSoft 経由での Heroku データサービスへのアクセスに関するものです。Heroku アプリに外部サービスを接続する統合レイヤーとして MuleSoft を使用するには、Heroku と Salesforce プラットフォームを統合するを参照してください。
MuleSoft は、複数のシステムとサービスを 1 つの中央インターフェースからアクセスおよび管理できるように接続するための IPaaS (Integration Platform as a Service) です。この記事では、Heroku データサービス (Heroku Postgres、Apache Kafka on Heroku、Heroku Data for Redis) を MuleSoft プラットフォームに接続する方法について説明します。
一般的な統合のユースケース
Heroku のデータを MuleSoft に接続する理由はたくさんあります。最も一般的なユースケースは、Heroku Connect と Heroku Postgres を使用して Salesforce からの顧客データを保存および管理しているユーザーです。これらの Heroku データサービスを MuleSoft に接続することで、このデータにアクセスし、MuleSoft プラットフォームに接続されている他のサービスと統合することができます。Heroku と MuleSoft を一緒に使用することで、Heroku のデータ管理の柔軟性を活用しながら、引き続きアプリに必要な外部サービスを使用できます。
共通ランタイム用の MuleSoft コネクターの設定
Redis、Apache Kafka、Postgres などの Heroku データサービスは、特定のコネクターを使用して MuleSoft に統合できます。このセクションでは、Common Runtime で実行されている Heroku データサービスに接続するために必要な 3 つのコネクターについて説明します。
Private Space で Heroku Postgres を実行している場合は、最初に次のセクションの「Private および Shield Heroku サービス用の MuleSoft コネクターの設定」を参照してください。
データベースコネクター
データベースコネクターを使用すると、Heroku Postgres を含む JDBC 準拠のデータベースに接続できます。MuleSoft 側でデータベースコネクターを設定するには、MuleSoft の記事「How to connect to Heroku Postgres using the MuleSoft Database Connector」(MuleSoft データベースコネクターを使用して Heroku Postgres に接続する方法) に記載されている手順に従ってください。
Redis コネクター
Redis コネクターを使用すると、Heroku Data for Redis を含む任意の Remote Dictionary Server に接続できます。MuleSoft 側で Redis コネクターを設定する場合は、Redis コネクターのドキュメントに記載されている手順に従ってください。コネクターを設定するには、次の情報が必要です。
- 接続: ドロップダウンメニューから、「NonClustered」を選択します。
- ホスト、ポート、パスワード: これらの 3 つのフィールドはすべて、アプリケーションの
REDIS_URL
環境設定にあります。REDIS_URL
の値の形式は、rediss://h:<password>@<hostname>:<port>
です。MuleSoft で Redis コネクターを設定する際は、これらの値を使用します。
このコネクターは、Common Runtime で Heroku Data for Redis を使用している場合にのみ機能します。Private Space で Redis を実行している場合は、「Private および Shield Heroku サービス用の MuleSoft コネクターの設定」を参照してください。
Apache Kafka コネクター
Kafka コネクターを使用すると、Apache Kafka on Heroku クラスターを MuleSoft プラットフォームに接続できます。MuleSoft 側で Kafka コネクターを設定するには、MuleSoft の記事「How to connect to Apache Kafka on Heroku using the MuleSoft Kafka Connector」 (MuleSoft Kafka コネクターを使用して Apache Kafka on Heroku に接続する方法) に記載されている手順に従ってください。
このコネクターは、Common Runtime で Apache Kafka on Heroku を使用している場合にのみ機能します。Private Space で Kafka を実行している場合は、「Private および Shield Heroku サービス用の MuleSoft コネクターの設定」を参照してください。
Private および Shield Heroku サービス用の MuleSoft コネクターの設定
Private または Shield Private Space で Heroku Postgres、Heroku Data for Redis、または Apache Kafka on Heroku を実行している場合は、MuleSoft と Heroku の間に安全で、かつ相互認証されたチャネルを設定するために必要な追加の設定があります。このセクションでは、Private または Shield Private Space で実行しているときに、Heroku データサービスを MuleSoft に接続するために必要な追加情報を提供します。
データベースコネクター
最初に以下の手順を実行してから、上記のようにデータベースコネクターを設定します。
静的外部 IP を許可リストに登録する
Heroku Postgres が MuleSoft アプリケーションに正常に接続するには、MuleSoft アプリケーションの静的外部 IP アドレスを Heroku mTLS 設定の許可リストに追加する必要があります。この IP を許可リストに追加すると、MuleSoft アクセスで Private の Heroku Postgres データベースに接続できるようになります。
- MuleSoft のドキュメントの手順を使用して、アプリケーションに静的 IP を割り当てます。
- 外部リソースから Private または Shield の Heroku Postgres データベースに接続するの記事の手順に従って、生成された静的 IP を mTLS 許可リストに追加します。
Anypoint Studio でローカルで開発する際は、ローカルマシンのパブリック IP を使用できます。
クライアント側の証明書をダウンロードする
MuleSoft と Heroku 間の接続を認証するクライアント側の証明書をダウンロードするには、Heroku CLI を使用します。このプロセスは、「外部リソースから Private または Shield の Heroku Postgres データベースに接続する」で説明されています。
クライアントの秘密鍵を Java で理解できる形式に変換する
前の手順のコマンドに従った場合は、プロジェクト内に folder
という名前のディレクトリが作成されています。そのフォルダ内のファイルの 1 つが、MuleSoft が接続のために認識しておく必要のあるクライアントの秘密鍵です。MuleSoft でその鍵を読み取れるようにするためには、MuleSoft で使用できる Java のような形式に鍵を変換する必要があります。
鍵を必要な形式に変換するために、プロジェクトディレクトリ内から次のコマンドを実行できます。このコマンドを実行する前に、
openssl
がコマンドラインにインストールされていることを確認してください。インストールされていない場合、このコマンドはエラーを返します。<CLIENT_PRIVATE_KEY>
をfolder
ディレクトリ内の*.key
ファイルの名前に変更してください。通常はPREFIX_postgresql.key
のようになります。
$ openssl pkcs8 -topk8 -inform PEM -in <CLIENT_PRIVATE_KEY> -outform DER -nocrypt -out postgresql.key.der
MuleSoft アプリケーションに証明書をインポートする
MuleSoft が Heroku 接続の証明書にアクセスするためには、それらを MuleSoft アプリケーションに埋め込むのが最良の方法です。folder
にダウンロードした 3 つのファイルすべてを、MuleSoft アプリケーションの src/main/resources
ディレクトリ内に移動します。
データベース接続 URL を設定する
上記の手順を完了すると、MuleSoft データベースコネクターで使用する接続 URL を作成できます。URL は、次の形式で作成できます。
jdbc:postgresql://<DB_HOST>:<DB_PORT>/<DB_NAME>?sslmode=verify-ca&sslcert=${mule.home}/apps/${app.name}/PREFIX_postgresql.crt&sslkey=${mule.home}/apps/${app.name}/postgresql.key.der&sslrootcert=${mule.home}/apps/${app.name}/PREFIX_root.crt
<DB_HOST>
、<DB_PORT>
、および<DB_NAME>
を Heroku Postgres ダッシュボードの値に置き換えます。${mule.home}
と${app.name}
は実行時にコネクターによって置き換えられるため、そのままにします。
データベースコネクターから Username
と Password
の入力も求められます。これらも両方とも Heroku Postgres ダッシュボードにあります。
Kafka コネクター
Private Space または Shield Space で実行されている Heroku Kafka は、外部ソースからの相互 TLS 接続をサポートします。MuleSoft を使用して Private または Shield Heroku Kafka を接続する場合は、上記の Kafka コネクターの手順に従う前に、MuleSoft アプリケーションの外部静的 IP を mTLS 設定の許可リストに追加する必要があります。
Redis コネクター
Private Space で実行されている Heroku Data for Redis では、MuleSoft ではサポートされていない、AWS PrivateLink を使用するリソースからの信頼関係接続のみがサポートされます。MuleSoft を使用して Private Heroku Data for Redis を接続する場合は、上記の Redis コネクターの手順に従う前に、Private Space の許可リストに MuleSoft アプリケーションの外部静的 IP を追加する必要があります。このサービスの詳細は、データサービスの信頼済み IP 範囲を参照してください。