admin 管理员组文章数量: 1086019
AWS
当我尝试在 nodejs 中使用 aws-sdk-s3-client 上传文件时。它抛出验证错误:
错误:解析的凭证对象无效 在 SignatureV4.validateResolvedCredentials (/api/node_modules/@aws-sdk/signature-v4/dist-cjs/SignatureV4.js:163:19) 在 SignatureV4.signRequest (/api/node_modules/@aws-sdk/signature-v4/dist-cjs/SignatureV4.js:88:14)
这是我的 s3Client 配置文件的样子:
s3_util.js
const dotenv = require("dotenv");
dotenv.config();
const AWS = require("@aws-sdk/client-s3");
const bucketRegion = process.env.BUCKET_REGION;
const accessKey = process.env.ACCESS_KEY;
const secretAccesskey = process.env.SECRET_ACCESS_KEY;
const s3 = new AWS.S3Client({
credentials: {
accessKeyId: accessKey,
accessKey: secretAccesskey,
},
region: bucketRegion,
});
module.exports = s3;
上传文件到 s3
const { PutObjectCommand, GetObjectCommand } = require("@aws-sdk/client-s3");
const s3 = require("./s3_util");
const { getSignedUrl } = require("@aws-sdk/s3-request-presigner");
const uploadFileToS3 = async (bucketName, file, uploadPath) => {
console.log(file, "file");
const commandProps = {
Bucket: bucketName,
Key: uploadPath + file.originalname,
Body: file.buffer,
ContentType: file.mimetype,
};
const uploadFileCommand = new PutObjectCommand(commandProps);
let data;
try {
data = await s3.send(uploadFileCommand);
} catch (error) {
console.log(error);
// const { requestId, cfId, extendedRequestId } = error.$$metadata;
// console.log({ requestId, cfId, extendedRequestId });
}
return data;
};
我想要解决它为什么会抛出错误的解决方案,以及解决该错误所涉及的设置是什么。
回答如下:确保导入 dotenv 模块
import * as dotenv from 'dotenv';
dotenv.config();
const s3Client = new S3Client({
endpoint: 'https://sgp1.digitaloceanspaces',
forcePathStyle: false,
region: 'sgp1',
credentials: {
accessKeyId: process.env.YOUR_ACCESS_KEY,
secretAccessKey: process.env.YOUR_SECRET_KEY,
}
});
这是一个简单的代码快照,因为我使用的是数字海洋桶,它看起来像这样并且可以正常工作。
本文标签: aws
版权声明:本文标题:AWS 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1717790828a712719.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论