I had the same issue. Region was Asia Pacific(Mumbai). Its actual region ap-south-1. Here is link
http://docs.aws.amazon.com/general/latest/gr/rande.html
Also configured AWSCLI using cmd
aws configure set default.s3.signature_version s3v4
here is link
http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html
Full workingCode here
var express = require('express');
var app = express();
var http = require('http').Server(app);
var fs = require('fs');
var aws = require('aws-sdk');
var S3FS = require('s3fs');
var s3fsImpl = new S3FS('ipxstorage/products', { accessKeyId:'Use your accesskey', secretAccesskey:'use your sck', region:'ap-south-1'});
var multiparty = require('connect-multiparty');
var multipartyMiddleware = multiparty();
aws.config.update({ signatureVersion:'v4'});
app.use(express.static(__dirname + '/public'));
app.set('views', __dirname+'/public/');
app.engine('html', require('ejs').renderFile);
app.use(multipartyMiddleware);
app.post('/upload', function(req, res){
console.log(req.files.file);
var file = req.files.file;
var stream = fs.createReadStream(file.path);
return s3fsImpl.writeFile(file.originalFilename, stream).then( function(){
console.log('File Saved...');
res.redirect('/')
});
});
<form action="upload" method="POST" enctype="multipart/form-data">
<div class="file-field input-field">
<div class="btn"><span>Browse File</span><input name="file" type="file"></div>
<div class="file-path-wrapper">
<input class="file-path validate" type="text">
</div>
</div>
<button class="btn" type="Submit">Submit</button>
</form>