首页 > 解决方案 > 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 的新手)。

标签: amazon-web-servicesamazon-s3aws-lambda

解决方案


似乎错误是关于我没有为我的角色或我的 Lambda 函数分配权限。我仍然无法解压缩我的文件,但“禁止”错误不再存在。


推荐阅读