Lambda / nodejs http установил тайм-аут без настройки VPC - PullRequest
0 голосов
/ 11 января 2019

Я пытаюсь выполнить HTTP PUT через узел js в AWS lambda, но время ожидания истекает. Согласно это «У лямбда-функции с доступом к VPC не будет доступа в Интернет, если вы не добавите NAT», но в моем случае я не использую VPC.

exports.handler = (event, context) => {
      const options = {
          host: 'xxx',
          path: 'xxx',
          port: 443,
          method: 'PUT'
      };
    req = http.request(options, (res) => {
      console.log(res);
    });
};

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Как написан ваш код, он ничего не возвращает в качестве ответа.

Вы можете сделать это таким образом (используя callback в node 4, 6 или 8) ...

exports.handler = (event, context, callback) => {
    const options = {
        host: 'xxx',
        path: 'xxx',
        port: 443,
        method: 'PUT'
    };

    return http.request(options, (result) => {
        console.log(result);

        // Calling callback sends "result" to API Gateway.
        return callback(null, result);
    });
};

Или, если вы хотите использовать поддержку обещаний node 8 ...

// You can use `async` if you use `await` inside the function.
// Otherwise, `async` is not needed. Just return the promise.
exports.handler = (event, context) => {
    const options = {
        host: 'xxx',
        path: 'xxx',
        port: 443,
        method: 'PUT'
    };

    return new Promise((resolve, reject) => {
        return http.request(options, result => {
            return resolve(result)
        })
    })
};
0 голосов
/ 11 января 2019

Проблема с Lambda node.js.
Если вы хотите использовать node.js версии 8, вы должны написать такой код пример

exports.handler = async (event, context) => {
  const options = {
      host: 'xxx',
      path: 'xxx',
      port: 443,
      method: 'PUT'
  };
  const response = await http.request(options);
  console.log(response);
};

Если вы не хотите использовать node.js версии 8, вам нужно добавить третий параметр callback и вызвать его после выполнения функции.

exports.handler = (event, context, callback) => {
  const options = {
      host: 'xxx',
      path: 'xxx',
      port: 443,
      method: 'PUT'
  };
  req = http.request(options, (res) => {
    console.log(res);
    callback();
  });
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...