亞馬遜云科技實戰架構:構建可擴展、高效率、無服務器應用

對于今天的開發者、架構師和技術愛好者而言,云計算早已超越了簡單的“虛擬機租賃”或“服務器托管”階段。它已經演化為一套豐富、強大且精密的工具集,能夠以前所未有的方式設計、部署和擴展應用程序。真正的云原生思維,是掌握并運用多種架構模式,為不同的業務場景選擇最合適的解決方案。

我整理了三個具體的、可動手實踐的項目,一步步構建出功能完備的解決方案:

彈性單體架構:學習如何利用基礎設施即服務(IaaS)的控制力,同時結合托管服務的可擴展性與持久性,構建一個既健壯又易于管理的個人云存儲系統。

無服務器****API:擁抱事件驅動的函數式編程模型,徹底擺脫服務器管理的束縛,構建一個能夠自動、海量擴展的動態應用程序接口。

全球邊緣網絡:探索如何通過去中心化的全球網絡優化內容分發,為用戶提供極致的訪問速度和堅固的安全防護。

新用戶可獲得高達 200 美元的服務抵扣金

亞馬遜云科技新用戶可以免費使用亞馬遜云科技免費套餐(Amazon Free Tier)。注冊即可獲得 100 美元的服務抵扣金,在探索關鍵亞馬遜云科技服務時可以再額外獲得最多 100 美元的服務抵扣金。使用免費計劃試用亞馬遜云科技服務,最長可達 6 個月,無需支付任何費用,除非您選擇付費計劃。付費計劃允許您擴展運營并獲得超過 150 項亞馬遜云科技服務的訪問權限。

1. 彈性單體架構 —— 使用亞馬遜云科技 EC2 與 S3 構建可擴展的個人云盤

在云架構的演進過程中,并非所有應用都需要被重構為復雜的微服務。許多成熟的、功能強大的單體應用依然是業務的核心。本教程將以一個廣受歡迎的開源項目NextCloud為例,展示如何將傳統的單體應用部署在云上,并通過巧妙的架構設計,賦予其云原生的彈性、持久性和可管理性。構建一個功能強大的個人云盤,但更重要的是,掌握一種核心的架構模式:計算與存儲的分離。

1.1 解決方案架構:計算與對象存儲的協同效應

目標是部署NextCloud應用,但其核心架構思想在于,不會將用戶上傳的文件直接存儲在運行應用程序的服務器的本地磁盤上。取而代之,配置NextCloud,使其將所有數據無縫地存儲到亞馬遜云科技 Simple Storage Service (S3) 中。

這種設計的架構圖如下所示: 用戶 -> 互聯網 -> 彈性IP (Elastic IP) -> 亞馬遜云科技 EC2 實例 (運行NextCloud應用邏輯) -> IAM 角色 -> 亞馬遜云科技 S3 存儲桶 (存儲用戶文件)

這種模式常被稱為“彈性單體”(Resilient Monolith)。它保留了單體應用易于部署和維護的優點,同時解決了傳統單體架構最棘手的兩個問題:

  1. 數據持久性與擴展性:服務器實例可能會因為硬件故障、軟件錯誤或維護而終止,其本地存儲(如亞馬遜云科技 EBS卷)上的數據也面臨風險。將數據存儲在 S3 中,可以利用其高達99.999999999%(11個9)的設計持久性和幾乎無限的擴展能力。這意味著即使用戶數據增長到TB甚至PB級別,存儲層也能輕松應對,而無需對服務器進行任何改造。
  2. 計算資源的靈活性:當應用邏輯(EC2實例)與持久化數據(S3)解耦后,EC2實例本身就變成了一個可以隨時替換的“無狀態”或“半狀態”組件。您可以根據負載需求輕松地更換實例類型(例如,從t3.micro升級到m5.large),或者在實例發生故障時快速啟動一個新實例并重新掛載應用,而寶貴的用戶數據始終安全地存放在S3中,不受影響。這種分離是實現高可用性和簡化運維的關鍵一步,它將“關注點分離”這一軟件工程原則成功地應用到了基礎設施層面。

1.2 核心資源配置:啟動并加固您的 EC2 實例

開始構建這個架構的計算核心。

  1. 啟動EC2實例

登錄亞馬遜云科技管理控制臺,導航至EC2服務。

選擇“啟動實例”,選擇一個合適的亞馬遜云機器映像(AMI),例如最新的Ubuntu Server長期支持版(LTS)。

選擇一個實例類型。對于起步項目,通用型的t3.micro或t3.small是理想的選擇,它們提供了良好的基準性能和突發能力。

  1. 配置網絡與安全組

在配置實例的步驟中,您需要將其放置在一個虛擬私有云(VPC)中。對于初學者,使用默認VPC即可。

安全組是實例級別的虛擬防火墻,至關重要。根據官方文檔的指導,需要創建一個新的安全組并配置入站規則 。點擊“添加規則”,創建一個類型為“HTTP”的規則,端口范圍為80,來源設置為 0.0.0.0/0和::/0。這允許來自任何IPv4和IPv6地址的公共Web流量訪問NextCloud應用 。

為了安全管理,還應添加一條“SSH”規則,端口為22。但與HTTP規則不同,其來源應嚴格限制為您的個人或辦公室的IP地址,而不是0.0.0.0/0,這能極大程度地降低被惡意掃描和暴力破解的風險。

  1. 分配并關聯彈性****IP

EC2實例在默認情況下,每次停止和啟動后其公共IP地址都會改變。這對于一個需要穩定訪問的服務是不可接受的。需要一個固定的IP地址。

在EC2控制臺的左側導航欄中,找到“網絡與安全”下的“彈性IP”。

點擊“分配彈性IP地址”來獲取一個新的靜態公網IP 。

分配成功后,選中這個IP地址,點擊“操作”按鈕,選擇“關聯彈性IP地址”。在關聯頁面中,選擇剛剛創建的EC2實例,完成關聯 。現在,這個固定的IP地址就成為了云盤的永久入口。

1.3 存儲層構建:為無限擴展配置 S3 存儲桶

接下來,創建用于存放所有用戶文件的后端存儲。

  1. 創建S3存儲桶

導航至S3服務控制臺,點擊“創建存儲桶”。

輸入一個全球唯一的存儲桶名稱,并選擇一個離您或您的用戶最近的區域,以降低延遲。

在“阻止公有訪問權限”設置中,保持默認的“阻止所有公有訪問權限”為開啟狀態。這是一個關鍵的安全設置。不希望任何人能夠通過URL直接訪問存儲桶中的文件;所有的訪問都將通過NextCloud應用以編程方式進行,并由IAM進行嚴格授權。

為了增強數據安全性,建議在“默認加密”選項中啟用“服務器端加密”,選擇SSE-S3即可。這確保了所有上傳到S3的文件都會被自動加密,增加了數據靜態時的安全性。

1.4 安全集成:通過 IAM 授予應用程序訪問權限

這是連接計算層和存儲層的安全橋梁。將創建一個專門的IAM用戶,并授予其訪問S3的權限,供NextCloud應用使用。

這個過程體現了云安全的一個核心原則:為應用程序創建獨立的、權限受限的身份,而不是使用具有過高權限的賬戶密鑰。如果EC2實例或NextCloud應用本身被攻破,攻擊者獲得的權限將被限制在這個特定IAM用戶的能力范圍內,從而極大地縮小了安全事件的“爆炸半徑”。

  1. 創建IAM用戶

導航至IAM服務控制臺,在左側選擇“用戶”,然后點擊“添加用戶” 。

為用戶輸入一個描述性的名稱,例如nextcloud-s3-user。

在“選擇亞馬遜云訪問類型”中,僅勾選“編程訪問”(或“訪問密鑰”)。這會為該用戶生成一個訪問密鑰ID和私有訪問密鑰,專門用于API、CLI等程序調用,而非控制臺登錄 。

  1. 附加權限策略

在下一步中,選擇“直接附加現有策略” 。

在策略篩選框中輸入“s3”,然后勾選AmazonS3FullAccess策略 。

專業實踐提示:AmazonS3FullAccess策略授予了對賬戶中所有S3存儲桶的完全控制權限。在真實的生產環境中,最佳實踐是遵循“最小權限原則”。您應該創建一個自定義策略,明確地將權限限制在GetObject, PutObject, DeleteObject, ListBucket等操作,并且只針對剛剛創建的那個特定存儲桶。但對于本教程,使用托管策略可以簡化流程。

  1. 保存憑證

繼續點擊下一步,直到用戶創建成功。在最后的頁面上,系統會顯示該用戶的“訪問密鑰ID”和“私有訪問密鑰” 。這是唯一一次能夠看到完整私有訪問密鑰的機會,必須立即將其復制并保存在一個安全的地方(例如密碼管理器中)。

切勿將這些密鑰硬編碼到代碼中或提交到公共代碼倉庫。

1.5 部署與配置:將 NextCloud 連接到 S3 后端

萬事俱備,現在進行最后的組裝。

  1. 安裝****NextCloud
    1. 使用之前為安全組配置的密鑰對和彈性IP地址,通過SSH客戶端連接到您的EC2實例。
    2. 在實例上安裝Web服務器(如Apache或Nginx)、PHP以及數據庫(如MySQL或MariaDB),即所謂的LAMP或LEMP環境。
    3. 下載并部署NextCloud應用代碼到Web服務器的根目錄。
  2. 配置外部存儲
    1. 通過瀏覽器訪問您的彈性IP地址,您將看到NextCloud的安裝向導。完成管理員賬戶和數據庫的初始設置。
    2. 登錄NextCloud后,導航至右上角的個人頭像,點擊“應用”。在“已禁用的應用”列表中找到“External storage support”并啟用它 。

- 啟用后,再次點擊個人頭像,進入“設置”,在左側的管理菜單中找到“外部存儲” 。

  1. 連接****Amazon S3

在“外部存儲”頁面,選擇“添加存儲”,然后在下拉菜單中選擇“Amazon S3” 。

填寫配置信息:

  • 文件夾名稱:為這個S3掛載點起一個名字,例如MyS3Drive。
  • 存儲桶:輸入您之前創建的S3存儲桶的準確名稱。
  • 區域:選擇存儲桶所在的區域。
  • 訪問密鑰:粘貼您在1.4節中保存的IAM用戶的“訪問密鑰ID”。

- 私有密鑰:粘貼對應的“私有訪問密鑰”。

  • 點擊確認。如果所有信息都正確,NextCloud旁邊會出現一個綠色的對勾,表示連接成功。

現在,回到NextCloud的主界面,您會看到一個名為MyS3Drive的新文件夾。嘗試上傳一個文件到這個文件夾中。然后,切換到亞馬遜云科技的S3控制臺,瀏覽您的存儲桶,您會驚喜地發現,剛剛上傳的文件已經作為一個對象出現在了S3中。您已成功構建了一個計算與存儲分離的、具備高持久性和高可擴展性的彈性單體應用。

2. 無服務器革命 —— 使用亞馬遜云科技 Lambda 與 API Gateway 開發動態 API

歡迎來到無服務器(Serverless)的世界。在這個范式中,徹底告別服務器管理——無需再關心操作系統補丁、Web服務器配置或容量規劃。焦點將轉移到編寫響應事件的業務邏輯代碼上。本教程將指導您使用Aamzon Lambda和Amazon API Gateway這兩個核心服務,構建一個功能強大、可自動伸縮且成本效益極高的動態API。

2.1 無服務器請求的剖析

在深入實踐之前,理解無服務器API的工作流程至關重要。其核心是一個由事件驅動的請求-響應模型:

  1. 客戶端請求:一個用戶或應用程序通過互聯網向一個特定的URL發送HTTP請求(例如GET, POST, PUT)。
  2. API Gateway****接收:這個URL實際上是Amazon API Gateway提供的一個終端節點(Endpoint)。API Gateway作為API的“前門”,負責接收所有傳入的請求。它可以處理認證、授權、請求校驗、速率限制等任務。
  3. 觸發Lambda函數:API Gateway根據請求的路徑和方法,將請求(包括其頭部、查詢參數、請求體等信息)打包成一個JSON格式的event對象,然后調用(觸發)一個預先配置好的Amazon Lambda函數。
  4. Lambda函數執行:Amazon Lambda服務會動態地分配計算資源,在一個安全、隔離的環境中運行您的函數代碼。您的代碼從event對象中解析出所需的數據,執行業務邏輯——比如查詢數據庫、調用其他服務或進行計算。
  5. 返回響應:函數執行完畢后,將結果返回。
  6. API Gateway****響應客戶端:API Gateway接收到Lambda函數的返回值,根據配置將其轉換為標準的HTTP響應(包括狀態碼、頭部和響應體),并最終發送回最初發起請求的客戶端。

整個過程,開發者只需關注第4步中的函數代碼。底層的計算資源分配、擴展(從零到每秒數千次請求)、高可用性以及運行環境維護,全部由亞馬遜云科技自動處理。這種模式將開發者的認知負荷降至最低,使其能夠專注于創造核心業務價值。

2.2 打造業務邏輯:您的第一個亞馬遜云的 Lambda 函數

從編寫API的核心——Lambda函數開始。

  1. 創建函數

    • 在亞馬遜云科技管理控制臺,導航至亞馬遜云 Lambda服務。

      在這里插入圖片描述

    • 點擊“創建函數”。選擇“從頭開始創作”。
      在這里插入圖片描述

    • 為函數命名,例如myDynamicGreeter。

    • 在“運行時”下拉菜單中,選擇您熟悉的編程語言,例如Python 3.x或Node.js 18.x。

    在這里插入圖片描述

    • 在“權限”部分,Lambda會自動創建一個擁有基本執行權限的IAM角色。保持默認即可。
    • 點擊“創建函數”。
  2. 編寫代碼

創建成功后,您會進入函數的代碼編輯器。默認的代碼模板展示了一個基本的處理程序結構。對于Python,它看起來像lambda_handler(event, context)。

event參數就是API Gateway傳遞過來的請求數據,context包含了運行時的信息。

從一個最簡單的“Hello World”開始,讓它返回一個靜態的JSON響應。修改代碼如下(以Python為例):

import jsondef lambda_handler(event, context):# TODO implementreturn {'statusCode': 200,'headers': {'Content-Type': 'application/json'},'body': json.dumps({'message': 'Hello from Lambda!'})}

點擊“Deploy”按鈕保存您的代碼更改。

2.3 API 的前門:使用亞馬遜云科技 API Gateway 創建 HTTP 終端節點

為這個Lambda函數創建一個公共的訪問入口。

  1. 創建****API

導航至亞馬遜云 API Gateway服務控制臺。

點擊“創建API”,在多種API類型中,為了簡單起見,選擇“HTTP API”并點擊“構建”。

在“集成”步驟中,點擊“添加集成”。

集成類型選擇“Lambda”,然后在下方的Lambda函數輸入框中,選擇剛剛創建的myDynamicGreeter函數。

為您的API命名,例如GreeterAPI。

  1. 配置路由

在下一步“配置路由”中,需要定義哪個HTTP請求應該觸發的Lambda函數。

方法選擇“GET”。

資源路徑輸入/greeting。這意味著當一個GET請求訪問…/greeting時,它將被路由到的Lambda集成。

將目標設置為剛剛創建的Lambda集成。

  1. 定義階段與部署

在“定義階段”頁面,階段(Stage)是API的發布版本,例如dev、test或prod。這對于API的生命周期管理至關重要 。保留默認的$default階段即可,它代表API會立即被部署。

檢查配置無誤后,點擊“創建”。

在這里插入圖片描述

API創建成功后,控制臺會提供一個“調用URL”。將這個URL的末尾加上定義的路徑/greeting(例如https://xxxx.execute-api.us-east-1.amazonaws.com/greeting),在瀏覽器中打開它。您應該能看到Lambda函數返回的JSON響應:{"message": "Hello from Lambda!"}

在這里插入圖片描述

2.4 動態交互:在 Lambda 中處理客戶端參數

靜態API的用處有限,現在讓它變得動態起來。目標是讓API能夠接收一個名為name的查詢參數(例如/greeting?name=Alice),并返回個性化的問候。

  1. 修改Lambda函數以接收參數

import json def lambda_handler(event, context): # 從查詢字符串參數中獲取’name’,如果不存在則提供一個默認值 name = ‘World’ if ‘queryStringParameters’ in event and event and ‘name’ in event: name = event[‘name’] message = f"Hello, {name}!" return { ‘statusCode’: 200, ‘headers’: { ‘Content-Type’: ‘application/json’ }, ‘body’: json.dumps({‘message’: message}) }

回到myDynamicGreeter函數的代碼編輯器。

需要修改代碼,使其從event對象中提取查詢字符串參數。對于HTTP API,這些參數位于event中。

import jsondef lambda_handler(event, context):# 從查詢字符串參數中獲取'name',如果不存在則提供一個默認值name = 'World'if 'queryStringParameters' in event and event and 'name' in event:name = event['name']message = f"Hello, {name}!"return {'statusCode': 200,'headers': {'Content-Type': 'application/json'},'body': json.dumps({'message': message})}

再次點擊“Deploy”保存更改。

  1. 測試動態****API

現在,回到瀏覽器,在之前的調用URL后面加上查詢參數?name=Alice,然后訪問。

您應該會看到響應變成了:{“message”: “Hello, Alice!”}。

嘗試更換name的值,或者不提供name參數,觀察API是否按預期工作。

您已經成功地構建并部署了一個動態的、無服務器的API。這個過程揭示了API Gateway和Lambda之間一個至關重要的協作關系。API Gateway不僅僅是一個簡單的請求轉發器,它扮演了一個強大的中介和轉換層角色。在更復雜的場景中(例如使用REST API類型時),您可以配置“集成請求”中的“映射模板” 。這允許您在將請求傳遞給Lambda之前,對其進行復雜的轉換、重塑和驗證。

這種設計模式創建了一個清晰的架構“接縫”,將面向公眾的API契約(HTTP請求的結構)與后端Lambda函數的內部實現細節(函數期望的event結構)解耦。這種解耦帶來了巨大的好處:您可以獨立地演進API(例如發布v2版本,改變參數名或結構),而只需修改API Gateway的映射配置,后端Lambda函數可能無需任何改動。它使得Lambda函數可以保持為一個干凈、職責單一的組件,無需關心HTTP協議的復雜細節,這對于構建可維護、可演進的大型系統至關重要。

3. 邊緣優勢 —— 托管高性能、安全的靜態網站

在前兩個部分,分別探討了如何優化單體應用和構建動態后端。將目光轉向現代Web應用的另一大支柱:前端。對于靜態網站、單頁應用(SPA)以及各種Web資源(圖片、視頻、CSS、JS文件),性能和安全性是用戶體驗的決定性因素。本教程將介紹一種業界標準的、性能卓越的架構模式:使用 S3進行存儲,并結合亞馬遜云 CloudFront進行全球內容分發和安全加速。

3.1 速度制勝的架構:S3、CloudFront 與全球邊緣網絡

目標是托管一個靜態網站,但其架構遠不止于將HTML文件上傳到服務器。采用一種去中心化的交付模型:

  1. 源站 (Origin):網站文件(HTML, CSS, JavaScript, images等)將存儲在Amazon S3存儲桶中。S3作為源站,提供了高持久性和低成本的存儲。
  2. 內容分發網絡 (CDN):創建一個 亞馬遜云 CloudFront分發。CloudFront是一個全球性的CDN,在全球數百個地理位置分散的“邊緣站點”(Edge Location)擁有服務器。
  3. 交付流程:當用戶嘗試訪問網站時,請求不會直接發送到位于某個特定區域的S3存儲桶。相反,用戶的DNS請求會被解析到離他/她地理位置最近的CloudFront邊緣站點。

如果該邊緣站點已經緩存了用戶請求的文件,它會立即將文件返回給用戶,實現極低的延遲。

如果文件未被緩存(即“緩存未命中”),邊緣站點將向源站(S3存儲桶)發起請求,獲取文件,將其返回給用戶的同時,也在本地緩存一份,以備后續請求使用。

這種架構的核心優勢在于,它將內容從一個單一的、中心化的位置,推向了分布在全球各地的網絡邊緣。這帶來的好處是多方面的:

  • 極致性能:用戶無論身在何處,都能從最近的節點獲取內容,極大地降低了網絡延遲(Latency),顯著提升了網站加載速度。
  • 增強的可擴展性與可用性:CloudFront的分布式特性可以輕松吸收巨大的流量洪峰(例如營銷活動或突發新聞帶來的訪問量激增),而不會壓垮源站。
  • 提升的安全性:CloudFront本身就構成了一個強大的安全屏障。它可以幫助抵御常見的網絡層和傳輸層DDoS攻擊。此外,通過與亞馬遜云 WAF(Web應用防火墻)等服務集成,還可以提供更高級別的應用層保護。

3.2 奠定基礎:為靜態網站托管配置 S3 存儲桶

  1. 創建存儲桶并上傳文件

在S3控制臺創建一個新的存儲桶。

準備一個簡單的靜態網站,至少包含一個index.html文件和一個error.html文件,以及一些CSS或JS文件。將這些文件上傳到存儲桶的根目錄。

  1. 啟用靜態網站托管

在存儲桶的“屬性”標簽頁中,找到“靜態網站托管”功能,點擊“編輯”。

選擇“啟用”,并將索引文檔設置為index.html,錯誤文檔設置為error.html。

保存更改。此時,S3會提供一個網站終端節點URL。

  1. 配置存儲桶策略(臨時)

{ “Version”: “2012-10-17”, “Statement”: }

為了讓CloudFront能夠訪問這些文件,需要暫時允許公共讀取。在“權限”標簽頁中,編輯“存儲桶策略”,并粘貼以下JSON策略(請將YourBucketName替換為您的存儲桶名稱):

{"Version": "2012-10-17","Statement":
}

保存策略。請注意,這是一個臨時步驟。在接下來的步驟中,將通過CloudFront的設置來強化安全,移除這個公共訪問策略。

3.3 全球加速:設置亞馬遜云 CloudFront 分發

這是本教程的核心環節,把S3源站接入全球網絡。

  1. 創建分發

導航至CloudFront服務控制臺,點擊“創建分發”。

在“源域”字段,從下拉列表中選擇您剛剛創建的S3存儲桶。CloudFront會自動填充正確的域名。

  1. 配置源訪問(關鍵安全步驟)

在源設置中,找到“S3 存儲桶訪問”選項。選擇“是,使用 OAC (源訪問控制)”。源訪問控制(OAC)是比傳統的源訪問身份(OAI)更新、更安全、功能更強大的推薦方式。

點擊“創建控制設置”,保留默認名稱并創建。

CloudFront此時會顯示一條信息,提示您需要更新S3存儲桶策略。選擇“復制策略”,然后點擊“轉到S3存儲桶權限”按鈕。在S3控制臺,用CloudFront提供的策略完全替換掉之前設置的臨時公共訪問策略。新的策略將只允許這個特定的CloudFront分發來訪問您的S3對象,從而鎖定了存儲桶,實現了安全最佳實踐。

  1. 配置查看器和緩存行為

在“查看器協議策略”中,選擇“Redirect HTTP to HTTPS”。這強制所有用戶都通過安全的HTTPS連接訪問您的網站。

在“緩存鍵和源請求”中,對于簡單的靜態網站,使用默認的CachingOptimized策略即可。

點擊“創建分發”。分發的創建過程可能需要幾分鐘時間。

3.4 HTTPS 加固:使用亞馬遜云 Certificate Manager (ACM) 配置 SSL/TLS 證書

一個現代化的、值得信賴的網站必須使用HTTPS。亞馬遜云科技通過亞馬遜云 Certificate Manager (ACM) 服務,讓這個過程變得異常簡單。

  1. 申請證書

導航至ACM服務控制臺。重要提示:必須在“美國東部(弗吉尼亞北部)”即us-east-1區域申請證書,因為這是CloudFront要求的。

點擊“請求證書”,選擇“請求公有證書”。

輸入您的自定義域名,例如www.your-cool-project.com。您也可以使用通配符,如*.your-cool-project.com。

選擇“DNS 驗證”作為驗證方法,這是推薦的方式。

  1. 完成域名驗證

創建請求后,ACM會為您提供一個CNAME記錄。您需要登錄到您的域名注冊商(或如果您使用亞馬遜云 Route 53,則在Route 53中)的DNS管理界面,將這個CNAME記錄添加到您域名的DNS配置中。

ACM會自動檢測此DNS記錄。一旦檢測成功,證書的狀態就會變為“已頒發”。

  1. 關聯證書到CloudFront

回到您的CloudFront分發設置頁面,點擊“編輯”。

在“自定義SSL證書”字段,從下拉列表中選擇您剛剛在ACM中頒發的證書。

在“備用域名 (CNAME)”字段中,添加您的自定義域名(www.your-cool-project.com)。

保存更改。

3.5 整合收官:DNS、部署與驗證

最后一步,是將您的自定義域名指向CloudFront分發。

  1. 配置****DNS

在您的DNS提供商的管理界面,為您的自定義域名(www.your-cool-project.com)創建一個新的記錄。

記錄類型應選擇“CNAME”。

記錄值應設置為您的CloudFront分發的域名(例如d1234abcd.cloudfront.net,您可以在CloudFront控制臺找到它)。

如果您使用亞馬遜云 Route 53作為DNS服務,推薦使用“A”記錄并選擇“別名(Alias)”選項,直接將流量路由到CloudFront分發,這比CNAME更優。

  1. 驗證

等待DNS記錄在全球范圍內傳播生效(可能需要幾分鐘到幾小時不等)。

在瀏覽器中輸入您的自定義域名 https://www.your-cool-project.com。您應該能看到托管在S3上的網站,并且瀏覽器地址欄會顯示安全的鎖形圖標。

要確認內容確實由CloudFront提供,可以打開瀏覽器的開發者工具,在“網絡”標簽頁下查看響應頭(Response Headers)。如果看到類似X-Cache: Hit from cloudfront或X-Cache: Miss from cloudfront的頭部信息,就證明您的設置已成功,全球邊緣網絡正在為您服務。

以上就是本文的全部內容了,最后提醒一下,如果后續不再使用相關服務,別忘了在控制臺關閉,避免超出免費額度產生費用~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/916686.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/916686.shtml
英文地址,請注明出處:http://en.pswp.cn/news/916686.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

論文閱讀:《無約束多目標優化的遺傳算法,群體和進化計算》

前言 提醒: 文章內容為方便作者自己后日復習與查閱而進行的書寫與發布,其中引用內容都會使用鏈接表明出處(如有侵權問題,請及時聯系)。 其中內容多為一次書寫,缺少檢查與訂正,如有問題或其他拓展…

嵌入式單片機中位帶操作控制與實現

STM32 單片機的SRAM有兩個區支持位帶(bit-band)操作。 那么,什么是位帶,位帶操作的原理是怎樣的呢? 今天來梳理一下這個知識點。 在介紹位帶操作之前,先看一看 ARM Crotext-M3 的存儲器映射。 CM3 的地址空間是 4GB, 程序可以在代碼區,內部 SRAM 區以及外部 RAM 區中執…

考研初試專業分146!上岸新疆大學!信號與系統考研經驗,通信考研小馬哥。

信號與系統專業課分數146,希望以下的經驗能夠幫助到正在努力學習的學弟學妹們更好的學習專業課。本人是從四月份開始學習專業課,當時我覺得專業課應該要盡早開始越拖到后期學習壓力越大,所以在周邊同學還在只學習公共課的時候我就開始了專業課…

負載均衡算法中的加權隨機算法

import org.apache.commons.lang3.tuple.Pair;import java.util.Arrays; import java.util.List; import java.util.concurrent.ThreadLocalRandom; import java.util.stream.Collectors;/*** 加權隨機,nacos*/ public class RouterWeightRandom {/**** param list [{"a&q…

AI時代SEO關鍵詞優化策略

內容概要 在人工智能(AI)技術深度融入數字營銷的背景下,搜索引擎優化(SEO)的關鍵詞優化策略正經歷一場智能變革,這不僅重塑了傳統研究方式,還為企業帶來了全新的競爭機遇。本文將從AI時代SEO的變…

復矩陣與共軛轉置矩陣乘積及其平方根矩陣

設 是一個 的復數矩陣,其共軛轉置矩陣(Hermitian 共軛)記為 (即 ),則矩陣 ( )和 ( )的性質如下文所述。1. Hermitian 性(自共軛性&#x…

Vue 框架 學習筆記

作為初學者對于Vue框架的學習筆記 總結了Vue框架的核心知識點,包括:1. 基礎概念:漸進式框架、兩種使用方式、Vue實例創建流程、模板語法和響應式特性。2. 常用指令:詳細介紹了v-html、v-show/v-if、v-for、v-on、v-bind、v-model等…

飛牛系統安裝DataEase自定義Docker包

飛牛系統安裝DataEase自定義Docker包背景構造DataEase Docker包1.在Linux 系統中(比如我這里選麒麟V10)安裝Docker2.準備打包文件3.執行打包4.驗證打好的包上傳DataEase Docker包1.把本地docker 容器導出1.1查看鏡像列表命令:docker images1.…

可配置的PWM外設模塊

🔧 可配置的PWM外設模塊 基于FPGA的PWM信號發生器,支持 動態周期與占空比配置,無需外部控制信號,適用于 LED 呼吸燈、舵機控制、電機驅動等場景。 仿真波形 參數修改后會晚一個pwm周期才生效📌 模塊功能 🧮…

從零到一:我是如何用深度學習打造高性能書籍推薦系統的

作者:笙囧同學 | 發布時間:2025年7月28日 | 閱讀時長:15分鐘 🎯 前言:為什么要做這個項目? 大家好,我是笙囧同學!最近在學習《機器學習基礎》課程時,被推薦系統的魅力深…

OpenRLHF:面向超大語言模型的高性能RLHF訓練框架

“四模型協同調度破資源壁壘,讓70B模型RLHF訓練觸手可及” OpenRLHF 是由 OpenLLMAI 團隊于2024年推出的開源強化學習人類反饋(RLHF)框架,旨在解決大語言模型(LLM)對齊訓練中的多模型協調瓶頸與超大規模擴展…

DMETL安裝流程及簡單使用

目錄 安裝調度器 安裝執行器 安裝管理器 啟動服務 進入web管理端 創建數據源 ?編輯 添加表 添加影子表增量 節點監控 DMETL工程流搭建實踐 創建表/視圖 添加sql腳本 添加數據清洗與轉換模塊 添加排序模塊 創建輸出表 連接各模塊并啟動 查看驗證結果 監控管理 …

如何通過代碼操作文件?

1. 為什么使用文件不使用文件,我們所寫的程序存在電腦內存中,程序結束,內存回收,數據就丟失了。再次運行程序也是看不到上次運行時的數據的,如果想要將數據進行持久化保存,就需要使用文件。2. 文件分類&…

unbuntn 22.04 coreutils文件系統故障

文章目錄核心思路具體操作步驟(需借助 Ubuntu Live USB)1. 準備 Ubuntu Live USB2. 從 Live USB 啟動并掛載系統分區3. 從安裝包中提取完好的 /bin/dir 文件并替換4. 重啟系統并驗證總結前提說明具體操作步驟(分階段執行)階段1&am…

若依【(前后端分離版)SpringBoot+Vue3】

文章目錄什么是若依使用若依驗證碼的前端實現📌 前后端驗證碼流程說明文檔1、前端初始化驗證碼2、前端界面顯示3、后端生成驗證碼接口(GET /captchaImage)4、用戶提交登錄信息5、后端驗證驗證碼邏輯(POST /login)6、登…

Ubuntu24安裝MariaDB/MySQL后不知道root密碼如何解決

Ubuntu 24.04 安裝 MariaDB 后 root 密碼未知?解決方案在此在 Ubuntu 24.04 上新安裝 MariaDB 后,許多用戶會發現自己不知道 root 用戶的密碼,甚至在安裝過程中也沒有提示設置密碼。這是因為在較新的 MariaDB 版本中,默認情況下 r…

Cloudflare CDN 中設置地域限制并返回特定界面

文章目錄 什么是CDN 什么是Cloudflare 注冊Cloudflare 賬號,添加域名、修改DNS并激活郵箱 阻止或允許特定國家或地區訪問 常見規則表達式 WAF自定義規則 + 自定義錯誤頁面 使用Workers腳本 什么是CDN CDN 是一種優化網站請求處理的機制。它是在用戶訪問網站 (服務器) 時用戶與…

Ubuntu高頻實用命令大全

Ubuntu系統中高頻實用命令 以下為Ubuntu系統中高頻實用命令的分類整理,涵蓋系統管理、文件操作、網絡配置等場景,每個命令附帶簡要說明: 系統信息與管理 uname -a 顯示系統內核版本、主機名等詳細信息。 lsb_release -a 查看Ubuntu發行版版本信息。 uptime 顯示系統運行時…

關于C#的編程基礎:數據類型與變量全解析

一.基本的數據類型 1.什么是數據類型 在編程語言中,數據類型(Data Type) 是對變量存儲的 “數據的種類” 的定義,它決定了: 變量可以存儲哪些值(例如整數、文本、布爾值)。這些值在內存中如何…

深入解析 Spring 獲取 XML 驗證模式的過程

關鍵要點Spring 的 XML 驗證模式:Spring 框架在加載 XML 配置文件時,會根據文件內容判斷使用 DTD(文檔類型定義)或 XSD(XML 模式定義)進行驗證。自動檢測機制:Spring 默認使用自動檢測&#xff…