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:循环预订,并将每个预订中的实例数加起来。