Lambda 環境分離
如何在 Remotion Lambda 中區分生產、預備與開發環境,管理函式、站台與 S3 儲存桶
分離生產與測試環境
Lambda 函式內部的程式碼永遠是相同的,無論你是從本地、預備(staging)還是生產(production)環境呼叫它。此外,每次使用 Remotion Lambda 執行的渲染作業在運算與儲存方面彼此完全隔離。
函式(Functions)
每個 Lambda 函式的唯一名稱由以下配置決定:
- 逾時時間(Timeout)
- 記憶體大小(Memory size)
- 磁碟大小(Disk size)
- Remotion 版本
若不同環境使用相同的配置,你可以安全地重複使用同一個函式,因為每次執行都是隔離的——事實上,複製函式是沒有任何意義的,因為它不會帶來任何好處。
如果你在某個環境中變更了配置,請部署一個新的函式並保留舊的函式。這樣你可以安全地測試新函式,而不會影響其他環境。未被使用但已部署的函式不會產生任何費用。
站台(Sites)
建議在建立站台時使用 --site-name 選項,將站台限定在特定環境。例如:
# 建立生產環境站台
npx remotion lambda sites create --site-name=remotion-production
# 建立預備環境站台
npx remotion lambda sites create --site-name=remotion-staging站台包含你的 React / Remotion 程式碼,可能會頻繁更新。請確保:
- 每次修改程式碼或升級 Remotion 時,都要更新站台
- 不要在不同環境之間共用站台(若它們的程式碼有所差異)
S3 儲存桶(Buckets)
每個 AWS 區域只能使用一個 Remotion Lambda 儲存桶,但其中的資源可以被限定範圍。
儲存桶包含兩個資料夾:
sites/:存放你的站台renders/:存放你的渲染結果
渲染結果會在 renders/ 資料夾內自動建立具有唯一 ID 的子資料夾,因此不同環境之間不會互相干擾。
對所有環境使用同一個儲存桶是安全的。建議使用 privacy 選項將渲染結果設為私有。站台必須保持公開,因為它們是透過 HTTP 存取的。
環境變數管理
在實務上,可以透過環境變數來管理不同環境的配置:
# .env.production
REMOTION_SERVE_URL=https://remotionlambda-prod.s3.amazonaws.com/sites/remotion-production/index.html
REMOTION_FUNCTION_NAME=remotion-render-bds9aab
# .env.staging
REMOTION_SERVE_URL=https://remotionlambda-staging.s3.amazonaws.com/sites/remotion-staging/index.html
REMOTION_FUNCTION_NAME=remotion-render-bds9aab常見問題
為什麼無法重新命名函式?
npx remotion lambda render指令會尋找符合命名規則的函式- 根據預設使用者政策,Remotion Lambda 限制自身只存取符合命名規則的函式
- 你可以使用
speculateFunctionName()函式節省一次 API 呼叫 - 若只有一個相同配置的函式,它更有可能是「熱」的(warm),來自前次呼叫的暖機狀態
- 重新命名函式沒有任何好處
如果我需要兩個函式用於兩個不同的專案怎麼辦?
函式並不與特定專案綁定。
每個函式都是包含相同程式碼的二進位檔案——所有 Remotion Lambda 用戶在其函式中執行的都是完全相同的程式碼。你撰寫的 React 程式碼並不包含在函式中,而是託管在服務 URL(Serve URL)上。
每次函式呼叫都是隔離的,彼此不會衝突。雖然有並發限制,但該限制是以區域為單位,而不是以函式為單位。
我需要分離生產、預備與開發環境
函式呼叫彼此不會衝突。函式也不包含你撰寫的任何程式碼——它們是二進位的,所有 Remotion Lambda 用戶執行的都是完全相同的程式碼。
因此,一個錯誤的預備部署不可能影響生產函式。我們建議所有環境使用同一個函式。
我想要為不同函式設定不同的配置
這是有支援的。不同的配置(如記憶體大小、逾時時間)會生成不同名稱的函式,可以同時並存。
例如:
# 部署高記憶體函式用於生產
npx remotion lambda functions deploy --memory=3008
# 部署低記憶體函式用於測試
npx remotion lambda functions deploy --memory=1024最佳實踐總結
| 資源 | 建議策略 |
|---|---|
| Lambda 函式 | 相同配置共用;不同配置各自部署 |
| 站台 | 每個環境使用不同的 --site-name |
| S3 儲存桶 | 所有環境共用同一個儲存桶 |
| 渲染結果 | 自動隔離(唯一子資料夾 ID) |
| 環境變數 | 使用 .env 檔案管理各環境配置 |