upload failed: { Error: unable to verify the first

2019-08-19 00:40发布

问题:

I wrote a small code in AWS-Lambda(Node.js) to send the file to some API. I am able to run the code but i am getting the upload error.

Error: Function Logs: START RequestId: 08ad7fab-3658-11e8-8483-a7fbad976cb7 Version: $LATEST 2018-04-02T09:27:17.787Z 08ad7fab-3658-11e8-8483-a7fbad976cb7 upload failed: { Error: unable to verify the first certificate at Error (native) at TLSSocket.<anonymous> (_tls_wrap.js:1092:38) at emitNone (events.js:86:13) at TLSSocket.emit (events.js:185:7) at TLSSocket._finishInit (_tls_wrap.js:610:8) at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:440:38) code: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE' } END RequestId: 08ad7fab-3658-11e8-8483-a7fbad976cb7.

The code which i have written is :

console.log('Loading Function');

const fs = require('fs');
const request = require('request');
const url  = require('url');
const https = require('https');
https.globalAgent.options.ca = rootCas;

var rootCas = require('ssl-root-cas').create();
 
// default for all https requests
// (whether using https directly, request, or another module)
require('https').globalAgent.options.ca = rootCas;

exports.handler = (event, context, callback) => {
var formData = {
  // Pass a simple key-value pair
  my_field: 'my_value',
  // Pass data via Buffers
  my_buffer: new Buffer([1, 2, 3]),
  // Pass data via Streams
  my_file: fs.createReadStream(__dirname + '/myfile.csv'),
  // Pass multiple values /w an Array
//   attachments: [
//     fs.createReadStream(__dirname + '/myfile.txt'),
//     fs.createReadStream(__dirname + '/myfile.txt')
//   ],
  
};
var req = request.post({url:'https://abc.xyz.com:443/file/', formData: formData}, function optionalCallback(err, httpResponse, body) {
  if (err) {
    return console.error('upload failed:', err);
  }
  console.log('Upload successful!  Server responded with:', body);
});
};

When i am trying to run the same code locally, i am not getting any error even the module ssl is able to download all the certificates. The same when i am trying in AWS-Lambda , the code wont be able to download the certificates. I even tried in the Configure test with adding the JSON as rejectUnauthorized": false ,still not able to overcome with the error.