Salesforce Summer’22 で実施される「Platform API バージョン 21.0 ~ 30.0廃止」の影響調査
Salesforce Summer’22リリースでSalesforce Platform API バージョン 21.0 ~ 30.0が廃止されるというアナウンスがありました。
Salesforce Platform API バージョン 21.0 ~ 30.0
外部アプリケーション(AppExchangeで入れているもの)も影響を受けるので、組織が実行しているAPI全体を調査する必要があります。
調査用スクリプト(Node.js)
ということで、Salesforce Platform API バージョン 21.0 ~ 30.0に記載されている調査を自動化するスクリプトをNode.jsで書きました1。
https://github.com/shinchit/sf-summer22-investigation
大まかな処理の流れは次の通りです。
- 過去30日間のEventLogFileを検索する
- ヒットしたログファイルをAPIを使って取得する
- 取得したログファイルを解析して、APIバージョン30.0以下のAPI利用があったらCSV化して出力する
使い方
以下はNode.js は既にインストール済であるという前提で記述しています。 未インストールの場合はNode.jsを参照してNode.jsのインストールを行ってください。
ターミナルを立ち上げて次のコマンドを実行します。
$ git clone https://github.com/shinchit/sf-summer22-investigation.git $ cd sf-summer22-investigation $ ls api-version-checker.js package-lock.json package.json $ npm i npm WARN summer22@1.0.0 No description npm WARN summer22@1.0.0 No repository field. added 93 packages from 151 contributors and audited 94 packages in 1.771s 2 packages are looking for funding run `npm fund` for details found 0 vulnerabilities
次にapi-version-checker.jsをテキストエディタで開いて、Salesforce接続情報を設定します。
/* Salesforce接続情報 */ const isProduction = true; /* 本番環境に接続するならtrue、Sandboxに接続するならfalseを指定する */ const sf_account = '<SalesforceのログインID>'; const sf_password = '<Salesforceのログインパスワード>' + '<Salesforceのセキュリティトークン>'; const sf_env = 'https://' + ( isProduction ? 'login' : 'test' ) + '.salesforce.com';
接続情報を設定したら、まず過去30日のログがいくつあるか調べます。というのは、各ログ毎にその中身を取得するAPIをコールすることになるため、ログの数によっては膨大なAPIコールが発生してしまうからです。
ログの数は次のコマンドで調べます。
$ node api-version-checker.js logs-count-only count of logs: 1652
この場合、ログの数が1652個であるため、各ログの中身を取得するAPIコール数は最低1652回あると判断できます。APIコールが失敗した時のリトライも考慮すると予想APIコール数は2,000回ぐらいでしょうか。
この数を多いと判断するか少ないと判断するかは組織が可能なAPIコール数によります。組織のAPIコール数の状況はSalesforce組織にログインし、[設定] > [会社の設定] > [組織情報] > [API 要求数 (この 24 時間以内)]で確認できます。
組織の残APIコール数に余裕があることを確認したら次のコマンドでv30.0以下のAPI利用のログを抽出します。
$ node api-version-checker.js > usingIllegalApiVersion.csv
生成したCSV(usingIllegalApiVersion.csv)は次のようになります2。
APIバージョンが30.0以下のログが記録されています。
CLIENT_NAMEにモザイクをかけていますが、ここに30.0以下のAPIをコールしているクライアントの名前が表示されます。例えば、/SOME_APP
と記載されていれば、SOMEというアプリがAPIコールをしていると推察することができます。
ログの数が多すぎる場合にどうするか?
デフォルトではこのスクリプトは過去30日間のログを調査します。その設定はスクリプト冒頭部の
/* 調査対象の最古のログの作成日 */ const mostOldestCreatedDate = 'LAST_N_DAYS:30'
の数値を変えることで変更できます。例えばLAST_N_DAYS: 7
とすれば、過去一週間のログを調査します。
他にもSalesforceが提供している日付リテラルを使うことができます。
日付形式と日付リテラル | SOQL および SOSL リファレンス | Salesforce Developers
まとめ
Summer'22 で廃止されるAPIバージョンの調査を行うスクリプトをご紹介しました。 早めに調査・対策をとり、余裕をもってSalesforceのリリースを迎える一助になれば幸いです。