Remotion LabRemotion Lab
LambdaLambda 區域選擇

Lambda 區域選擇

說明如何為 Remotion Lambda 選擇最合適的 AWS 區域,包含支援的區域列表、延遲考量、定價差異與多區域部署策略。

Lambda 區域選擇

選擇正確的 AWS 區域是 Remotion Lambda 部署中的重要決策,會直接影響渲染延遲、費用與可用的並行配額。

支援的區域

Remotion Lambda 目前支援以下 AWS 區域:

區域代碼地理位置
us-east-1美國東部 - 維吉尼亞州北部
us-east-2美國東部 - 俄亥俄州
us-west-1美國西部 - 加利福尼亞州北部
us-west-2美國西部 - 奧勒岡州
af-south-1非洲 - 開普敦
ap-east-1亞太 - 香港
ap-south-1亞太 - 孟買
ap-northeast-1亞太 - 東京
ap-northeast-2亞太 - 首爾
ap-northeast-3亞太 - 大阪
ap-southeast-1亞太 - 新加坡
ap-southeast-2亞太 - 雪梨
ca-central-1加拿大 - 中部
eu-central-1歐洲 - 法蘭克福
eu-west-1歐洲 - 愛爾蘭
eu-west-2歐洲 - 倫敦
eu-west-3歐洲 - 巴黎
eu-north-1歐洲 - 斯德哥爾摩
eu-south-1歐洲 - 米蘭
me-south-1中東 - 巴林
sa-east-1南美洲 - 聖保羅

設定預設區域

透過環境變數設定預設區域,適用於 CLI 指令:

# 在 .env 檔案中設定
REMOTION_AWS_REGION=ap-northeast-1

注意:REMOTION_AWS_REGION 環境變數不適用於 Node.js API 呼叫,Node.js API 必須在每次呼叫時明確傳入 region 參數。

透過 CLI 指定區域

所有 CLI 指令均可使用 --region 旗標覆蓋預設設定:

# 部署函式到東京區域
npx remotion lambda functions deploy --region ap-northeast-1
 
# 部署站台到新加坡區域
npx remotion lambda sites create src/index.ts --region ap-southeast-1
 
# 在指定區域進行渲染
npx remotion lambda render <serve-url> <composition> --region eu-central-1

透過 Node.js API 指定區域

import { deployFunction, deploySite, renderMediaOnLambda } from "@remotion/lambda";
 
// 部署函式到東京區域
const { functionName } = await deployFunction({
  region: "ap-northeast-1",
  timeoutInSeconds: 120,
  memorySizeInMb: 2048,
  createCloudWatchLogGroup: true,
});
 
// 部署站台到相同區域
const { serveUrl } = await deploySite({
  bucketName: "remotionlambda-ap-northeast-1-xxxxx",
  entryPoint: "src/index.ts",
  region: "ap-northeast-1",
  siteName: "my-video",
});
 
// 在相同區域渲染
const { renderId } = await renderMediaOnLambda({
  region: "ap-northeast-1",
  functionName,
  serveUrl,
  composition: "MyVideo",
  inputProps: {},
  codec: "h264",
});

延遲考量

選擇區域時,應考量以下延遲因素:

  • API 呼叫延遲:從你的伺服器到 AWS Lambda 的網路延遲。選擇距離伺服器最近的區域可減少啟動渲染的等待時間。
  • S3 傳輸延遲:渲染完成後從 S3 下載影片的速度。若使用者分佈在特定地區,選擇靠近使用者的區域更為合適。
  • 冷啟動時間:Lambda 函式的冷啟動時間在各區域差異不大,但熱門區域(如 us-east-1)因基礎設施更成熟,整體表現可能略優。

各區域定價比較

不同區域的 Lambda 執行費用有所差異(每 GB-秒費率,供參考,以 AWS 官方定價頁面為準):

區域相對費用
us-east-1, us-east-2, us-west-2基準費率(最低)
eu-west-1, eu-central-1與美國東部相近
ap-northeast-1, ap-southeast-1略高於美國區域
ap-east-1(香港)較高
af-south-1(開普敦)較高
me-south-1(巴林)較高

多區域部署策略

若你需要更高的並行能力或更好的全球覆蓋率,可以考慮多區域部署:

import { renderMediaOnLambda } from "@remotion/lambda";
 
// 根據使用者位置路由到最近的區域
const getRegionForUser = (userContinent: string) => {
  const regionMap: Record<string, string> = {
    "asia": "ap-northeast-1",
    "europe": "eu-central-1",
    "americas": "us-east-1",
  };
  return regionMap[userContinent] ?? "us-east-1";
};
 
const region = getRegionForUser(user.continent);
const { renderId } = await renderMediaOnLambda({
  region,
  // ...其他參數
});

多區域部署的優點包含:

  • 總並行配額翻倍(每個區域各有獨立的 200 個並行限制)
  • 降低終端使用者的延遲體驗
  • 提高系統可用性(單一區域故障不影響整體服務)

啟用非預設區域

部分 Remotion 支援的 AWS 區域在新帳戶中預設未啟用(例如 af-south-1ap-east-1eu-south-1me-south-1)。

若遇到以下錯誤,表示需要手動啟用該區域:

The security token included in the request is invalid

啟用步驟:

  1. 前往 AWS 管理主控台
  2. 點擊右上角帳戶名稱,選擇「帳戶」
  3. 向下捲動至「AWS 區域」區塊
  4. 找到目標區域,點擊「啟用」

重要限制

  • 函式與 S3 儲存桶必須位於同一區域:不支援跨區域渲染,Lambda 函式和用於儲存渲染結果的 S3 儲存桶必須在同一個 AWS 區域內。
  • 不同區域需分別部署:若要在多個區域渲染,需要在每個區域各自部署一次函式和站台。

相關資源