在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 MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...