Lambda S3 unzipping problem returns "Error: null Forbidden: null"

Viewed 140

I have this index.js which uses this unzipper module

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);
    }

};

Which is referenced from this tutorial.

But I'm getting this error in my 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

I do not understand if what exactly this error means. For my current level of understanding the AWS methods, it seems insufficient (I'm a newbie at AWS).

1 Answers

It seems like the error is about me not assigning permission on either my role or within my Lambda function. I still cannot unzip my file, but the error "Forbidden" does not persist anymore.

Related