Remotion LabRemotion Lab
LambdaLambda 環境分離

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 檔案管理各環境配置

參閱