Accel-Mart Plus環境でのWebAPI呼び出しタイムアウト問題

質問

⚠️ この事例は公開されてから1年以上経過しています。 情報が古い可能性がありますので、ご注意ください。

🕓 事例公開日 : 2025-03-14

【背景】

LogicDesignerで作成したWebAPIを自分自身のシステム内で呼び出したいと考えている。ローカル開発環境では正常に動作するが、Accel-Mart Plus環境にデプロイ後にタイムアウトが発生してしまう。



1. 事象

症状の説明:

・ローカル環境:WebAPI呼び出しが正常に動作
・Accel-Mart Plus環境:接続タイムアウトが発生



2. 発生条件

・intra-martのユーザモジュールとして登録した自作WebAPIを呼び出す際
・@IMAuthenticationを使用した認証設定
・Accel-Mart Plus環境でのデプロイ後

回答

1. 原因

技術的な原因:

Accel-Mart Plus環境でbaseUrlを使用したWebAPI呼び出しを行う際、インターネット経由でのアクセスとなるため、APサーバのグローバルIPアドレスからの接続許可が必要です。

技術的要因の分析:

・baseUrlの値がhttps://example.com/imartとなる → インターネット経由でのアクセスが発生
・フロントエンド側のセキュリティグループ設定 → APサーバからの接続が許可されていない
・ホワイトリスト未登録の状態 → 外部からのアクセスがブロックされる

根本的な要因:

Accel-Mart Plus環境では、外部からのアクセスに対してセキュリティグループによる接続制御が行われているため、APサーバのグローバルIPアドレスを明示的に許可する必要があります。

2. 対応方法

根本解決方法(外部アクセス方式):

1. 接続情報更新ガイドを参照
2. フロントエンド側のセキュリティグループにAPサーバのグローバルIPアドレスの接続許可設定を追加
3. APサーバのグローバルIPアドレスは開通通知書、または、運用管理サイトの契約内容参照で確認

根本解決方法(内部アクセス方式):

1. エンドポイントを「http://127.0.0.1/imart/aaa/bbb」形式に変更
2. 内部ループバックアドレスを使用することで外部アクセスを回避

環境差分対応方法:

セッション情報「baseUrl」からcontext_pathを動的に抽出する方法:
1. ロジックフロー定義で文字列操作関数「split」を使用してbaseUrlを「/」で分割
2. 配列操作関数「get」でindex 3の要素(context_path)を取得
3. 「http://127.0.0.1/」と取得したcontext_pathを「concat」で結合
4. 結合した文字列をREST定義の入力値に設定 詳細な実装方法はセッション情報ドキュメントおよびロジックフロー定義ガイドをご参照ください。

3. 原因究明に至るまでの調査方法

1. ローカル環境とAccel-Mart Plus環境での動作差異の確認
2. baseUrlの実際の値の確認(https://example.com/imart vs http://127.0.0.1/imart)
3. タイムアウトエラーと404エラーの症状別分析
4. セキュリティグループ設定とネットワーク経路の検証
5. 内部ループバックアドレスでの疎通テスト実施
この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています
Powered by Zendesk