#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()