【发布时间】:2018-04-05 20:33:20
【问题描述】:
我正在使用aws-sdk 列出所有正在运行的 IAM 角色为 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 个。
如果我在终端中输入aws 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" 命令,则不会出现此问题。
我的意思是 aws ec2 describe-instances ... 命令返回所有 6 个 EC2 实例。
在运行aws ec2 describe-instances ... 命令之前,我已经设置了以下环境变量。
export AWS_DEFAULT_REGION=ap-northeast-1
export AWS_DEFAULT_PROFILE=my_profile
我还在~/.aws/credentials 文件中定义了my_profile。
我的 node.js 代码可能有什么问题?
或者这是aws-sdk的bug?
【问题讨论】:
-
返回的 4 个是从 CLI 返回的 6 个的一部分吗? (也就是说,它们是 相同的 个实例吗?)如果您删除过滤器,结果是否(至少)包含您预期的 6 个实例?
标签: node.js amazon-web-services aws-sdk