ABAP SDK for Google Cloud の SAP BTP エディションの問題をトラブルシューティングするには、まず問題の原因を分析します。インフラストラクチャ、使用している SAP BTP 環境とツール、あるいは ABAP SDK for Google Cloud 自体が、問題と関連している可能性があります。
分析で ABAP SDK for Google Cloud の問題が確認された場合は、SAP アプリケーション ログとエラー メッセージを使用して問題のトラブルシューティングを行います。
SAP 環境またはツールに問題があると思われる場合は、SAP にお問い合わせください。
前提条件の確認
ABAP SDK for Google Cloud の SAP BTP エディションをインストールする前に、すべての前提条件が満たされていることを確認します。SDK のインストールの前提条件については、始める前にをご覧ください。
SAP のサポート ドキュメントを読む
SAP ユーザー アカウントをお持ちの場合は、SAP ONE Support Launchpad で入手できる SAP ノートと SAP ナレッジベース記事を参照することで、多くの SAP ソフトウェアの問題を解決できます。
ログを表示
ロギングが構成されている場合、ABAP SDK for Google Cloud の SAP BTP エディションはエラー メッセージを SAP アプリケーション ログに記録します。ロギングの詳細については、ロギングを構成するをご覧ください。
ログメッセージを表示するには、次の手順を行います。
- ABAP SDK for Google Cloud がインストールされている BTP ABAP システムの SAP Fiori ランチャーにアクセスします。
- Google SDK: Application Logs Display アプリを開きます。
必要に応じて、ログフィルタを指定します。
- From: ログをフィルタする期間の開始日を選択します。
- To: ログをフィルタする期間の終了日を選択します。
- ログ オブジェクト: ログを取得するログ オブジェクトを選択します。
- ログ サブオブジェクト: ログを取得するログ サブオブジェクトを選択します。
- サービス名: ログを取得する API サービス名を選択します。
[Go] をクリックします。アプリケーション ログのヘッダーのリストが表示されます。
ログのヘッダーをクリックすると、アイテムレベルの詳細ログに移動します。ログメッセージが、重大度とタイムスタンプとともに表示されます。
通常、ログメッセージは次の 2 つのエントリで構成されます。
- 発生場所: エラーが発生したコードの場所に関する情報を提供します。トラブルシューティングのため、デバッグ中にこのコードの位置をブレークポイントとして使用できます。
- エラー メッセージ: オペレーションの実行中に発生したエラーの情報を提供します。
デバッグ
必要な認可を取得している場合は、API クライアント クラスをデバッグできます。
API クライアント クラスをデバッグするには、次のいずれかのオプションを使用します。
/GOOG/CL_HTTP_CLIENT
クラスのコンストラクタにブレークポイントを追加して、プログラムを実行します。使用しているメソッドにブレークポイントを追加して、プログラムを実行します。
HTTP トレース
エラーのトラブルシューティングでは、SAP のシステム送信接続の監視で HTTP 呼び出しのトレースを調べることができます。詳細については、SAP のページ システム送信通信の監視(一般)をご覧ください。
オペレーションに関する一般的な問題
クライアント スタブのパブリック メソッドを介して Google Cloud APIs を使用すると、エラーや例外が発生する可能性があります。これらのエラーと例外は次の 2 つのカテゴリに分類されます。
- ABAP SDK for Google Cloud によってトリガーされたエラーと例外
- Google Cloud APIs から返されたエラー
このセクションでは、SDK によってトリガーされるエラーと例外について説明します。
/GOOG/MSG: 503 - HTTP Communication Failure exception occurred during the request sending
問題: API メソッドへの HTTP リクエストが失敗する。
原因: この問題は、接続の問題が原因で発生する可能性があります。
解決策: Google Cloud APIs にアクセスしようとしている Google Cloud プロジェクトで、ターゲット API を有効にします。Google Cloud APIs を有効にする方法については、API の有効化をご覧ください。
/GOOG/MSG:400 - Error generating STS token:Bad Request-invalid_request-Invalid value for " audience". This value should be the full resource name of the Identity Provider. See https://cloud.google.com/iam/docs/reference/sts/rest/v1/TopLevel/token for the list of possible formats.
問題: Security Token Service(STS)トークンを生成できない。
原因: Workload Identity 連携によるトークンまたは Secret Manager に保存されている API キーを使用して Google Cloud に対する認証を行う場合、必要な構成が認証の設定に不足しています。
解決策: 次の詳細を確認して更新します。
Communication Arrangement アプリで、Workload Identity 連携のプール ID と Workload Identity 連携のプロバイダ ID を更新します。
Google SDK: Main Configuration アプリで、通信マップについて、クライアント鍵の Google Cloud プロジェクト ID と Google Cloud プロジェクト番号を更新します。
詳細については、Workload Identity 連携を使用するように ABAP SDK for Google Cloud を構成するをご覧ください。
/GOOG/MSG:400 - Error generating STS token:Bad Request-invalid_scope-Invalid scope provided in the request
問題: Google Cloud に対して認証できない。
原因: Workload Identity 連携によるトークンまたは Secret Manager に保存されている API キーを使用して Google Cloud に対する認証を行う場合、Google Cloud のスコープが無効です。
解決策: Google SDK: Main Configuration アプリで、通信マップの Google Cloud のスコープが https://www.googleapis.com/auth/cloud-platform
であることを確認します。
/GOOG/MSG:461 - API Key not valid. Please pass a valid API Key
問題: API キーベースの認証を使用して Google Cloud に対して認証できない。
原因: 通信設定で無効な API キーが指定されています。
解決策: この問題を解決するには、関連する通信設定で有効なシークレット名とバージョンを指定します。また、シークレットに有効な API キーが構成されていることを確認します。
詳細については、Secret Manager に保存されている API キーを使用するように ABAP SDK for Google Cloud を構成するをご覧ください。
/GOOG/MSG: 461 - Communication Map entry for authentication service not maintained
問題: SDK が認証用の通信アーティファクトを特定できない。
原因: 認証サービスに通信マップが設定されていません。
解決策: Google SDK: Main Configuration アプリで通信マップを作成し、使用している認証方法用の適切な認証タイプを指定します。
通信マップを作成するには、ABAP SDK for Google Cloud の SAP BTP エディションの認証を設定するで認証方法の手順をご覧ください。
/GOOG/MSG: 461 - Communication Scenario not valid for default Google Authentication
問題: SDK が認証の通信設定を判断できない。
原因: 認証サービス用に保持されているエントリが無効です。
解決策: Google SDK: Main Configuration アプリで、通信マップのエントリに対し、通信設定が正しい通信シナリオと通信システムで構成されていることを確認します。
通信設定を更新するには、ABAP SDK for Google Cloud の SAP BTP エディションの認証を設定するで、認証方法の手順をご覧ください。
/GOOG/MSG:400 - Error generating IDP token: Not found
問題: XSUAA サービスから ID プロバイダ トークンを生成できない。
原因: Workload Identity 連携によるトークンまたは Secret Manager に保存されている API キーを使用して Google Cloud に対する認証を行う場合、通信システムで XSUAA サービスのホスト名 URL またはパス値が無効です。
解決策: 次の詳細を確認して更新します。
- XSUAA サービスの通信システムまたは通信システムで使用される BTP の宛先で、正しいホスト名 URL を指定します。
- 通信設定で、有効なパスを指定します。
/GOOG/MSG:400 - Error generating STS token: Not found
問題: 認証に必要な Security Token Service のトークンを生成できない。
原因: Workload Identity 連携によるトークンまたは Secret Manager に保存されている API キーを使用して Google Cloud に対する認証を行い、STS サービスの通信設定を使用している場合、STS サービスに関連付けられた通信システムが無効です。
解決策: 次の詳細を確認して更新します。
- STS サービスの通信システム、または通信システムで使用される BTP の宛先で、正しいホスト名 URL を指定します。
- 通信設定で、有効なパスを指定します。
/GOOG/MSG:400 - Error generating IAM token: Not found
問題: 認証に必要な IAM トークンを生成できない。
原因: Workload Identity 連携によるトークンまたは Secret Manager に保存されている API キーを使用して Google Cloud に対する認証を行い、IAM サービスの通信設定を使用している場合、IAM サービスに関連付けられている通信マップと通信システムが無効です。
解決策: 次の詳細を確認して更新します。
- IAM サービスの通信システム、または通信システムで使用される BTP の宛先で、正しいホスト名 URL を指定します。
- 通信設定で、有効なパスを指定します。
構成の検証エラー
G001 | Check communication scenario
原因: 通信マップで構成された通信シナリオが、デフォルトの認可クラス /GOOG/CL_AUTH_GOOGLE
でサポートされていません。
解決策: 認可クラスとして /GOOG/CL_AUTH_GOOGLE
を使用している場合は、認証方法に応じて、通信マップ内で次のいずれかの通信シナリオを指定してください。
通信シナリオ | 認証 |
---|---|
/GOOG/COM_SDK_WIF |
Workload Identity 連携 |
/GOOG/COM_SDK_APIKSM |
Secret Manager を使用した API キー |
通信マップを更新するには、ABAP SDK for Google Cloud の SAP BTP エディションの認証を設定するで、認証方法の手順をご覧ください。
W001 | Check Comm. arrangement for WIF
原因: Google SDK: Main Configuration アプリで指定された通信シナリオと通信システムを使用して、通信設定を特定できない。
解決策: 認証サービスの通信設定が、有効な通信シナリオと通信システムを使用していることを確認します。
詳細については、Workload Identity 連携を使用するように ABAP SDK for Google Cloud を構成するをご覧ください。
W002 | Fetch XSUAA token
原因: XSUAA トークンの取得に失敗しています。
解決策: XSUAA サービス インスタンスが正しく構成されていることを確認します。
詳細については、Authorization and Trust(XSUAA)サービス インスタンスを作成するをご覧ください。
W003 | Fetch WIF Pool ID
原因: Workload Identity 連携プール ID が通信設定中に存在していません。
解決策: 認証サービスに使用される通信設定で、通信シナリオ /GOOG/COM_SDK_WIF
が使用され、有効な Workload Identity 連携プール ID が指定されていることを確認します。
詳細については、Workload Identity 連携を使用するように ABAP SDK for Google Cloud を構成するをご覧ください。
W004 | Fetch WIF Provider ID
原因: Workload Identity 連携プロバイダ ID が通信設定中に存在していません。
解決策: 認証サービスに使用される通信構成で、通信シナリオ /GOOG/COM_SDK_WIF
が使用され、有効な Workload Identity 連携プロバイダ ID が指定されていることを確認します。
詳細については、Workload Identity 連携を使用するように ABAP SDK for Google Cloud を構成するをご覧ください。
W005 | Fetch STS token
原因: STS トークンの取得に失敗しています。
解決策: この問題を解決するには、次の手順を完了します。
- 通信マップで、Google Cloud プロジェクト番号が正しく指定されているかどうかを確認します。詳細については、Workload Identity 連携を使用するように ABAP SDK for Google Cloud を構成するをご覧ください。
- Workload Identity 連携プール ID とプロバイダ ID が有効であり、認証サービスに使用される通信設定で正しく指定されていることを確認します。詳細については、Workload Identity 連携を使用するように ABAP SDK for Google Cloud を構成するをご覧ください。
- 通信マップ内で
sts:v1
サービス用のエントリが指定されている場合は、指定されている通信設定が有効かつシステムで利用可能であり、SDK 構成アプリで指定されているものと同じ通信シナリオと通信システムを使用していることを確認します。
W006 | Fetch IAM credential token
原因: IAM トークンの取得が IAM Credentials API で失敗しています。
解決策: この問題を解決するには、次の手順を完了します。
- 通信マップで、Google Cloud プロジェクト番号が正しく指定されているかどうかを確認します。詳細については、Workload Identity 連携を使用するように ABAP SDK for Google Cloud を構成するをご覧ください。
- 通信マップ内で、
iamcredentials:v1
サービスに関するエントリが指定されている場合は、指定されている通信設定が有効かつシステムで使用可能であり、SDK 構成アプリで指定されたものと同じ通信シナリオと通信システムを使用していることを確認します。
V001 | Check Comm. Arr. for API Key(SM)
原因: Google SDK: Main Configuration アプリで指定された通信シナリオと通信システムを使用して、通信設定を特定できません。
解決策: 認証サービス用に指定されている通信設定が有効かつシステムで使用可能であり、SDK 構成アプリで指定されているものと同じ通信シナリオと通信システムを使用していることを確認します。
詳細については、Secret Manager の API キーを使用するように ABAP SDK for Google Cloud を構成するをご覧ください。
V002 | Fetch Secret Name
原因: シークレット名が通信設定に存在しません。
解決策: 認証サービスに使用される通信設定で、通信シナリオ /GOOG/COM_SDK_APIKSM
が使用され、有効なシークレットが指定されていることを確認します。
詳細については、Secret Manager の API キーを使用するように ABAP SDK for Google Cloud を構成するをご覧ください。
V003 | Fetch Secret Version
原因: 通信設定で、シークレット バージョン プロパティに有効な値が含まれていません。
解決策: 認証サービスに使用される通信設定で、通信シナリオ /GOOG/COM_SDK_APIKSM
が使用され、有効なシークレット バージョンが指定されていることを確認します。
詳細については、Secret Manager の API キーを使用するように ABAP SDK for Google Cloud を構成するをご覧ください。
V004 | Fetch Token from Secret Manager
原因: Secret Manager API が API キーを含むシークレットを取得できませんでした。
解決策: この問題を解決するには、次の手順を完了します。
- サービス アカウントに、シークレットにアクセスするために必要な権限があるかどうかを確認します。詳細については、Secret Manager に保存されている API キーを使用した認証をご覧ください。
- 認証サービスに使用される通信設定で Google Cloud プロジェクト ID が正しく指定されているかどうかを確認します。詳細については、Secret Manager の API キーを使用するように ABAP SDK for Google Cloud を構成するをご覧ください。
- Workload Identity 連携のプール ID とプロバイダ ID が有効であり、認証サービスに使用される通信設定で正しく指定されていることを確認します。詳細については、Secret Manager の API キーを使用するように ABAP SDK for Google Cloud を構成するをご覧ください。
- シークレット名とシークレット バージョン(指定されている場合)が有効であり、通信設定で正しく設定されていることを確認します。詳細については、Secret Manager の API キーを使用するように ABAP SDK for Google Cloud を構成するをご覧ください。
Google Cloud APIs から返されるエラー メッセージ
すべての API クライアント スタブには、API 戻りコードとエラー メッセージを提供するエクスポート パラメータがあります。
ev_ret_code
には HTTP ステータス コードが含まれています。API からエラーが返された場合、このパラメータには値4XX
が含まれます。ev_err_resp
には API から返されたエラーカテゴリとエラー メッセージが格納されます。
次の例は、すでに存在するトピック名で新しい Pub/Sub トピックを作成したときに API が返すエラーを示しています。
ERROR_TEXT
: 競合ERROR_DESCRIPTION
: リソースはすでにプロジェクトに存在します(resource=SAMPLE_TOPIC_01
)
API から返されるエラーについては、対応する API の公開ドキュメントをご確認ください。
コミュニティのサポートを利用する
Cloud フォーラムのコミュニティで ABAP SDK for Google Cloud について質問したり、ディスカッションに参加できます。
サポートを受ける
ABAP SDK for Google Cloud の SAP BTP エディションの問題を解決するためにサポートを必要とする場合は、取得可能なすべての診断情報を収集し、Cloud カスタマーケアにお問い合わせください。
Cloud カスタマーケアへのお問い合わせの詳細については、Google Cloud での SAP の使用に関するサポートを利用するをご覧ください。