Heroku AppLink

Heroku AppLinkは、Heroku 上のアプリを Salesforce、Data Cloud、Agentforce から利用可能な API サービスとして公開するアドオンです。公式では、使用例として、PDF 生成、データ変換のバッチ処理、Agentforce のカスタムアクション、独自 MCP サーバーの公開などが挙げられます。TAOドライブの技術検証では、Heroku AppLink に含まれる Service Mesh と BypassRoute 設定を組み合わせることで、Salesforce からのリクエストと通常のバックエンド処理を同一の Heroku アプリ上で安全に共存させることが可能であることがわかりました。これにより、DB 連携を担う Heroku Connect を補完しながら、Salesforce と Heroku 上の Web システム間で双方向連携を迅速かつ柔軟に構築できます。

heroku

Dancing with Heroku AppLink / 2

(ローカルアプリと組み合わせる...?) 構成の概要 Heroku AppLinkの活用例として、こんな構成を試してみた。 * 個別に作成したElectronアプリケーションがあって、そのアプリケーションはSalesforceのデータを参照したり、データを作成する。 * Electronアプリケーションに、Salesforceのアクセストークンを持たせてアクセスできるようにしたい。 * しかし、Electronアプリケーション内にSalesforceのアカウント情報を持たせたくないし、個別のログイン機能なんて作りたくない。 * Electronアプリケーションに渡す情報にはSalesforce外の情報もあり、その諸々の情報をまとめるためにHerokuアプリケーションを設置した。 * (Apexコードを書くのがやや面倒...) といったあたりで、上のような構成を試してみた。 Heroku AppLinkの活用ポイント など ※主に②で大活躍するので、そこに絞った話をしてみよう。 まず、Heroku側の実装としては以下を前提として、Node.jsアプリケ

By Takahiro Yonei

heroku

Dancing with Heroku AppLink / 1

(まずはよくありそうなパターンでも) 構成の概要 Heroku AppLinkの活用例として、こんな構成を試しているところ。 * HerokuとSalesforceを組み合わせて上のようなWebシステムを構築してる。 * HerokuはFrontend(Next.js)とBackend(Medusa.js)を使ってアプリケーションを作成している。 * Salesforceで作成したデータをHeroku Backendに連携する。BackendのAPIを外部サービスとしてSalesforceに登録しておいて、SalesforceからはFlowを使って連携する。 * Fronendから送信されたデータは、Backendを介してSalesforceに連携する。Heroku AppLinkを使ってSalesforceへのアクセストークンを取得してSalesforceにデータを書き込む。 構成としては、よくありそうなパターンではなかろうか。 しかし、Heroku BackendにAppLinkを組み込むことで、BackendとSalesforceの実装工数を削減で

By Takahiro Yonei

heroku

Heroku AppLinkの使い方(DML)

Heroku AppLinkの使い方のサンプル第2弾でも。 ※サンプルコードは Node.js 版のSDKを使ったものに限定です。SDKのリポジトリは https://github.com/heroku/heroku-applink-nodejs を参照してください。 1. レコードの作成 ※もちろん添付ファイルを作成することも可能 import * as salesforcesdk from "@heroku/applink"; async function sample () { const sdk = salesforcesdk.init(); // ※Authorized Userを使います const org = await sdk.addons.applink.getAuthorization(process.env.HEROKU_APPLINK_CONNECTION_NAME); //---------------------------------------------------------- // (1)レコードを作成 //

By Takahiro Yonei

Heroku AppLink

Heroku AppLinkの使い方 (クエリ)

Heroku AppLinkのサンプルコードがもう少し欲しいところ...で、まずはクエリのサンプルでも備忘録として残してみる ※サンプルコードは Node.js 版のSDKを使ったものに限定です。SDKのリポジトリは https://github.com/heroku/heroku-applink-nodejs を参照してください。 1. 1つのオブジェクトだけクエリする import * as salesforcesdk from "@heroku/applink"; const sfdc_id = 'xxxxx'; async function sample () { const sdk = salesforcesdk.init(); // ※Authorized Userを使います const org = await sdk.addons.applink.getAuthorization(process.env.HEROKU_

By Takahiro Yonei

Heroku AppLink

Heroku AppLinkで特定のAPIはサービスメッシュをバイパスしたい

Heroku AppLinkを導入すると、Heroku Routerからやってくるリクエストを全てサービスメッシュが一旦受け取って、認証チェックを行う。 構築しているHerokuアプリケーションが、Salesforceからのリクエストのみを受け付けるもの、という前提があるならそれで問題ない。 しかし、特定のAPIは別のWebサービスからのリクエストを処理したい...という場合には非常に困るのである。 例えば、一般公開しているECサイトの商品データを返すAPIと、Salesforceからしか受け付けないAPIを、1つのアプリケーションに同居させたい場合がこれにあたる。 一般公開しているECサイトは、当然ながらSalesforceの認証情報なんぞ持っていない。したがって、そんなサイトからのリクエストはサービスメッシュが拒否してしまい、サイトに商品データを表示することができなくなる。 こんな場合、Herokuアプリケーション側で特定のURLパターンではサービスメッシュをバイパスするよう設定することができる(ようになった)。 1. バイパス用の設定ファイルを設置する Heroku

By Takahiro Yonei

Heroku AppLink

Dig into the Heroku AppLink (not a deep dive) - サービスメッシュについて

Heroku AppLinkを導入するにあたり、heroku-applink-service-mesh をビルドパックとして追加するようドキュメントに明記されている。 https://devcenter.heroku.com/articles/getting-started-heroku-applink-agentforce#install-the-heroku-applink-buildpack このサービスメッシュの役割について少し触れてみよう。 サービスメッシュは、Heroku RouterとHerokuアプリケーション(自前で作るアプリケーション)の間に入って、HerokuアプリケーションのAPIを守る役割を持っている。 大まかに言えば以下のような流れとなる。 1. 外部からのリクエストが、Heroku Routerにやってくる 2. Heroku Routerがweb dynoに向かってリクエストを転送する 3. web dynoに組み込まれたサービスメッシュが、リクエスト内容をチェックする 4. リクエスト内容がokであれば、Herokuアプリケーションにリク

By Takahiro Yonei