SST
總覽
SST (Serverless Stack) 是一個用於在 AWS 上建置與部署全端應用程式的框架,提供針對 Lambda、API Gateway、DynamoDB、S3 以及前端框架的高階建構元件。其特色包括:連接真實 AWS 服務的即時本機開發、型別安全的資源連結,以及零設定的 TypeScript 支援。
指示
- 定義基礎設施時,請使用
sst.config.ts並搭配型別化元件,例如sst.aws.Function、sst.aws.Api、sst.aws.Bucket和sst.aws.Dynamo。 - 連接資源時,請在 Functions 上使用
link屬性,以自動授予 IAM 權限並注入環境變數;在處理程式中則透過Resource.Name存取已連結的資源。 - 進行本機開發時,請使用
sst dev,它會在連接到真實 AWS 服務 (DynamoDB、S3、SQS) 的同時,以熱重載方式在本機執行 Lambda,並支援 VS Code 中斷點除錯。 - 進行部署時,使用
sst deploy --stage prod代表命名階段,使用sst deploy --stage pr-${PR_NUMBER}代表預覽環境,並使用sst remove --stage dev進行資源刪除。 - 部署前端時,請使用
sst.aws.Nextjs、sst.aws.Remix或sst.aws.Astro元件,將 SSR 應用程式部署至 Lambda,並將靜態資源置於 S3 + CloudFront 上。 - 管理機密時,使用
sst secret set KEY value進行加密且階段特定的機密儲存。 - 組織程式碼時,請將
packages/functions/中的處理程式保持輕量,作為協調者;並將商業邏輯置於packages/core/中。
範例
範例 1:使用 DynamoDB 建置無伺服器 API
使用者要求:「在 AWS 上使用 SST 搭配 DynamoDB 建立 REST API」
動作:
- 在
sst.config.ts中定義 DynamoDB 資料表和 API Gateway - 將資料表連結至 API 處理函式,以自動處理權限
- 實作 CRUD 處理程式,並透過
Resource.MyTable.name存取資源 - 執行
sst dev以進行連接到真實 AWS 服務的即時本機開發
**輸出:**一個具備型別安全資源存取與即時除錯功能的無伺服器 REST API。
範例 2:使用預覽環境部署 Next.js 應用程式
使用者要求:「在 AWS 上為我的 Next.js 應用程式部署每個 PR 的隔離預覽環境」
動作:
- 設定
sst.aws.Nextjs元件,搭配自訂網域和已連結的資源 - 在 CI 中設定對每個 Pull Request 執行
sst deploy --stage pr-${PR_NUMBER} - 將後端資源 (API、資料庫) 連結至 Next.js 部署
- 在 PR 關閉時加入使用
sst remove的清理步驟
**輸出:**一個在 AWS 上的生產級 Next.js 部署,為每個 PR 提供獨立的預覽環境。
指引
- 使用
link而非手動撰寫 IAM 政策;SST 會自動產生最低權限的權限設定。 - 在處理程式中透過
Resource.Name存取已連結的資源;切勿將資料表名稱或儲存體 ARN 寫死在程式碼中。 - 日常開發請使用
sst dev;它比每次變更都重新部署至 AWS 更快。 - 為每位開發者建立專屬階段 (例如
sst dev --stage alice),使每位開發者擁有隔離的 AWS 資源。 - 保持處理程式輕量:商業邏輯置於
packages/core/,處理程式置於packages/functions/。 - API 金鑰和憑證請使用
sst secret;它們會經過加密且階段特定。 - 在 CI 中針對每個 Pull Request 設定
sst deploy --stage pr-${PR_NUMBER},以建立預覽環境。