Мне нужно загрузить несколько файлов в S3 из приложения Next Js. Поскольку это серверная часть, у меня сложилось впечатление, что установка переменных среды должна работать, но это не так. Я знаю, что есть другие альтернативы, такие как назначение роли для EC2, но я хочу использовать accessKeyID и secretKey.
Это мой next.config.js
module.exports = {
env: {
//..others
AWS_ACCESS_KEY_ID: process.env.AWS_ACCESS_KEY_ID
},
serverRuntimeConfig: {
//..others
AWS_SECRET_ACCESS_KEY: process.env.AWS_SECRET_ACCESS_KEY
}
}
Это мой config/index.js
export default {
//...others
awsClientID: process.env. AWS_ACCESS_KEY_ID,
awsClientSecret: process.env.AWS_SECRET_ACCESS_KEY
}
Вот как я использую в своем коде:
import AWS from 'aws-sdk'
import config from '../config'
AWS.config.update({
accessKeyId: config.awsClientID,
secretAccessKey: config.awsClientSecret,
});
const S3 = new AWS.S3()
const params = {
Bucket: "bucketName",
Key: "some key",
Body: fileObject,
ContentType: fileObject.type,
ACL: 'public-read'
}
await S3.upload(params).promise()
Я получаю эту ошибку: Необработанное отклонение (CredentialsError): в конфигурации отсутствуют учетные данные, при использовании AWS_CONFIG_FILE установите AWS_SDK_LOAD_CONFIG = 1
Если я жестко закодирую учетные данные в коде, все будет нормально.
Как я могу заставить его работать правильно?