http.get из async lambda timeout пытается достичь общедоступного EC2 - PullRequest
2 голосов
/ 24 марта 2019

Я пытаюсь выяснить, чего мне не хватает в этом контексте.

У меня есть EC2 с двумя докерами.Один из них представляет собой Python REST API, другой содержит nginx, который перенаправляет на сервер Python.

Отправка запроса GET на конечную точку my / test из браузера или почтальона возвращает ожидаемое значение.

Iпопытался получить доступ к тому же общему URL-адресу из лямбды AWS, но тайм-аут запроса.

Вот моя текущая ситуация

  • URL-адрес EC2 является общедоступным и доступен из моего браузера.
  • Лямбда может успешно связаться с www.google.com.
  • Лямбда не может достичь URL EC2.
  • Лямбда не имеет VPC.
  • Lambda находится за шлюзом API (веб-сокет).
  • Пробовал большое значение тайм-аута (30 с +).

Возможно, проблема связана с моим незнанием среды AWS.Кто-нибудь может увидеть проблему в следующем коде?

const AWS = require('aws-sdk');
require('./patch.js');
var http = require('http');

function test(url){
  return new Promise((resolve, reject) => {
    const req = http.request(url,
      (res) => {
        let body = '';
        res.on('data', (chunk) => (body += chunk.toString()));
        res.on('error', reject);
        res.on('end', () => {
          if (res.statusCode >= 200 && res.statusCode <= 299) {

            resolve({statusCode: res.statusCode, headers: res.headers, body: body});
          } else {
            reject('Request failed. status: ' + res.statusCode + ', body: ' + body);
          }
        });
      });
    req.on('error', reject);
    req.write('', 'binary');
    req.end();
  });
}


exports.handler = async(event) => {  
  let googleUrl = "http://www.google.com";
  let ec2Url = "XXXXX"; // Public EC2 url

  await test(googleUrl).then(function(res){
        console.log("Response",res); // This is logged 
    });

  await test(ec2Url).then(function(res){
        console.log("Response",res); // This is never logged. Timeout kicked in.
    });
  return {};
};

1 Ответ

0 голосов
/ 24 марта 2019

Оказывается, я не сохранил группу безопасности после ее редактирования. Проверьте правила входящей группы безопасности, если вы столкнулись с подобной проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...