在AWS無伺服器架構上實施應用程式介面

来源:https://www.cnblogs.com/wintersun/p/18310231
-Advertisement-
Play Games

本文介紹了在 AWS 無伺服器架構上實現 RESTful API 的過程。它詳細概述了架構、數據流和可使用的 AWS 服務。本文還介紹了無伺服器架構與傳統方法相比的優勢。什麼是無伺服器架構? 無伺服器架構,又稱無伺服器計算或功能即服務,是一種軟體設計方法,允許開發人員在不管理底層基礎設施的情況下構建 ...


    本文介紹了在 AWS 無伺服器架構上實現 RESTful API 的過程。它詳細概述了架構、數據流和可使用的 AWS 服務。本文還介紹了無伺服器架構與傳統方法相比的優勢。

什麼是無伺服器架構?
    無伺服器架構,又稱無伺服器計算或功能即服務,是一種軟體設計方法,允許開發人員在不管理底層基礎設施的情況下構建和運行應用程式。雲服務提供商負責管理和擴展雲基礎設施,包括配置伺服器以運行應用程式、資料庫和存儲。

無伺服器架構的重要性

  1. 企業只需為其使用的計算資源(如請求數量、執行時間和消耗的資源)付費,因此沒有硬體或軟體的前期成本。這樣就無需為閑置的基礎設施付費,從而大大節省了成本。
  2. 無伺服器架構可根據工作負載自動擴大或縮小規模。這可確保應用程式能夠處理不同水平的流量。
  3. 每個功能都可以獨立擴展,確保根據需求有效分配資源。
  4. 無伺服器架構非常適合事件驅動型應用,即通過 HTTP 請求、資料庫更改或消息隊列更新等特定事件觸發功能。

用於實施的 AWS 服務


以下 AWS 服務可用於 REST API 的實施。下麵的列表列出了 AWS 服務及其在應用程式介面實施中的用途。

路由 53
Route53 可用於功能變數名稱註冊、DNS 路由、流量、流量管理、健康檢查和監控。

API 網關
使用 API Gateway 可在任何規模上創建、發佈、維護、監控和保護 REST API。

可在 API 網關下創建 HTTP 方法(GET、POST、PUT、DELETE、PATCH、OPTION)。這些方法可以集成到相應的前端控制器 Lambda 函數中。

image

WAF
AWS WAF(網路應用程式防火牆)可幫助您防範常見的網路攻擊和僵屍程式,這些攻擊和程式會影響可用性、破壞安全性或消耗過多資源。我們可以將 WAF 與 API 網關關聯起來,以過濾惡意請求。

通過 WAF,我們可以配置以下內容:

網路 ACL - 確定允許流量的規則和規則組
自定義規則 - IP 設置匹配條件、字元串和 regex 匹配條件、地理匹配條件、基於速率的規則
僵屍控制
Lambda
用於授權的 Lambda 函數
Lambda 授權器將調用者的身份作為輸入,並將 IAM 策略作為輸出返回。使用 Lambda 授權器實現自定義身份驗證和授權。

經過身份驗證和授權的 Lambda 會向 API Gateway 返回兩種策略:

允許
拒絕

用於業務邏輯的 Lambda 函數
用於實現業務邏輯、調用其他 lambda 函數、下游服務和資料庫的 Lambda 函數。

其他 AWS 服務
CloudWatch - 使用 AWS CloudWatch 監控應用程式,並存儲日誌、儀錶板和警報,這些也可用於創建報告和主動監控。
SQS 和 SNS - 使用 AWS SQS 存儲非同步消息,使用 SNS 向 lambda 函數推送通知。
Dynamo DB 或 RDS - 應用程式資料庫
IAM - 身份和訪問管理服務,用於定義角色和 AWS 資源訪問許可權
VPC、子網、安全組 - VPC 在安全網路中隔離 AWS 資源,子網劃分 VPC 的組織,安全組使用防火牆規則控制流量。

架構和數據流

下麵的架構圖描述了所使用的 AWS 服務集、數據流以及與其他服務的集成。

在高層,客戶端向亞馬遜 API 網關發送 HTTP 請求,從而觸發 AWS Lambda 函數。Lambda 函數處理請求,必要時與其他 AWS 服務交互(如用於數據存儲的 DynamoDB),然後將響應返回給 API Gateway,API Gateway 再將響應發送給客戶端。

image

數據流步驟

  1. 用戶向帶有有效授權標頭(如 JWT 標記、API 密鑰等)的 API 發出 HTTP 請求。
  2. 路由 53 會將請求轉發到 API 網關,API 網關會被網路應用程式防火牆攔截。
  3. 網路應用程式防火牆配置了不同的規則,以保護應用程式免受網路攻擊。如果防火牆檢測到任何此類惡意請求,它會立即阻止該請求,否則就會將其轉發到 API 網關。
  4. 與 API Gateway 一起配置的 Lambda Authorizer 會攔截請求,並對用戶請求進行驗證和授權。如果用戶被授權訪問底層資源,請求將被轉發到前端控制器 lambda。
  5. 前端控制器 lambda 會將請求委托給相應的服務 lambda 函數。
  6. 根據業務邏輯,服務 lambda 會處理請求並向客戶端返回相應的響應。
  7. 在處理請求時,服務 lambda 函數可以調用下游 REST API 或資料庫。服務 lambda 函數還可以監聽 SNS 隊列或訂閱 SNS。
  8. 身份和訪問管理(IAM)服務用於為資源定義角色,併為這些角色提供訪問許可權。
  9. 所有資源都會將應用程式日誌推送到 CloudWatch,用於監控和故障排除。

典型用例

  1. 無伺服器架構可用於需要實時處理數據的事件驅動型應用,如數據流或通知處理。
  2. 微服務可以在無伺服器架構上獨立、隔離地實施和部署,以獲得更好的可擴展性。
  3. 處理預定任務的應用程式可以在無伺服器架構上實施和部署,並可根據特定時間觸發。
  4. 成本是關鍵因素的所有用例都可以採用無伺服器架構。

基礎設施調配和部署

     在企業中,除了用於開發和測試目的的生產環境外,還有多個可用環境。在不同的環境中創建同一套資源並手動跟蹤配置更改是一項具有挑戰性的任務,而且可能會引入錯誤。為瞭解決這個問題,可以使用 Terraform(基礎設施即代碼)。Terraform 有助於將資源從一個環境複製到另一個環境。此外,它還能跟蹤基礎設施的狀態。 任何 CI/CD 工具(如 Jenkins 或 GitLab)都可以使用 Terraform 自動進行部署。

結論


        總之,利用 AWS 無伺服器架構開發 REST API 在可擴展性、成本效益和易管理性方面具有多重優勢。通過採用無伺服器方法,開發人員可以更加專註於構建強大的 API,而無需管理伺服器的開銷。AWS Lambda 的事件驅動模型可實現無縫擴展,確保您的 API 能夠高效處理不同的工作負載。



今天先到這兒,希望對雲原生,技術領導力, 企業管理,系統架構設計與評估,團隊管理, 項目管理, 產品管理,信息安全,團隊建設 有參考作用 , 您可能感興趣的文章:
構建創業公司突擊小團隊
國際化環境下系統架構演化
微服務架構設計
視頻直播平臺的系統架構演化
微服務與Docker介紹
Docker與CI持續集成/CD
互聯網電商購物車架構演變案例
互聯網業務場景下消息隊列架構
互聯網高效研發團隊管理演進之一
消息系統架構設計演進
互聯網電商搜索架構演化之一
企業信息化與軟體工程的迷思
企業項目化管理介紹
軟體項目成功之要素
人際溝通風格介紹一
精益IT組織與分享式領導
學習型組織與企業
企業創新文化與等級觀念
組織目標與個人目標
初創公司人才招聘與管理
人才公司環境與企業文化
企業文化、團隊文化與知識共用
高效能的團隊建設
項目管理溝通計劃
構建高效的研發與自動化運維
某大型電商雲平臺實踐
互聯網資料庫架構設計思路
IT基礎架構規劃方案一(網路系統規劃)
餐飲行業解決方案之客戶分析流程
餐飲行業解決方案之採購戰略制定與實施流程
餐飲行業解決方案之業務設計流程
供應鏈需求調研CheckList
企業應用之性能實時度量系統演變

如有想瞭解更多軟體設計與架構, 系統IT,企業信息化, 團隊管理 資訊,請關註我的微信訂閱號:

image_thumb2_thumb_thumb_thumb_thumb

作者:Petter Liu
出處:http://www.cnblogs.com/wintersun/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。 該文章也同時發佈在我的獨立博客中-Petter Liu Blog。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1. 防抖,回城-執行完成區間計時的那一次 觸發事件時開始計時,計時結束後執行事件處理。當計時未結束再次觸發事件,則清除計時器並重新計時。 思路:利用閉包,保存回調函數的計時器。判斷計時器是否存在,是-清除原計時器。在計時器內調用事件處理函數。 註意:這裡要搞清楚返回的匿名函數才是綁定的點擊事件,而 ...
  • Pic Smaller —— 一款超級好用的線上圖片壓縮工具,基於 Vite + React 實現,直觀、移動友好,並且支持壓縮配置。 ...
  • title: useHeadSafe:安全生成HTML頭部元素 date: 2024/7/17 updated: 2024/7/17 author: cmdragon excerpt: 摘要:“useHeadSafe”是Vue.js組合函數,用於安全生成HTML頭部元素,通過限制輸入值格式避免XSS ...
  • ‍ 寫在開頭 點贊 + 收藏 學會 1、支付寶不支持v-show 改為v-if。 2、v-html App端和H5端支持 v-html ,微信小程式會被轉為 rich-text,其他端不支持 v-html。 解決方法:去插件市場找一個支持跨端的富文本組件。 3、導航欄處有背景色延 ...
  • 其實很久以前,Nginx就設想推出JavaScript for Nginx了,可惜直到現在都不完善,甚至在國內關註的人都寥寥無幾 雖然如此,但Nginx出品的高併發NJS還是很香啊,原生集成就是好 但是,你知道怎麼交叉編譯Nginx和Nginx的JS引擎njs嗎? 你想要嘗試使用Nginx+NJS搭... ...
  • 定義 觀察者模式是一種行為型設計模式,它定義了一種一對多的依賴關係,當一個對象的狀態發生改變時,所有依賴於它的對象都會收到通知並自動更新。這種模式用於實現對象之間的解耦,使得一個對象的變化可以通知並更新多個依賴對象,而無需直接引用它們。 為什麼使用觀察者模式? 解耦 觀察者模式將觀察者(Observ ...
  • 源鏈接:https://www.axa6.com/zh/an-excellent-virtual-machine-memory-architecture 簡介 虛擬機記憶體架構直接影響虛擬機的性能和占用。設計一個優秀的架構可以有效提升性能和效率。 本文將介紹AQ虛擬機使用的記憶體架構,以及AQ虛擬機記憶體 ...
  • 本文主要介紹了在使用Python面向對象編程時,如何實現組合關係,同時對比了組合關係和繼承關係的優缺點,並講解瞭如何通過csv模塊來保存Python接收/生成的數據。 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 微服務架構已經成為搭建高效、可擴展系統的關鍵技術之一,然而,現有許多微服務框架往往過於複雜,使得我們普通開發者難以快速上手並體驗到微服務帶了的便利。為瞭解決這一問題,於是作者精心打造了一款最接地氣的 .NET 微服務框架,幫助我們輕鬆構建和管理微服務應用。 本框架不僅支持 Consul 服務註 ...
  • 先看一下效果吧: 如果不會寫動畫或者懶得寫動畫,就直接交給Blend來做吧; 其實Blend操作起來很簡單,有點類似於在操作PS,我們只需要設置關鍵幀,滑鼠點來點去就可以了,Blend會自動幫我們生成我們想要的動畫效果. 第一步:要創建一個空的WPF項目 第二步:右鍵我們的項目,在最下方有一個,在B ...
  • Prism:框架介紹與安裝 什麼是Prism? Prism是一個用於在 WPF、Xamarin Form、Uno 平臺和 WinUI 中構建鬆散耦合、可維護和可測試的 XAML 應用程式框架 Github https://github.com/PrismLibrary/Prism NuGet htt ...
  • 在WPF中,屏幕上的所有內容,都是通過畫筆(Brush)畫上去的。如按鈕的背景色,邊框,文本框的前景和形狀填充。藉助畫筆,可以繪製頁面上的所有UI對象。不同畫筆具有不同類型的輸出( 如:某些畫筆使用純色繪製區域,其他畫筆使用漸變、圖案、圖像或繪圖)。 ...
  • 前言 嗨,大家好!推薦一個基於 .NET 8 的高併發微服務電商系統,涵蓋了商品、訂單、會員、服務、財務等50多種實用功能。 項目不僅使用了 .NET 8 的最新特性,還集成了AutoFac、DotLiquid、HangFire、Nlog、Jwt、LayUIAdmin、SqlSugar、MySQL、 ...
  • 本文主要介紹攝像頭(相機)如何採集數據,用於類似攝像頭本地顯示軟體,以及流媒體數據傳輸場景如傳屏、視訊會議等。 攝像頭採集有多種方案,如AForge.NET、WPFMediaKit、OpenCvSharp、EmguCv、DirectShow.NET、MediaCaptre(UWP),網上一些文章以及 ...
  • 前言 Seal-Report 是一款.NET 開源報表工具,擁有 1.4K Star。它提供了一個完整的框架,使用 C# 編寫,最新的版本採用的是 .NET 8.0 。 它能夠高效地從各種資料庫或 NoSQL 數據源生成日常報表,並支持執行複雜的報表任務。 其簡單易用的安裝過程和直觀的設計界面,我們 ...
  • 背景需求: 系統需要對接到XXX官方的API,但因此官方對接以及管理都十分嚴格。而本人部門的系統中包含諸多子系統,系統間為了穩定,程式間多數固定Token+特殊驗證進行調用,且後期還要提供給其他兄弟部門系統共同調用。 原則上:每套系統都必須單獨接入到官方,但官方的接入複雜,還要官方指定機構認證的證書 ...
  • 本文介紹下電腦設備關機的情況下如何通過網路喚醒設備,之前電源S狀態 電腦Power電源狀態- 唐宋元明清2188 - 博客園 (cnblogs.com) 有介紹過遠程喚醒設備,後面這倆天瞭解多了點所以單獨加個隨筆 設備關機的情況下,使用網路喚醒的前提條件: 1. 被喚醒設備需要支持這WakeOnL ...
  • 前言 大家好,推薦一個.NET 8.0 為核心,結合前端 Vue 框架,實現了前後端完全分離的設計理念。它不僅提供了強大的基礎功能支持,如許可權管理、代碼生成器等,還通過採用主流技術和最佳實踐,顯著降低了開發難度,加快了項目交付速度。 如果你需要一個高效的開發解決方案,本框架能幫助大家輕鬆應對挑戰,實 ...