写点什么

使用 Amazon API Gateway 为 SAP 部署 API

  • 2019-10-18
  • 本文字数:3582 字

    阅读完需:约 12 分钟

使用 Amazon API Gateway 为 SAP 部署 API

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


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


应用程序编程接口(API)在构建这种统一的用户体验方面发挥着至关重要的作用。 借助 API 和 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的更多信息

参考架构

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



  • 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。



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



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



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



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



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



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



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



  1. 使用例如 Postman 的工具测试来 API。 您会注意到,在第一次调用 ProductSet API 之后,后续调用将从缓存中检索。 您可以通过两种方式来验证它:


  • 检查 Amazon CloudWatch 日志以获取 CacheHitCount 和 CacheMissCount 指标。

  • 停止后端 SAP Gateway,然后再调用 API。


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



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


  1. Authorization code flow for OAuth 2.0 – 这是一个用户启动的流程,最适用于用户可以提供登录凭据的场景。 示例包括当用户可以进行登录操作的 Web 或移动应用程序。

  2. 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/


2019-10-18 11:281333
用户头像

发布了 1852 篇内容, 共 119.6 次阅读, 收获喜欢 78 次。

关注

评论

发布
暂无评论
发现更多内容

ThreadLocal不过如此

java易二三

Java 程序员 计算机

奖金丰厚 等你来拿!第六届开源创新大赛飞桨赛道下半场来啦

飞桨PaddlePaddle

人工智能 百度飞桨

PoseiSwap 更新质押系统,并将在 8 月18 日开启“Trident ”快照

大瞿科技

Centos 7系统安装python 3.9.10详细教程。

百度搜索:蓝易云

Python 云计算 Linux centos 运维

直播系统源码协议探索篇(二):网络套接字协议WebSocket

山东布谷科技

软件开发 websocket 源码搭建 直播系统源码 网络套接字协议

这,就是大模型时代的生产力!

飞桨PaddlePaddle

人工智能 paddle 百度飞桨 文心大模型 WAVE SUMMIT

Java如何生成随机数?要不要了解一下!

java易二三

Java 程序员 random 计算机

Java垃圾回收机制详解及性能优化详解。

百度搜索:蓝易云

Java 云计算 Linux 运维 JVM

SimpleDateFormat 线程安全问题修复方案 | 京东物流技术团队

京东科技开发者

jdk8 线程安全 SimpleDateFormat类 SimpleDateFormat 企业号 8 月 PK 榜

java——反射与注解

java易二三

Java 程序员 计算机 API 科技

SpringBoot 太强了,这些优势你需要了解

java易二三

Java 程序员 Spring Boot 后端 计算机

7种创建方式,带你理解Java的单例模式

华为云开发者联盟

Java 开发 华为云 华为云开发者联盟 企业号 8 月 PK 榜

OpenTiny Vue 组件库实现主题配置和UX交互规范自定义

OpenTiny社区

开源 Vue 前端 组件库

基于迁移学习的基础设施成本优化框架,火山引擎数智平台与北京大学联合论文被KDD收录

字节跳动数据平台

大数据 A/B测试 企业号 8 月 PK 榜

WIFI7 M.2 moudle-QCN9274+QCN6274-Pinnacle of WiFi field-support-MU-MIMO-OFDMA-TWT technology

wifi6-yiyi

6G WiFi 7

火山引擎DataLeap:助力PICO落地数据流程规范,提升开发效率

字节跳动数据平台

数据中台 数据治理 数据安全 数据研发 企业号 8 月 PK 榜

OLED屏幕,LED,AMOLED哪个更好?

Dylan

LED 显示器 LED显示屏

鸿蒙生态星河璀璨| 先行者李洋全力以赴,拥抱星辰大海

最新动态

【华秋推荐】无线充电的原理与解决方案

华秋电子

无线充电

《知识图谱互联互通白皮书》正式发布,合合信息携手电子标准院共同推动技术规范化发展

合合技术团队

人工智能 知识图谱

Vue 框架提升加载速度的经验分享

FinClip

Flink 数据集成服务在小红书的降本增效实践

Apache Flink

大数据 flink 实时计算

SpringBoot3集成Kafka

Java kafka 架构 springboot SpringBoot3

React请求机制优化思路 | 京东云技术团队

京东科技开发者

React 前端性能 企业号 8 月 PK 榜 react18 请求机制

一文带你读懂设计模式之责任链模式 | 京东云技术团队

京东科技开发者

源码分析 设计模式 责任链模式 企业号 8 月 PK 榜

PoseiSwap 更新质押系统,并将在 8 月18 日开启“Trident ”快照

威廉META

使用 Amazon API Gateway 为 SAP 部署 API_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章