amazon-web-services - Lambda S3 解压问题返回“错误:null Forbidden:null”
问题描述
我有这个index.js
使用这个解压缩模块
console.log('Loading function');
const aws = require('aws-sdk');
const s3Client = new aws.S3({ apiVersion: '2006-03-01' });
const unzipper = require("unzipper");
exports.handler = async (event) => {
const bucket = 'bucket_name';
const filename = JSON.stringify(event.Records[0].s3.object.key.replace(/\+/g, ' '), null, 2);
const filepath = filename.substring(0, filename.lastIndexOf("/") + 1);
console.log("Filename: " + filename);
console.log("Filepath: " + filepath);
try {
// the lines of code below is referenced from a tutorial inside the link below this code
const directory = await unzipper.Open.s3(s3Client, { Bucket: bucket, Key: filename });
return new Promise((resolve, reject) => {
directory.files[0]
.stream()
.pipe(s3Client.createWriteStream(filepath))
.on('error', reject)
.on('finish', resolve)
});
} catch (error) {
console.log("Error: ", error.message, error.stack);
}
};
从本教程中引用。
但是我在 Cloudwatch 中遇到了这个错误:
2021-04-15T04:58:12.844Z undefined INFO Loading function
START RequestId: fa89f24c-d6e1-4452-ae1d-ef7246ad0edf Version: $LATEST
2021-04-15T04:58:13.332Z fa89f24c-d6e1-4452-ae1d-ef7246ad0edf INFO Filename: "New folder/New folder/events.zip"
2021-04-15T04:58:13.341Z fa89f24c-d6e1-4452-ae1d-ef7246ad0edf INFO Filepath: "New folder/New folder/
2021-04-15T04:58:14.084Z fa89f24c-d6e1-4452-ae1d-ef7246ad0edf INFO Error: null Forbidden: null
at Request.extractError (/opt/nodejs/node_modules/aws-sdk/lib/services/s3.js:698:35)
at Request.callListeners (/opt/nodejs/node_modules/aws-sdk/lib/sequential_executor.js:106:20)
at Request.emit (/opt/nodejs/node_modules/aws-sdk/lib/sequential_executor.js:78:10)
at Request.emit (/opt/nodejs/node_modules/aws-sdk/lib/request.js:688:14)
at Request.transition (/opt/nodejs/node_modules/aws-sdk/lib/request.js:22:10)
at AcceptorStateMachine.runTo (/opt/nodejs/node_modules/aws-sdk/lib/state_machine.js:14:12)
at /opt/nodejs/node_modules/aws-sdk/lib/state_machine.js:26:10
at Request.<anonymous> (/opt/nodejs/node_modules/aws-sdk/lib/request.js:38:9)
at Request.<anonymous> (/opt/nodejs/node_modules/aws-sdk/lib/request.js:690:12)
at Request.callListeners (/opt/nodejs/node_modules/aws-sdk/lib/sequential_executor.js:116:18)
at Request.emit (/opt/nodejs/node_modules/aws-sdk/lib/sequential_executor.js:78:10)
at Request.emit (/opt/nodejs/node_modules/aws-sdk/lib/request.js:688:14)
at Request.transition (/opt/nodejs/node_modules/aws-sdk/lib/request.js:22:10)
at AcceptorStateMachine.runTo (/opt/nodejs/node_modules/aws-sdk/lib/state_machine.js:14:12)
at /opt/nodejs/node_modules/aws-sdk/lib/state_machine.js:26:10
at Request.<anonymous> (/opt/nodejs/node_modules/aws-sdk/lib/request.js:38:9)
END RequestId: fa89f24c-d6e1-4452-ae1d-ef7246ad0edf
我不明白这个错误到底是什么意思。就我目前对 AWS 方法的理解水平而言,这似乎还不够(我是 AWS 的新手)。
解决方案
似乎错误是关于我没有为我的角色或我的 Lambda 函数分配权限。我仍然无法解压缩我的文件,但“禁止”错误不再存在。
推荐阅读
- elasticsearch - 有没有办法像其他编程语言一样用脚本迭代弹性数组文档
- r - 使用 Rvest 提取特定父节点的所有子节点的文本作为数据框中的变量
- json - 使用 jq 处理可选数组
- java - 需要操作返回的 JSON 对象并将一部分提取到列表中
- python - 向下滚动帖子 Instagram 主页 selenium 和 python
- karate - 我可以将列表从一个端点传递到另一个端点并在同一个文件中循环吗
- node.js - 如何根据文档数量限制删除集合中的文档?
- ios - 如何根据名称动态查找和调用 Swift 函数?
- javascript - 日期更改nodejs时未创建日志文件
- c# - C# MVC AngularJS:调用了控制器方法,但未从 $http.post() 方法接收值