我正在尝试创建一个简单的应用程序,将图像从 Web 表单上传到 S3 存储桶。我遇到的问题是访问我的应用程序中的访问键。最初,我使用的是 aws-sdk v2 并尝试读取存储在 .env 文件中的环境变量:
// Configure AWS SDK
AWS.config.update({
accessKeyId: process.env.MY_ACCESS_KEY_ID!,
secretAccessKey: process.env.MY_SECRET_ACCESS_KEY!,
region: "us-west-1",
});
我不确定为什么总是收到“缺少凭据”错误。我用实际的访问密钥替换了 process.env.*,并且应用程序运行了。但是,我无法推送此代码,因为我必须隐藏我的访问密钥。
接下来,我尝试了 aws-sdk v3 并使用了 fromEnv():
const client = new S3Client({ region: "us-west-1", credentials: fromEnv() });
但是,这会产生相同的错误。
我的目标是在本地运行它,然后将其上传到 AWS Amplify 或其他托管平台,然后从那里读取环境变量。我该如何实现这个目标?
编辑:我什至尝试了不同的方法,例如使用 .env.local 与 .env 文件。创建包含环境变量类型的environment.d.ts 文件。使用 dotenv。但没有任何效果。
您需要要求并配置
dotenv
才能将环境变量从 .env
文件加载到您的应用程序中
require('dotenv').config();
对于 AWS SDK v3,您可以使用
fromEnv
中的 @aws-sdk/credential-provider-node
方法从环境变量加载凭证
import { S3Client } from '@aws-sdk/client-s3';
import { fromEnv } from '@aws-sdk/credential-provider-node';
const client = new S3Client({ region: 'us-west-1', credentials: fromEnv() });