如需排查 SAP BTP 版本的 ABAP SDK for Google Cloud 问题,第一步是找出问题的可能来源。该问题可能与您的基础架构、SAP BTP 环境和您使用的工具或 ABAP SDK for Google Cloud 本身有关。
如果您的分析表明 ABAP SDK for Google Cloud 存在问题,请使用 SAP 应用日志和错误消息排查问题。
如果您认为问题在于您的 SAP 环境或工具,请与 SAP 联系以获取帮助。
查看前提条件
确保满足 SAP BTP 版本的 ABAP SDK for Google Cloud 安装的所有前提条件。如需了解 SDK 安装前提条件,请参阅准备工作。
阅读 SAP 支持文档
如果您拥有 SAP 用户账号,则可以通过阅读 SAP ONE Support Launchpad 中提供的 SAP 说明和 SAP 知识库文章,找到许多 SAP 软件问题的解决方法。
查看日志
配置日志记录后,SAP BTP 版本的 ABAP SDK for Google Cloud 会将错误消息记录到 SAP 应用日志中。如需详细了解日志记录,请参阅配置日志记录。
如需查看日志消息,请执行以下步骤:
- 访问安装了 ABAP SDK for Google Cloud 的 BTP ABAP 系统的 SAP Fiori launchpad。
- 打开 Google SDK: Application Logs Display 应用。
根据需要提供日志过滤条件:
- 开始日期:选择用于指定日志过滤范围的开始日期。
- 结束日期:选择用于指定日志过滤范围的结束日期。
- 日志对象:选择必须提取其日志的日志对象。
- 日志子对象:选择必须提取其日志的日志子对象。
- 服务名称:选择必须针对其提取日志的 API 服务名称。
点击前往。此时会显示应用日志标头列表。
点击日志标头以导航到详细的项级日志。此时会显示日志消息,其中包含严重级别和时间戳。
日志消息通常由以下两个条目组成:
- Entering:提供有关发生了错误的代码位置的信息。进行问题排查时,您可以在调试时使用此代码位置作为断点。
- 错误消息:提供有关执行操作期间发生的错误的信息。
调试
如果您拥有所需的授权,则可以调试 API 客户端类。
如需调试 API 客户端类,请使用以下选项之一:
将断点添加到
/GOOG/CL_HTTP_CLIENT
类的构造函数,然后运行程序。向您使用的方法添加断点,然后运行程序。
HTTP 跟踪记录
排查错误时,您可以在 SAP 监控系统出站连接中检查 HTTP 调用跟踪记录。如需了解详情,请参阅 SAP 页面监控系统出站通信概览。
常见的操作问题
通过客户端存根公共方法使用 Google Cloud APIs 时,开发者可能会遇到错误和异常。这些错误和异常分为两类:
- 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 API 的 Google Cloud 项目中,启用目标 API。如需了解如何启用 Google Cloud API,请参阅启用 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) 令牌。
原因:通过工作负载身份联合或存储在 Secret Manager 中的 API 密钥使用令牌向 Google Cloud 进行身份验证时,您的身份验证设置缺少必要的配置。
解决方法:验证并更新以下详细信息:
在 Communication Arrangement 应用中,更新工作负载身份联合池 ID 和工作负载身份联合提供方 ID。
在 Google SDK: Main Configuration 应用中,对于通信映射,更新客户端密钥的 Google Cloud 项目 ID 和 Google Cloud 项目编号。
如需了解详情,请参阅配置 ABAP SDK for Google Cloud 以使用工作负载身份联合。
/GOOG/MSG:400 - Error generating STS token:Bad Request-invalid_scope-Invalid scope provided in the request
问题:您无法向 Google Cloud 进行身份验证。
原因:通过工作负载身份联合或存储在 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 密钥无效。
解决方法:如需解决此问题,请在关联的通信安排中维护有效的 Secret 名称和版本。此外,请确保在 Secret 中配置有效的 API 密钥。
如需了解详情,请参阅配置 ABAP SDK for Google Cloud 以使用存储在 Secret Manager 中的 API 密钥
/GOOG/MSG: 461 - Communication Map entry for authentication service not maintained
问题:SDK 无法确定用于身份验证的通信工件。
原因:没有为身份验证服务维护通信映射。
解决方法:在 Google SDK: Main Configuration 应用中,为您所使用的身份验证方法创建通信映射并维护正确的身份验证类型。
如需创建通信映射,请参阅为 SAP BTP 版本的 ABAP SDK for Google Cloud 配置身份验证中关于身份验证方法的说明。
/GOOG/MSG: 461 - Communication Scenario not valid for default Google Authentication
问题:SDK 无法确定用于身份验证的通信安排。
原因:为身份验证服务维护的条目无效。
解决方法:在 Google SDK: Main Configuration 应用中,对于通信映射条目,确保通信安排配置了正确的通信场景和通信系统。
如需更新通信安排,请参阅为 SAP BTP 版本的 ABAP SDK for Google Cloud 设置身份验证中关于身份验证方法的说明。
/GOOG/MSG:400 - Error generating IDP token: Not found
问题:您无法通过 XSUAA 服务生成身份提供方令牌。
原因:通过工作负载身份联合或存储在 Secret Manager 中的 API 密钥使用令牌向 Google Cloud 进行身份验证时,XSUAA 服务的主机名网址或路径值在通信系统中无效。
解决方法:验证并更新以下详细信息:
- 在 XSUAA 服务的通信系统中或通信系统中使用的 BTP 目标中,维护正确的主机名网址。
- 在通信安排中,维护有效的路径。
/GOOG/MSG:400 - Error generating STS token: Not found
问题:您无法生成身份验证所需的 Security Token Service 令牌。
原因:通过工作负载身份联合或存储在 Secret Manager 中的 API 密钥使用令牌向 Google Cloud 进行身份验证,并且在使用 STS 服务的通信安排时,与 STS 服务关联的通信系统无效。
解决方法:验证并更新以下详细信息:
- 在 STS 服务的通信系统中或通信系统中使用的 BTP 目标中,维护正确的主机名网址。
- 在通信安排中,维护有效的路径。
/GOOG/MSG:400 - Error generating IAM token: Not found
问题:您无法生成身份验证所需的 IAM 令牌。
原因:通过工作负载身份联合或存储在 Secret Manager 中的 API 密钥使用令牌向 Google Cloud 进行身份验证,并且在使用 IAM 服务的通信安排时,与 IAM 服务关联的通信映射和通信系统无效。
解决方法:验证并更新以下详细信息:
- 在 IAM 服务的通信系统中或通信系统中使用的 BTP 目标中,维护正确的主机名网址。
- 在通信安排中,维护有效的路径。
配置验证错误
G001 | Check communication scenario
原因:默认授权类 /GOOG/CL_AUTH_GOOGLE
不支持在通信映射中配置的通信场景。
解决方法:如果您使用 /GOOG/CL_AUTH_GOOGLE
作为授权类,请确保根据身份验证方法在通信映射中指定以下通信场景之一:
通信场景 | Authentication |
---|---|
/GOOG/COM_SDK_WIF |
工作负载身份联合 |
/GOOG/COM_SDK_APIKSM |
使用 Secret Manager 的 API 密钥 |
如需更新通信映射,请参阅为 SAP BTP 版本的 ABAP SDK for Google Cloud 设置身份验证中关于身份验证方法的说明。
W001 | Check Comm. arrangement for WIF
原因:无法使用 Google SDK: Main Configuration 应用中指定的通信场景和通信系统来确定通信安排。
解决方法:确保身份验证服务的通信安排使用有效的通信场景和通信系统。
如需了解详情,请参阅配置 ABAP SDK for Google Cloud 以使用工作负载身份联合。
W002 | Fetch XSUAA token
原因:XSUAA 令牌检索失败。
解决方法:确保 XSUAA 服务实例已正确配置。
如需了解详情,请参阅创建授权和信任 (XSUAA) 服务实例。
W003 | Fetch WIF Pool ID
原因:通信安排中不存在工作负载身份联合池 ID。
解决方法:在用于身份验证服务的通信安排中,确保使用通信场景 /GOOG/COM_SDK_WIF
,并且指定了有效的工作负载身份联合池 ID。
如需了解详情,请参阅配置 ABAP SDK for Google Cloud 以使用工作负载身份联合。
W004 | Fetch WIF Provider ID
原因:通信安排中不存在工作负载身份联合提供方 ID。
解决方法:在用于身份验证服务的通信安排中,确保使用通信场景 /GOOG/COM_SDK_WIF
,并且指定了有效的工作负载身份联合提供方 ID。
如需了解详情,请参阅配置 ABAP SDK for Google Cloud 以使用工作负载身份联合。
W005 | Fetch STS token
原因:STS 令牌检索失败。
解决方法:如需解决此问题,请执行以下步骤:
- 在通信映射中,检查是否正确维护了 Google Cloud 项目编号。如需了解详情,请参阅配置 ABAP SDK for Google Cloud 以使用工作负载身份联合。
- 确保在用于身份验证服务的通信安排中,工作负载身份联合池 ID 和提供方 ID 有效且进行了正确维护。如需了解详情,请参阅配置 ABAP SDK for Google Cloud 以使用工作负载身份联合。
- 在通信映射中,如果为
sts:v1
服务维护了一个条目,请确保维护的通信安排有效,在系统中可用,且使用与 SDK 配置应用中所维护的内容相同的通信场景和通信系统。
W006 | Fetch IAM credential token
原因:从 IAM Credentials API 中检索 IAM 令牌失败。
解决方法:如需解决此问题,请执行以下步骤:
- 在通信映射中,检查是否正确维护了 Google Cloud 项目编号。如需了解详情,请参阅配置 ABAP SDK for Google Cloud 以使用工作负载身份联合。
- 在通信映射中,如果为
iamcredentials:v1
服务维护了一个条目,请确保维护的通信安排有效,在系统中可用,且使用与 SDK 配置应用中所指定的内容相同的通信场景和通信系统。
V001 | Check Comm. Arr. for API Key(SM)
原因:无法使用 Google SDK: Main Configuration 应用中指定的通信场景和通信系统来确定通信安排。
解决方法:确保为身份验证服务维护的通信安排有效,在系统中可用,且使用与 SDK 配置应用中所维护的内容相同的通信场景和通信系统。
如需了解详情,请参阅将 ABAP SDK for Google Cloud 配置为使用 Secret Manager 中的 API 密钥。
V002 | Fetch Secret Name
原因:通信安排中不存在 Secret 名称。
解决方法:在用于身份验证服务的通信安排中,确保使用通信场景 /GOOG/COM_SDK_APIKSM
,并且指定了有效的 Secret。
如需了解详情,请参阅将 ABAP SDK for Google Cloud 配置为使用 Secret Manager 中的 API 密钥。
V003 | Fetch Secret Version
原因:在通信安排中,Secret 版本属性未包含有效值。
解决方法:在用于身份验证服务的通信安排中,确保使用通信场景 /GOOG/COM_SDK_APIKSM
,并且指定了有效的 Secret 版本。
如需了解详情,请参阅将 ABAP SDK for Google Cloud 配置为使用 Secret Manager 中的 API 密钥。
V004 | Fetch Token from Secret Manager
原因:Secret Manager API 未能检索包含 API 密钥的 Secret。
解决方法:如需解决此问题,请执行以下步骤:
- 检查服务账号是否具有访问 Secret 所需的权限。如需了解详情,请参阅使用存储在 Secret Manager 中的 API 密钥进行身份验证。
- 检查是否在用于身份验证服务的通信安排中正确维护了 Google Cloud 项目标识符。如需了解详情,请参阅将 ABAP SDK for Google Cloud 配置为使用 Secret Manager 中的 API 密钥。
- 确保在用于身份验证服务的通信安排中,工作负载身份联合池 ID 和提供方 ID 有效且进行了正确维护。如需了解详情,请参阅将 ABAP SDK for Google Cloud 配置为使用 Secret Manager 中的 API 密钥。
- 确保在通信安排中,Secret 名称和 Secret 版本(如果维护)有效且进行了正确维护。如需了解详情,请参阅将 ABAP SDK for Google Cloud 配置为使用 Secret Manager 中的 API 密钥。
Google Cloud APIs 返回的错误消息
每个 API 客户端存根都具有导出参数,用于提供 API 返回代码和错误消息。
ev_ret_code
包含 HTTP 状态代码。如果 API 返回错误,此参数包含一个值4XX
。ev_err_resp
包含 API 返回的错误类别和错误消息。
以下示例显示在使用已存在的主机名称创建新 Pub/Sub 主题时由 API 返回的错误。
ERROR_TEXT
:ConflictERROR_DESCRIPTION
:项目中已存在该资源 (resource=SAMPLE_TOPIC_01
)
对于 API 返回的错误,我们建议您查看相应 API 的公开文档。
通过社区获取支持
在 Cloud 论坛上提出问题并与社区讨论 ABAP SDK for Google Cloud。
获取支持
如果您在解决 SAP BTP 版本的 ABAP SDK for Google Cloud 问题时需要帮助,请收集所有可用的诊断信息,并与 Cloud Customer Care 联系。
如需了解如何与 Cloud Customer Care 联系,请参阅获取 SAP on Google Cloud 支持。