spaces - InvalidAccessKeyId

July 18, 2018 319 views
Node.js Ubuntu 16.04

When I try a simple spaces upload using the aws -sdk I keep getting the error: 'InvalidAccessKeyId: null',

here is the code with my secret key redacted:

const AWS = require('aws-sdk');
const fs = require('fs');

const publicKey = 'AKIAIEPGV5ULZ34YOZPA';
const secretKey = 'redacted';

AWS.config.update({region: 'nyc3', accessKeyId: publicKey, secretAccessKey: secretKey});

let spacesEndpoint = new AWS.Endpoint('nyc3.digitaloceanspaces.com');
let s3 = new AWS.S3({
endpoint: spacesEndpoint,
region: 'nyc3',
params: {
Bucket: 'packix',
ContentType: 'application/x-debian-package',
ACL: 'private'
}
});

let testParams = {
Key: 'packixtestdeb'
};

let debStream = fs.createReadStream('test.deb');
testParams['Body'] = debStream;

s3.upload(testParams)
.on('httpUploadProgress', function(evt) { console.log(evt); })
.send(function(err, data) { console.log(err, data) });

1 Answer

Try setting the accessKeyId and secretAccessKey in the constructor of the S3 object.

const s3 = new AWS.S3({
    endpoint: process.env.SPACES_ENDPOINT,
    accessKeyId: process.env.AWS_ACCESS_KEY_ID,
    secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY
});
s3.upload(...)

The above is working for me.

As a sidenote, I stumbled across this question when I accidentally created a new access token rather than access key.

Have another answer? Share your knowledge.