使用 Amazon API Gateway 为 SAP 部署 API

阅读数:391 2019 年 10 月 18 日 11:28

使用 Amazon API Gateway 为 SAP 部署 API

_ 本文由 __Amazon Web Services (AWS)_的 SAP__ 数字顾问 KK Ramamoorthy__ 撰写。

您的客户,合作伙伴和员工希望通过各种渠道获得一种无缝,安全的用户体验。 例如,使用像亚马逊 Alexa 等支持语音功能的设备下订单的客户,也应该在移动设备上得到相同的体验。 或者使用移动 APP 访问培训手册的现场技术人员,也应能够在增强现实 APP 上访问这些手册并可以与其交互。

应用程序编程接口(API)在构建这种统一的用户体验方面发挥着至关重要的作用。 借助 API 和 API 管理平台,您可以以敏捷,灵活,安全和可扩展的方式把域驱动的服务发布给广大用户使用。

使用 Amazon API Gateway 为 SAP 部署 API

API 管理平台提供以下关键功能:

  • 不受规模影响的性能
  • 安全性和灵活性
  • 能够对流量限速
  • 支持全球部署和边缘缓存
  • 生命周期管理和版本控制
  • 支持金丝雀部署
  • API 密钥管理
  • 监控 API 活动
  • 用于多种编码语言的 SDK 生成
  • API 的编目和文档

Amazon API Gateway 是一个无服务器的全托管 API 管理平台,可在任何规模上实现以上这些功能。 API Gateway 可以轻松连接到 HTTP(S) Endpoint 或调用 AWS Lambda 函数来执行自定义业务逻辑。 您还可以灵活地在 API Gateway 内缓存数据,而无需在每次服务呼叫时都访问您的后端系统。 这些只是 API Gateway 的部分功能。 有关更多信息,请参阅 AWS 网站上的 API Gateway

API Gateway 和 SAP

SAP 客户如何从 API Gateway 中受益呢? SAP 提供的 SAP Gateway 可以利用开放数据协议(OData)发布基于 REST 的服务。 您可以在虚拟私有云(VPC)中的私有子网中快速拉起一个 SAP Gateway Hub 系统,然后通过网络负载均衡器(NLB)将其安全地暴露给 API Gateway。 API 资源通过 API Gateway 公开后,您可以根据自己的特定业务需求对其进行进一步微调。 例如,您可以选择对某些特定服务的响应内容进行丰富,而对于其他的服务,您可能只希望通过本地代理或缓存来作为响应。

对于 Web 和移动应用程序,您可以添加 AWS AppSync 来和 API Gateway 一起使用。 AWS AppSync 是一项完全托管的服务,可以支持数据驱动的应用程序开发。 它也原生支持离线情况和冲突情况的解决方案。 查找有关 AWS AppSync 的更多信息

参考架构

此示例参考架构说明了所有这些组件是如何结合在一起的。

使用 Amazon API Gateway 为 SAP 部署 API

  • VPC 中的私有子网中包含您的 SAP 应用程序,以及 SAP Gateway。
  • 置于私有子网中的网络负载均衡器(NLB)将可以访问 SAP Gateway 的 HTTP(S) 端口,并将针对其的任何请求进行代理转发。 为了简化起见,SAP Gateway 在此体系结构中显示为一个 Amazon EC2 实例。 但请注意,您需要实现多个应用程序服务器和 Web Dispatcher 才能实现有效的负载平衡。
  • VPC Link 可安全地将 API Gateway 与网络负载均衡器 (NLB) 相连接。 这使您可以通过 API Gateway 安全地发布您的 SAP 服务,而无需将 SAP 系统公开发布到外网。 如果需要,您可以使用由 API Gateway 颁发,并被 SAP 系统信任的客户端证书来进一步保护您的服务。 这样可以确保只有 API Gateway 可以访问 SAP Gateway,从而增加了额外的安全保护。
  • 对于复杂的业务逻辑,您可以使用 API 网关来触发部署在 VPC 中的 Lambda 函数。
  • API 公开发布后,您可以使用 AWS AppSync 进一步抽象您的 API 来进行数据驱动的移动和 Web 应用程序开发。
  • 其他 AWS 服务(如 Amazon Lex 和 AWS IoT)也可以与 API Gateway 集成,从而它们也使用 API Gateway 发布出来的服务。
  • 通过管理用户身份(包括用户池和联合身份),Amazon Cognito 安全地把所有这些服务联系起来,并把所有 AWS 服务和 SAP 后端服务中已登录用户的上下文记录下来。

设置步骤

现在,我们开始实现这个架构。 我们将通过 API Gateway 发布一个 SAP 提供的示例服务。 请参阅这个 SAP 示例服务的文档 。 这个示例服务将业务伙伴,联系人,订单和产品等各种业务对象利用 OData 服务发布了出来。

  1. 在私有子网中安装 SAP NetWeaver Gateway Advanced Business Application Programming (ABAP)系统。 开发者版本可以从 SAP 获取: SAP NetWeaver AS ABAP 7.51 SP02 SAP NetWeaver AS ABAP 7.51 SP02 on HANA (Cloud Appliance Library edition)

  2. SAP 系统安装并配置完成后,打开 Amazon EC2 控制台 https://console.aws.amazon.com/ec2/ 。 在导航面版的 负载均衡 下 ,选择 负载均衡器 , 创建负载均衡器 ,并创建一个内部网络负载均衡器(Internal NLB),并将 SAP NetWeaver ABAP 系统作为 NLB 的目标。 请注意网络负载均衡器的 DNS 名称 ; 我们稍后将需要这个信息来设置 API Gateway。

使用 Amazon API Gateway 为 SAP 部署 API

  1. 从 API Gateway 控制台 https://console.aws.amazon.com/apigateway/ 创建 VPC Link。 这将通过 API Gateway 为私有子网中的 SAP 系统提供一种安全的访问方法。

使用 Amazon API Gateway 为 SAP 部署 API

  1. API Gateway 支持透传方式的代理集成。 当您只是简单地希望 API Gateway 在客户端和服务器端(在这个例子里是 SAP)之间传递请求和响应时,这会派上用场。 我们将创建一个路径为/sap/opu/odata/IWBEP/GWSAMPLE_BASIC/{proxy}的代理资源。

使用 Amazon API Gateway 为 SAP 部署 API

  1. 我们将在{proxy}资源下添加一个 ANY 操作来解析各种 HTTP 方法(例如, GET , PUT , POST ),并通过 VPC Link 将其转发到 SAP Gateway。 请记住您在步骤 2 中记下的 DNS 名称, 您将在此使用该 DNS 名称作为端点 URL。

使用 Amazon API Gateway 为 SAP 部署 API

  1. 现在,您可能想要在 API Gateway 层缓存一些资源,这样就不需要访问后端的 SAP Gateway 了。 缓存提高了 API 的性能。 在我们的示例中,我们缓存了产品数据,因为它作为主数据,在 SAP 系统中是不会经常更改的。 要缓存数据,请转至 API Gateway 控制台,选择/GWSAMPLE_BASIC资源,为ProductSet创建子资源,然后将 GET 操作添加到该资源。

使用 Amazon API Gateway 为 SAP 部署 API

  1. 现在开始部署 API。 我们将其部署到一个名为 dev 的阶段。

使用 Amazon API Gateway 为 SAP 部署 API

  1. 在 API Gateway 控制台中,导航至 dev 阶段编辑器并选中 Cache Settings 下的 Enable API cache框。 将 Cache capacity 设置为 0.5 GB,并将 Cache time-to-live (TTL) 设置为 3600 秒。 建立缓存需要 4-5 分钟。

使用 Amazon API Gateway 为 SAP 部署 API

  1. 您只想缓存ProductSet资源。 为避免缓存{proxy+}资源,需要选择 GET 操作。 为此方法选择 Override 并取消 Enable Method Cache 的选项 。 对所有其他方法也需要这样做。

使用 Amazon API Gateway 为 SAP 部署 API

  1. 使用例如 Postman 的工具测试来 API。 您会注意到,在第一次调用 ProductSet API 之后,后续调用将从缓存中检索。 您可以通过两种方式来验证它:
  • 检查 Amazon CloudWatch 日志以获取 CacheHitCount 和 CacheMissCount 指标。
  • 停止后端 SAP Gateway,然后再调用 API。

ProductSet API 应该仍然可以工作,但是数据将从缓存中取出,而不是从后端 SAP 系统中获取。

使用 Amazon API Gateway 为 SAP 部署 API

注意:在这个测试中,我们使用基本身份验证(在授权标题字段中),这对测试目的而言是可以接受的。 但是,对于生产方案,您将使用 OAuth 2.0 流进行身份验证。 基于 SAP ABAP 的应用程序支持两种类型的 OAuth 2.0 流程:

    • Authorization code flow for OAuth 2.0 – 这是一个用户启动的流程,最适用于用户可以提供登录凭据的场景。 示例包括当用户可以进行登录操作的 Web 或移动应用程序。
    • SAML 2.0 Bearer Assertion Flow for OAuth 2.0 – 这是服务器到服务器的通信流程,其中在一个服务器中已经通过身份验证的用户的用户上下文信息,可以用于在没有用户参与的情况下登录到另一台服务器。 例如,API Gateway 调用 Lambda 函数,该函数可以通过使用 OpenSAML2 类的开源 SAML SDK 为 AWS 登录用户发出 SAML 断言。 然后,使用 SAML 断言,您可以获得 SAP 中同一用户的访问令牌。

关于这两种流程类型还有很多内容,我们将在随后的博文中更详细地介绍它们。

下一步

我们只是在这里粗浅的介绍了 AWS API Gateway 的各种能力。 我们在本博客中分享的内容可以帮助您快速开始集成 Amazon API Gateway 和 SAP。 在使用 API Gateway 将 SAP 流程与 AWS 服务集成之后,您还可以执行以下操作:

  • 使用 Amazon Lex 利用 chatbot(聊天机器人)功能丰富您的应用程序。
  • 使用 Amazon Rekognition 提高图像识别功能,提高生产力。
  • 使用 Amazon Sumerian 为增强现实应用带来增强的用户体验。
  • 使用 AWS AppSync 构建数据驱动的应用程序,该应用程序原生支持脱机状态下的用例。
  • 使用 AWS Mobile Hub 测试,部署和维护您的移动应用程序。
  • 还有很多其他选择……

可能性是无止境的,大多数 AWS 服务仅仅需要一个 API 调用就可以使用。 API Gateway 提供完全托管,即用即付的服务,使您能够轻松创建和管理大规模 API。 我们希望你觉得这篇文章有用。 请不要犹豫与我们联系,并提出您的意见或问题。

作者介绍:
戴俊

AWS 中国专业服务团队 SAP 咨询顾问,在加入 AWS 之前,曾供职于 SAP 和 EMC 历任 SAP 技术顾问及 SAP 解决方案工程师,在 SAP 系统架构设计与迁移方面有着丰富的经验。现任职于 AWS 中国专业服务团队,主要为客户提供云上 SAP 系统架构设计,SAP 上云迁移等咨询服务。

本文转载自 AWS 技术博客。

原文链接:
https://amazonaws-china.com/cn/blogs/china/amazon-api-gateway-sap-api/

欲了解 AWS 的更多信息,请访问【AWS 技术专区】

评论

发布