aws sdk ec2.describeInstances未列出所有EC2实例

我正在使用aws-sdk列出其IAMangular色为The_Name_of_My_IAM_Role所有正在运行的EC2实例。

 const AWS = require('aws-sdk') let credentials = new AWS.SharedIniFileCredentials({ profile: 'my_profile' }) AWS.config.credentials = credentials AWS.config.update({ region: 'ap-northeast-1' }) const ec2 = new AWS.EC2() let params = { Filters: [ { Name: 'iam-instance-profile.arn', Values: [`arn:aws:iam::123456789123:instance-profile/The_Name_of_My_IAM_Role`] }, { Name: 'instance-state-name', Values: ['running'] } ] } ec2.describeInstances(params, (err, data) => { if (err) { console.log(`describeInstances error: ${err}`) } else { console.log(`data.Reservations.length: ${data.Reservations.length}`) } }) 

我期望代码返回6个EC2实例。 但是它只返回4个。

如果我inputaws ec2 describe-instances --filters "Name=iam-instance-profile.arn,Values=arn:aws:iam::123456789123:instance-profile/The_Name_of_IAM_Role" "Name=instance-state-name,Values=running"命令在我的terminal。

我的意思是aws ec2 describe-instances ...命令返回所有6个EC2实例。

在运行aws ec2 describe-instances ...命令之前,我已经设置了以下环境variables。

 export AWS_DEFAULT_REGION=ap-northeast-1 export AWS_DEFAULT_PROFILE=my_profile 

我也在~/.aws/credentials文件中定义了my_profile

什么可能是错误的我的node.js代码?

或者这是aws-sdk的错误?

请注意,预订包含实例。

当通过一个命令启动多个实例时(例如,在控制台中启动两个相同的实例),那么这两个实例都是单个预留的一部分。

您的代码正在计算预订的数量,但实际上您希望计数包括所有预订中的实例数量。

解决scheme:循环预订,并将每个预订中的实例数加起来。