在 Node.js 中開始使用 Amazon Web Services
簡介
Amazon Web Services (AWS) 是一家云計算提供商,提供許多非常受歡迎的服務。自 2006 年推出以來,它們已成為主要企業應用程序開發和部署的關鍵參與者。他們的服務在許多方面都具有可擴展性、靈活性和開創性,同時與自託管相比,成本保持相對較低。
這些只是 Adobe、Airbnb、Autodesk、BMW、歐洲航天局、Ticketmaster、小米、Twitch、Netflix、Facebook、LinkedIn、Twitter 等大公司開始在 AWS 平台上託管其應用程序的部分原因。
我們編寫了一系列關於使用 Node.js 與這些服務集成的文章,以幫助您快速了解 AWS 的一些最受歡迎的服務。
文件存儲
AWS 簡單存儲服務 (S3)
我們今天構建的許多軟件和 Web 應用程序都需要某種文件託管方式 - 圖像、發票、音頻文件等。存儲文件的傳統方式只是將它們保存在服務器的 HDD 上。
但是,將文件保存到服務器的 HDD 上存在一些限制,例如無法擴展、需要在使用前分配空間以及更高的價格。更不用說,請求大量大文件(例如圖像)確實會給服務器帶來壓力。
為了卸載服務器,開發人員開始使用 AWS S3、Google Cloud Storage 等存儲提供商託管文件。
在本文中,我們將向您展示如何編寫 Node.js 代碼將文件上傳到 S3:
- 使用 Node.js 將文件上傳到 AWS S3
消息支持
AWS 簡單通知服務 (SNS)
AWS Simple Notification Service (SNS) 是一項超級可擴展的服務,允許用戶輕鬆實現發布/訂閱模型。
這使我們能夠同時跨多個渠道向其他目標發送文本、電子郵件、推送通知或其他自動消息。
在這篇文章中,您將學習如何構建一個 Web 應用程序,該應用程序可以通過電子郵件一次向多個訂閱者發布消息,所有這些都使用 SNS:
- 使用 Node.js 發布和訂閱 AWS SNS 消息
AWS 簡單隊列服務 (SQS)
隨著現代軟件系統複雜性的增加,需要分解已經超出其初始規模的系統。系統複雜性的增加使得維護、更新和升級變得更加困難。
這為微服務鋪平了道路,允許將龐大的單體系統分解為更小的服務,這些服務鬆散耦合但交互以提供初始單體解決方案的全部功能。松耦合提供了敏捷性並簡化了維護和添加新功能的過程,而無需修改整個系統。
正是在這些微服務架構中,隊列系統派上用場,以促進構成整個應用程序的不同服務之間的通信。
在這篇文章中,我們將深入研究隊列系統,尤其是亞馬遜的簡單隊列服務 (SQS),並展示我們如何在微服務環境中利用其功能:
- 使用 AWS SQS 在 Node.js 中進行消息隊列
數據庫支持
AWS 關係數據庫服務 (RDS)
毫不誇張地說,信息和數據支配著世界。幾乎所有應用程序,從社交媒體和電子商務網站,到簡單的時間跟踪器和繪圖應用程序,都依賴於存儲和檢索數據這一非常基本和基本的任務,以便按預期運行。
Amazon 的關係數據庫服務 (RDS) 提供了一種使用各種關係數據庫技術在雲中設置數據庫的簡單方法。
在本文中,您將學習如何在 RDS 上建立數據庫並使用 Node Web 應用程序在其中存儲數據:
- 將 AWS RDS 與 Node.js 和 Express 結合使用
雲計算
AWS 彈性計算雲 (EC2)
一旦您編寫了一個 Web 應用程序,就會有許多產品可以讓您的應用程序在線並可供其他人使用。彈性計算雲 (EC2) 是 AWS 上最知名且最受歡迎的服務之一。
免費電子書:Git Essentials
查看我們的 Git 學習實踐指南,其中包含最佳實踐、行業認可的標準以及隨附的備忘單。停止谷歌搜索 Git 命令並真正學習 它!
EC2 是 AWS 的核心部分,AWS 的許多其他服務都建立在它之上 - 因此了解 EC2 是什麼以及如何將應用程序部署到它是很好的。
在本教程中,我們將使用 Docker 創建一個基本的 Node.js 應用程序,啟動並配置一個 EC2 實例,然後將我們的應用程序部署到它:
- 使用 Docker 將 Node.js 應用程序部署到 AWS EC2
AWS Lambda
AWS Lambda 所屬的計算架構家族稱為無服務器計算,有時也稱為功能即服務。這對開發人員來說是開創性的,因為不需要維護服務器。每次創建和運行 AWS Lambda 函數時,都會啟動一個容器來為其提供服務,該容器在其他容器之間共享以保持較高的資源利用率。
代碼被部署到容器中,然後執行。因此,如果容器已經存在,AWS 會跳過容器的初始創建,從而使每個後續請求更快。
在本文中,您將了解有關 Lambda 服務以及如何啟動和運行代碼的更多信息:
- 使用 Node.js 開始使用 AWS Lambda