Node.js aws sdk ec2.DescripteBinstances未列出所有ec2实例

Node.js aws sdk ec2.DescripteBinstances未列出所有ec2实例,node.js,amazon-web-services,aws-sdk,Node.js,Amazon Web Services,Aws Sdk,我使用列出所有正在运行的EC2实例,这些实例的IAM角色是我的IAM角色的名称 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

我使用列出所有正在运行的EC2实例,这些实例的IAM角色是我的IAM角色的名称

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个

如果我键入aws ec2 description instances--filters“Name=iam instance profile.arn,Values=arn:aws:iam::123456789123:instance profile/iam角色的名称”“Name=instance state Name,Values=running”命令,则不会出现问题

我的意思是
AWSEC2描述实例…
命令返回所有6个ec2实例

在运行
aws ec2 descripe instances…
命令之前,我设置了以下环境变量

export AWS_DEFAULT_REGION=ap-northeast-1
export AWS_DEFAULT_PROFILE=my_profile
我也在
~/.aws/credentials
文件中定义了
my_profile

我的node.js代码可能有什么问题


或者这是aws sdk的一个bug?

请注意,保留包含实例

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

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

解决方案:遍历保留,并将每个保留中的实例数相加。

下面是一个shell脚本(使用aws cli),用于遍历所有区域并在表中显示所有ec2实例:

for region in $(aws ec2 describe-regions --query 'Regions[*].RegionName' --output text); do
   echo "Region: $region"
   aws ec2 describe-instances --region $region --query "Reservations[*].Instances[*].{name: Tags[?Key=='Name'] | [0].Value, instance_id: InstanceId, ip_address: PrivateIpAddress, state: State.Name}" --output table
done

node.js应该有相同的方法

从CLI返回的6中是否包含返回的4?(也就是说,它们是相同的实例吗?)如果删除过滤器,结果是否(至少)包含您期望的6个实例?您是对的。我发现一个预订中包含两个实例。