Java、Python、Golang で利用できる公式 EAS SDK は、VPC 直接接続 シナリオにおけるサービス呼び出しに推奨される方法です。この記事では、統合前に SDK の動作を理解できるように、SDK のユースケース、動作原理、トラブルシューティング方法について説明します。
ユースケース
公式 EAS SDK の最も一般的なユースケースは VPC 直接接続 です。このシナリオでは、SDK がサービスディスカバリと負荷分散を自動的に処理します。
共有ゲートウェイまたは専用ゲートウェイを経由する場合など、他の呼び出し方法では、通常、標準の HTTP クライアントで十分なため、SDK は不要です。
呼び出し方法の選択に関するガイダンスについては、サービス呼び出しをご参照ください。
仕組み
SDK は、ゲートウェイアクセス と VPC 直接接続 の 2 種類のエンドポイントをサポートします。リクエストのルーティング方法は異なりますが、呼び出しプロセスはいずれも次の 3 段階に従います:
クライアントの初期化:
PredictClientを作成し、エンドポイント、サービス名、トークン (EAS コンソールのサービス詳細ページから取得できます) を設定してから、init()を呼び出します。リクエストの構築:サービスの入出力形式に基づき、
StringRequest、TFRequest、TorchRequestなどのリクエストオブジェクトを構築します。リクエストタイプは、サービスが想定するものと一致している必要があります。プロセッサでデプロイされたサービスについては、各プロセッサに対応するリクエストタイプを プロセッサデプロイメント で確認してください。サービスの呼び出し:
predict()メソッドを呼び出してリクエストを送信し、応答を受信します。SDK は、トークン署名、失敗時のリトライ (デフォルトで 5 回)、応答のデシリアライゼーションを自動的に処理します。
VPC 直接接続 シナリオでは、公式 SDK がサービスディスカバリと負荷分散を処理します。詳細については、VPC 直接接続 - 公式 SDK を使用した呼び出しをご参照ください。
上記の同期推論の呼び出しに加えて、SDK は キューサービス による呼び出し方法も提供します:
QueueClientを使用して、入力キューにリクエストを非同期でプッシュします。サービスはリクエストを消費し、結果を出力キューに書き込みます。クライアントは、出力キューをサブスクライブ (ウォッチ) して結果を受信します。
この呼び出し方法は、非同期推論や長時間実行タスクなどのシナリオに適しています。プロセスは同期推論とは異なります。詳細な手順については、各言語別 SDK ガイドの例をご参照ください。
呼び出しのトラブルシューティング
SDK の呼び出しに失敗した場合は、クライアント → ネットワーク → サーバー側の順に、レイヤーごとに切り分けてください。代表的な問題カテゴリとトラブルシューティング手順は次のとおりです:
認証 (401 / 403):トークンが正しく渡されているか、対象サービスと一致しているか、またはコンソールでリセットされていないかを確認してください。
ルーティング (404):エンドポイントとサービス名が、EAS コンソールのサービス詳細ページに表示されているものと一致しているかを確認してください。VPC 直接接続を使用している場合は、サービスディスカバリがインスタンスリストを取得できていることを確認してください。
接続性 (connection refused / timeout / DNS resolution failed):クライアントとサーバーが同一 VPC 内にあるか、セキュリティグループのルールでトラフィックが許可されているか、エンドポイントドメインの DNS 名前解決が可能かを確認してください。
サーバー側 (5xx / empty response / invalid response format):サービスログを確認し、これらの問題の根本原因を特定してください。
サービスステータスコードの一覧、典型的なエラーメッセージ、推奨される解決策の全リストについては、「Appendix: Service status codes and common errors」をご参照ください。