Lambda AWS 身分驗證
說明如何使用環境變數、AWS 設定檔或輪換憑證,為 @remotion/lambda 套件設定 AWS 身分驗證。
概覽
@remotion/lambda 套件支援多種 AWS 身分驗證方式。你可以根據部署環境與安全需求選擇最適合的方法。
使用環境變數
最常見的驗證方式是設定環境變數。Remotion 優先讀取帶有 REMOTION_ 前綴的版本:
# 推薦方式(使用 REMOTION_ 前綴)
REMOTION_AWS_ACCESS_KEY_ID=AKIAxxxxxxxxxxxxxxxx
REMOTION_AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# 也支援標準 AWS 環境變數(但不建議,見下方說明)
AWS_ACCESS_KEY_ID=AKIAxxxxxxxxxxxxxxxx
AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx為何建議使用 REMOTION_ 前綴?
- 某些環境(例如 Vercel 部署)可能已保留未加前綴的變數名稱
- 使用未加前綴的版本可能與 AWS CLI 產生令人困惑的衝突
- 加前綴能更清楚地表達這些憑證是給 Remotion 使用的
輪換憑證
使用多個 AWS 帳戶是提高並行限制的可行擴展策略。你可以在每次操作前動態設定環境變數:
# .env
AWS_KEY_1=AKIAxxxxxxxxxxxxxxxx
AWS_SECRET_1=xxxxxxxxxxxxxxxxxxxxxxx
AWS_KEY_2=AKIAyyyyyyyyyyyyyyyy
AWS_SECRET_2=yyyyyyyyyyyyyyyyyyyyyyy以下是輪換帳戶憑證的實作範例:
// rotate-credentials.ts
const getAccountCount = () => {
let count = 0;
while (
process.env["AWS_KEY_" + (count + 1)] &&
process.env["AWS_SECRET_" + (count + 1)]
) {
count++;
}
return count;
};
const getRandomAwsAccount = () => {
return Math.ceil(Math.random() * getAccountCount());
};
const setEnvForKey = (key: number) => {
process.env.REMOTION_AWS_ACCESS_KEY_ID = process.env[`AWS_KEY_${key}`];
process.env.REMOTION_AWS_SECRET_ACCESS_KEY =
process.env[`AWS_SECRET_${key}`];
};
// 設定隨機帳戶憑證
setEnvForKey(getRandomAwsAccount());注意:你需要使用
dotenv套件自行讀取.env檔案。
使用 AWS 設定檔
從 v3.3.9 起可使用 AWS 設定檔。設定檔位於 ~/.aws/credentials(macOS / Linux),格式如下:
[default]
# 預設設定檔...
[remotion]
aws_access_key_id = YOUR_ACCESS_KEY_ID
aws_secret_access_key = YOUR_SECRET_ACCESS_KEY設定好設定檔後,設定以下環境變數即可選擇該設定檔,無需個別傳入每個環境變數:
REMOTION_AWS_PROFILE=remotion跳過憑證檢查
從 v4.0.160 起提供此功能。
如果你使用 EC2 執行個體中繼資料等其他方式讓 S3 用戶端進行驗證,可以設定以下環境變數跳過 Remotion 的憑證檢查:
process.env.REMOTION_SKIP_AWS_CREDENTIALS_CHECK = "1";設定後,Remotion 不會檢查憑證,也不會在未設定時拋出錯誤。但如果有設定錯誤,你仍可能收到來自 AWS SDK 的錯誤訊息。
注意:請同時閱讀關於快取用戶端的說明。
停用快取
從 v4.0.160 起提供此功能。
AWS 用戶端會進行快取以節省記憶體並加快初始化速度。快取鍵基於憑證與區域。
- 若跳過憑證檢查,執行個體將在程序的整個生命週期內被快取
- 若要停用快取,設定
REMOTION_SKIP_AWS_CREDENTIALS_CHECK環境變數
一般情況下不需要停用快取,僅在你需要在 API 呼叫之間切換驗證方式時才需要此設定。
驗證流程說明
呼叫 @remotion/lambda API
↓
檢查 REMOTION_AWS_ACCESS_KEY_ID
↓
檢查 AWS_ACCESS_KEY_ID
↓
檢查 REMOTION_AWS_PROFILE
↓
使用找到的第一組有效憑證