AWS 最近推出了 AWS Blocks 的公開預覽版。這是一個開源的 TypeScript 框架,其核心目標是讓開發者(以及 AI 代理)能夠以極低門檻構建後端,並將本地開發與 AWS 雲端部署完全統一。
對於習慣於傳統開發流程的工程師來說,最痛苦的往往是環境不一致:本地用 Docker 跑一個資料庫,部署到雲端卻要配置複雜的 IAM 權限、VPC 網路或特定的雲端服務參數。AWS Blocks 試圖解決這個問題,它將應用程式碼、本地模擬實作以及生產環境所需的 AWS 基礎設施全部封裝在一個名為 Block 的單元中。
什麼是 Block
在 AWS Blocks 的定義中,一個 Block 就像是一個功能模組的 npm 套件。它不僅包含業務邏輯,還定義了該功能在本地開發時如何運作,以及在部署到 AWS 時應該對應到哪個雲端資源。例如,如果你需要一個資料庫功能,導入對應的 Block 後,在本地執行 npm run dev 時,它可能會使用記憶體儲存或輕量級資料庫;但當你部署到雲端時,同一行程式碼會自動對應到 Amazon Aurora 或 DynamoDB。
這種設計讓開發者在本地開發時甚至不需要 AWS 帳號,大幅降低了啟動成本,並透過熱重載技術提供亞秒級的反饋速度。
為 AI 代理量身打造的架構
AWS Blocks 最獨特的設計前提是:在未來的開發模式中,程式碼將由 AI Agent(AI 代理)編寫。
傳統框架在讓 AI 寫程式時,常會因為 AI 因為不熟悉特定的基礎設施配置而產生錯誤。AWS Blocks 內建了導向文件(Steering Files),這些文件能引導 AI 代理遵循正確的架構模式。當工程師要求 AI 代理增加認證功能或資料庫時,AI 會根據框架的約束產生符合最佳實務的程式碼,確保產出的結果在本地能跑,部署到雲端也能直接運作,而不需要人類工程師再去手動調整雲端設定。
全端型別安全與組成模型
Blocks 採用組合式模型,涵蓋了後端常見的各種能力,包括使用者認證(Cognito)、檔案儲存(S3)、即時訊息、背景作業、排程任務以及 AI 知識庫(Bedrock)。
一個重要的技術亮點是型別安全(Type Safety)的流轉。從後端的資料定義(Schema)開始,型別資訊可以直接流向前端,無需額外的程式碼生成步驟。這意味著無論前端使用 Next.js、React 等 Web 框架,或是 Swift、Kotlin 等原生行動端客戶端,都能共享同一套後端定義,減少因介面變更而導致的執行期錯誤。
靈活性與 CDK 的關係
為了避免成為一個封閉的生態系,AWS Blocks 實際上是建立在 AWS CDK(Cloud Development Kit,一種用程式碼定義雲端資源的工具)之上的。
這意味著 Blocks 提供了一個逃生艙(Escape Hatch):如果內建的 Block 無法滿足複雜的業務需求,開發者可以直接撰寫 CDK 程式碼來定義特定的資源配置。你可以將 Blocks 嵌入到現有的 CDK 堆疊中,或者將自定義的基礎設施與邏輯封裝成新的自定義 Block 供團隊共享。
與 AWS Amplify Gen 2 的區別
許多人會將 Blocks 與 Amplify Gen 2 混淆,因為兩者都使用 TypeScript 並基於 CDK。簡單來說,Amplify 側重於提供完整的托管體驗,包含代管主機、CI/CD 流程與管理後端;而 Blocks 則更專注於基礎設施即程式碼(Infrastructure-from-Code)的開發體驗,強調本地優先(Local-first)與型別安全。
實務開發建議與限制
目前 AWS Blocks 處於公開預覽階段,工程師在嘗試時需注意以下幾點:
第一,版本不穩定。預覽期間 Block 的建構函式簽名可能會變動,建議在 package.json 中固定版本號。 第二,本地與雲端的差異。本地開發依賴的是模擬實作(Mock),雖然能快速迭代,但在正式上線前必須在 AWS Sandbox 環境驗證真實資源的行為。 第三,環境要求。目前該框架要求 Node.js 版本必須在 22 或以上。
來源:infoq.com
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。