команда aws-sdk/client-ec2 DescribeInstancesCommand возвращает пустой массив, когда nodejs «http.Сервер» запущен, в противном случае возвращает ожидаемые данные

#node.js #amazon-ec2 #aws-sdk-js #aws-sdk-nodejs

#node.js #amazon-ec2 #aws-sdk-js #aws-sdk-nodejs

Вопрос:

Я использую aws sdk для javascript и его клиент ec2 «@aws-sdk/клиент-ec2».

Я пытаюсь перечислить экземпляры ec2, используя DescribeInstancesCommand .

 async getInstances(nextToken?: string) {  logger.info("ec2.service.getInstances");  try {  let input: DescribeInstancesCommandInput = {};   let command = new DescribeInstancesCommand(input);   const instanceData = await this.client.send(command);   return instanceData;  } catch (err) {  logger.error(err);  throw err  }  }  

В приведенном выше коде this.client EC2Client правильно инициализирован учетными данными.

Я упростил его использование ниже в функции

 export async function checkService() {  const x = new Ec2Service('default');  const instances = await x.getInstances()  console.log('instances', instances.Reservations.length);  return instances; }  

Я использую сервер express для API, чтобы использовать результат этой функции в качестве ответа. Я также использую другие сервисы, такие как s3 и iam, но в этих сервисах нет проблем.

Запуск функции, если http-сервер прослушивает, приводит к пустому массиву, DescribeInstancesCommand но если сервер не прослушивает, я получаю реальные данные экземпляра ec2.

Упрощенный код для инициализации сервера

 import * as http from 'http' const server = http.createServer(() =gt; {  console.log("[SERVER]") }); const _server = server.listen(process.env.PORT); //Commenting this line leads to desired output checkService()