使用 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流程:

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章