如何为 next.js 应用程序设置 AWS 凭证?

问题描述 投票:0回答:1

我正在尝试创建一个简单的应用程序,将图像从 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。但没有任何效果。

amazon-web-services amazon-s3 next.js aws-credentials
1个回答
0
投票

您需要要求并配置

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() });
© www.soinside.com 2019 - 2024. All rights reserved.