Takahiro Yonei

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

heroku

Heroku リクエストタイムアウトはアプリケーション側にも忘れずに

(本記事はしくじり案件です) Heroku Router は、dynoとの接続確立後30秒の間に何かしらレスポンスを受け取らなかった場合、リクエストを強制終了してしまう。そのため、Herokuアプリケーション側では30秒以内に処理を完了させておく必要がある。 処理自体を30秒以内に完了させるよう実装することは非常に重要なことではあるが、もう1つ大事なポイントがドキュメントに記載されている。 それはアプリケーション側でも、30秒(もしくはそれ以下)のタイムアウト処理を実装する必要がある、ということだ。 Request Timeout | Heroku Dev CenterLearn about the behavior of the Heroku routers, connection termination and connection timeouts.Dev Center 接続が強制終了されると、クライアントに対してエラーページが発行されます。リクエストを処理していた Web dyno はそのまま放置され、応答を送信できなくてもリクエストの処理を続行します。 その後、後続

By Takahiro Yonei

Salesforce

Salesforce Integrationライセンスで標準オブジェクトを扱うには

システム連携用に「Salesforce Integration」ライセンスを使う場合の備忘録として。 「Salesforce Integration」ライセンスでプロファイルを用意しても、そのプロファイルのオブジェクト設定に「取引先」「取引先責任者」などの標準オブジェクトが一覧に表示されない。 したがって、システム連携用のユーザーに割り当てても、そのままだと標準オブジェクト(取引先、取引先責任者など)にアクセスできない。 以下の記事がその対応策となる。 Salesforce HelpSalesforce Salesforce API インテグレーション権限セットライセンスは、Salesforce インテグレーションユーザーライセンスの機能を拡張し、標準のシステム管理者プロファイルで一般的に使用できるのと同じユーザー権限やオブジェクト権限の多くを提供します。 [設定] の [組織情報] ページで Salesforce API インテグレーション権限セットライセンスを確認して検討し、何が使用可能になるのかを理解します。「Minimum Access - API Only Int

By Takahiro Yonei