Skip to main content

认证

您可以使用 @remotion/lambda 包进行身份验证,方法如下:

  • 使用指向文件的 REMOTION_AWS_PROFILEAWS_PROFILE 环境变量
  • 使用 REMOTION_AWS_ACCESS_KEY_IDREMOTION_AWS_SECRET_ACCESS_KEY 环境变量
  • 使用 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY 环境变量

如果您使用 Remotion CLI,则会自动读取位于 .env 文件中的环境变量,但如果您使用 Node.JS APIs,则不会。如果提供了多种方式,Remotion 将按照上述顺序使用第一个找到的凭据。

我们建议使用以 REMOTION_ 为前缀的环境变量变体,因为:

  • 在某些环境中,未带前缀的变体可能已被保留(例如 Vercel 部署)
  • 如果使用未带前缀的版本,可能会导致 Remotion 与 AWS CLI 之间的冲突。

旋转凭据

使用多个 AWS 帐户可以是一种可行的扩展策略,以增加并发限制。为此,您可以在使用 @remotion/lambda 进行操作之前,为 REMOTION_AWS_ACCESS_KEY_IDREMOTION_AWS_SECRET_ACCESS_KEY 或其他环境变量设置新值。以下是一个实现示例。

.env
ini
# Account 1
AWS_KEY_1=AK...
AWS_SECRET_=M/
# Account 2
AWS_KEY_2=AK...
AWS_SECRET_2=M/
.env
ini
# Account 1
AWS_KEY_1=AK...
AWS_SECRET_=M/
# Account 2
AWS_KEY_2=AK...
AWS_SECRET_2=M/
note

您需要使用 dotenv 包自行读取 .env 文件。

rotate-credentials.ts
tsx
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}`];
};
 
// Set random account credentials
setEnvForKey(getRandomAwsAccount());
rotate-credentials.ts
tsx
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}`];
};
 
// Set random account credentials
setEnvForKey(getRandomAwsAccount());

使用 AWS 配置文件

从 v3.3.9 开始可用

如果您更喜欢 AWS 配置文件,您可以使用它们。配置文件列表位于 macOS 和 Linux 上的 ~/.aws/credentials,格式如下:

~/.aws/credentials
ini
[default]
# ...
[remotion]
aws_access_key_id = YOUR_ACCESS_KEY_ID
aws_secret_access_key = YOUR_SECRET_ACCESS_KEY
~/.aws/credentials
ini
[default]
# ...
[remotion]
aws_access_key_id = YOUR_ACCESS_KEY_ID
aws_secret_access_key = YOUR_SECRET_ACCESS_KEY

在此示例中,我们添加了一个 remotion 配置文件。现在,通过设置 REMOTION_AWS_PROFILE=remotion,您可以选择配置文件,而无需再单独传递每个环境变量。

跳过凭证检查v4.0.160

S3 客户端可以通过其他方式进行身份验证,比如来自 EC2 实例元数据。
如果您已经设置了这个,您可以将 REMOTION_SKIP_AWS_CREDENTIALS_CHECK 环境变量设置为任何值。

ts
process.env.REMOTION_SKIP_AWS_CREDENTIALS_CHECK = "1";
ts
process.env.REMOTION_SKIP_AWS_CREDENTIALS_CHECK = "1";

Remotion 将不会检查凭证,如果未设置凭证也不会抛出错误。
但是,如果存在配置错误,您仍然可能会从 AWS SDK 得到错误。
还请阅读关于禁用缓存客户端的注意事项。

禁用缓存v4.0.160

为了节省内存并加快初始化速度,AWS 客户端被缓存起来。
缓存键基于凭证和区域。

如果您选择了跳过凭证检查,该实例将在进程的生命周期内被缓存。
如果您想禁用缓存,请将 REMOTION_SKIP_AWS_CREDENTIALS_CHECK 环境变量设置为任何值。
您不太可能需要设置这个值。只有在您在 API 调用之间更改身份验证方式时才需要。

参见