Есть ли способ вызвать Rest API из функций aws lamda (узел js) - PullRequest
0 голосов
/ 06 мая 2019

Я пытаюсь вызвать внешний API из лямбда-функции для намерения бота LEX и не могу связаться с внешним API, эти API размещены где-то еще. Тот же JS-код работает из моей локальной системы, но не может общаться с помощью лямбда-функции. так что это не проблема сервиса, скорее проблема в облачной сети AWS или что-то связанное. я посмотрел журналы наблюдения за облаком, но об ошибках не сообщалось

Я не использую VPC, моя функция вне VPC. любая помощь будет принята с благодарностью

exports.handler = async (event) => {
console.log ("executing222222") ;
var https = require('https');

var options = {
  'method': 'POST',
  'hostname': 'ccc.com',
  'path': '/xxx',
  'headers': {
    'Authorization': 'bearer6ad1a3ae-2a1d-48e0-bf68-8669c5b9af62'
  }
};

console.log ("test"); 
var req = https.request(options, function (res) {
  console.log ("test1111"); 
  res.setEncoding('utf8');
  var returnData = "";
  res.on('data', function (chunk) {
    returnData += chunk;
  });
  console.log ("test11"); 
  res.on("end", function () {
    var body = JSON.parse(returnData) ;
    console.log(body.toString());
  });

  res.on("error", function (error) {
    console.error(error);
  });
});

req.end();
};

1 Ответ

0 голосов
/ 08 мая 2019

этот код помогает решить проблему асинхронности.

const http = require ('http');

exports.handler = async (event, context) => {

    return new Promise((resolve, reject) => {
        const options = {
            host: 'ec2-18-191-89-162.us-east-2.compute.amazonaws.com',
            path: '/api/repos/r1639420d605/index?delta=true&clear=false',
            port: 8000,
            method: 'PUT'
        };

        const req = http.request(options, (res) => {
          resolve('Success');
        });

        req.on('error', (e) => {
          reject(e.message);
        });

        // send the request
        req.write('');
        req.end();
    });
};`enter code here`
...