我正在使用AWS Javascript SDK通过AWS API查询我的云基础架构。
我可以通过在过滤器中指定key = value对的标签来查询资源,例如“Environment = Production”。我找不到的是如何查询空值标签或不存在的标签。例如,我想查询没有定义某个标记的所有EC2实例,比如说,没有“环境”标记的所有EC2实例。
SDK可以实现吗?
答案 0 :(得分:1)
您可以将nodejs子进程与aws-cli结合使用,例如:
const { exec } = require('child_process');
exec(`aws ec2 describe-instances --profile dev --query "Reservations[].Instances[].[InstanceId, Tags]" --output text | grep None | awk '{print $1}'`, (error, stdout, stderr) => {
console.log(`stdout: ${stdout}`);
});
答案 1 :(得分:1)
执行此操作的众多方法之一是使用describeInstances()
const ec2 = new AWS.EC2({
region: "us-west-2"
});
var clearThese = [];
ec2.describeInstances(function (err, data) {
if (err) return err;
data.Reservations.forEach(function (reservation) {
reservation.Instances.forEach(function (instance) {
//console.log(instance.Tags);
let temp = instance.Tags.filter(function (arr) { return arr.Key === 'Environment' })[0];
if (temp !== "undefined") {
clearThese.push(instance.InstanceId);
}
});
});
console.log(clearThese);
});
因此,您将在clearThese
数组中包含实例ID ,您可以将其传递给stopInstances()功能以停止VM或直接terminateInstances()终止他们。
此外,您可以使用区域数组在所有区域中运行此代码。