【重要】11月18日 AP0 インスタンスリフレッシュへの準備について というメールを受け取って、ざっと内容をみて土曜日だし切替タイミングでの問題も発生しないだろうって高を括っていたら.... ああああ今朝からシステムが使えないって...
以下を甘く見てました...
i.ハードコード化された参照 (na1.salesforce.com など) がある場合は、必ずインスタンス固有ではない相対 URL (login.salesforce.com など) に更新してください。
ii.会社のネットワーク設定およびメールセキュリティフィルタを、特定の IP 範囲またはデータセンターのみへのアクセスに制限するように設定している場合、追加された最新の範囲を必ず含めてください。含める IP 範囲についての詳細は、ナレッジ記事「許可すべき Salesforce の IP アドレスとドメイン」を参照してください。
さて、弊社では見積をSalesfroceで入力して最終的な見積書(PDF)は外部のサーバーで作成しています。Salesforceと外部サーバーの接続時のセキュイティを確保するために、認証とは別に外部サーバーでは接続可能なサーバー(Salesforceからのコールアウトと弊社の社内)だけにアクセス許可を与えています。
まぁ、apache2.conf なんですがね。ここでIPアドレスでなくてドメイン名を使ってました... まさか変わっているとは思いませんでした。
さて、実際のエラーメッセージは以下でした。
Unexpected character ('<' (code 60)): expected a valid value (number, String, array, object, 'true', 'false' or 'null') at input location [1,2]
Google先生で検索しても意味が良く分からないですね。今となってはapacheの設定でアクセス禁止にしていたことがわかるので、エラーを出しているコードを見れば納得なんですが... はじめは本当に意味が分かりませんでした。
Salesforce側のカスタムコンポーネントや外部サーバーのCGIはここ最近変更した記憶もないし、アップデート等はこの期間中にやっていません。
仕方ないので、Apexのログを眺めていると... うん 403エラーじゃないか。
権限がない? 何でだろう
ということでapacheのエラーログを見てみました。
これだな。IPアドレスが変わったのかもしれない。
[access_compat:error] [pid 5062] [client 161.71.194.8:6576] AH01797: client denied by server configuration: ```
しかし、設定ファイルを見るとドメイン名で指定してました。
以下のサイトでIPアドレスからドメイン名を検索すると、ああああ違うな。違う。
cman.jp > サーバ監視TOP > サーバメンテ支援 > ドメイン/IP検索結果
今まではALLow from proxy-hnd.net.salesforce.comを許可してました。
Allow from proxy-hnd.net.salesforce.com
ところが、今はproxy-hn3.net.salesforce.comに変わってますね。
Sandboxも変わってました...
素早く、設定を変えてapacheを再起動です。
>systemctl stop apache2
>systemctl start apache2
無事にエラーは無くなりした。
これに気付くのに40分ほどかかりましたね。 最初からApexのログをくまなく見ておけば...
Unexpected character ('<' (code 60)): expected a valid value (number, String, array, object, 'true', 'false' or 'null') at input location [1,2]
これに騙されたなぁ。今後のためには403エラーの時のエラーの出し方を変える。
またapacheでの設定はドメイン名をやめてIPアドレスを範囲してした方が無難なのかもしれません。
疲れました。