node.js - 尝试在 NodeJS 中使用 aws-sdk 在 S3 中创建文件夹时访问被拒绝
问题描述
我正在尝试使用节点中的 AWS-SDK 在 s3 存储桶中创建文件夹。我对相应的存储桶具有完全访问权限但是,当我运行代码以创建文件夹时,我总是收到“拒绝访问。
function init() {
if (s3Instance === null) {
AWS.config.update({
accessKeyId: S3_ACCESS_KEY_ID,
secretAccessKey: S3_SECRET_ACCESS_KEY,
region: S3_REGION
});
if (HTTP_PROXY) {
AWS.config.update({
httpOptions: { agent: proxy(HTTP_PROXY) }
});
}
// s3Instance = new AWS.S3();
s3Instance = new AWS.S3({ apiVersion: "2006-03-01" });
}
}
function createFolder(folderKey) {
return new Promise((resolve, reject) => {
var params = {
Bucket: S3_BUCKET,
Key: `${folderKey}/`,
Body: "body does not matter"
};
s3Instance.upload(params, function (err, data) {
if (err) {
console.log(err, err.stack);
reject(err);
} else {
console.log("Successfully created a folder on S3");
resolve("Successfully created a folder on S3");
}
});
});
}
bogawat\Workspace\oms-myportal\gateway\app\node_modules\aws-sdk\lib\state_machine.js:26:10 在请求。(c:\Users\sunny.bogawat\Workspace\oms-myportal\gateway\app\node_modules\aws-sdk\lib\request.js:38:9) 在请求。(c:\Users\sunny.bogawat\Workspace\oms-myportal\gateway\app\node_modules\aws-sdk\lib\request.js:690:12) 在 Request.callListeners (c:\Users\sunny.bogawat\ Workspace\oms-myportal\gateway\app\node_modules\aws-sdk\lib\sequential_executor.js:116:18) 在 Request.emit (c:\Users\sunny.bogawat\Workspace\oms-myportal\gateway\app\ node_modules\aws-sdk\lib\sequential_executor.js:78:10) 在 Request.emit (c:\Users\sunny.bogawat\Workspace\oms-myportal\gateway\app\node_modules\aws-sdk\lib\request. js:688:14) 在 Request.transition (c:\Users\sunny.bogawat\Workspace\oms-myportal\gateway\app\node_modules\aws-sdk\lib\request.js:22:10) 在 AcceptorStateMachine。runTo (c:\Users\sunny.bogawat\Workspace\oms-myportal\gateway\app\node_modules\aws-sdk\lib\state_machine.js:14:12) 在 c:\Users\sunny.bogawat\Workspace\oms -myportal\gateway\app\node_modules\aws-sdk\lib\state_machine.js:26:10 在请求。(c:\Users\sunny.bogawat\Workspace\oms-myportal\gateway\app\node_modules\aws-sdk\lib\request.js:38:9) 在请求。(c:\Users\sunny.bogawat\Workspace\oms-myportal\gateway\app\node_modules\aws-sdk\lib\request.js:690:12) 在 Request.callListeners (c:\Users\sunny.bogawat\ Workspace\oms-myportal\gateway\app\node_modules\aws-sdk\lib\sequential_executor.js:116:18) 在 callNextListener (c:\Users\sunny.bogawat\Workspace\oms-myportal\gateway\app\node_modules\ aws-sdk\lib\sequential_executor.js:96:12) 在 IncomingMessage.onEnd (c:\Users\sunny.bogawat\Workspace\oms-myportal\gateway\app\node_modules\aws-sdk\lib\event_listeners.js: 313:
解决方案
我认为您应该使用 putObject 并尝试像这样创建您的 s3 对象。
s3 = new S3({
credentials: {
region: process.env.AWS_REGION,
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
}
});
const uploadObject = async (bucket, key, body) => {
try {
const params = {
Bucket: bucket,
Key: key,
Body: body//,
//ContentType: "application/pdf"
}
var data = await s3.putObject(params).promise();
return { message: data.error || 'Successfull' };
} catch (err) {
console.log(err)
return { message: err.toString() || 'Failed' };
}
};
推荐阅读
- node.js - 节点服务器不工作
- java - 保持视频喜欢whatsapp自定义相机活动
- python-2.7 - 无法在 google colaboratory 上运行 caffe2
- c - 在C中以升序显示字符
- jquery - 向使用 Serenity 模板的 ASP.NET 应用程序添加字段验证
- linux - 本地计算机上的 2 个 Postgres 服务器。如何卸载或解除关联?
- sql - 从列中查找具有一个或两个数值的记录
- django - Modelforms:更新时无法查看可编辑内容
- ruby - 在 Ruby 中访问类变量
- laravel - 使用相同的表单请求,但将唯一代码传递给表单请求