2

我正在使用AWS Javascript SDK通过 AWS API 查询我的云基础设施。

我可以通过在过滤器中指定 key=value 对的标签来查询资源,例如“Environment=Production”。我找不到的是如何查询空值标签或不存在的标签。例如,我想查询所有没有定义特定标签的 EC2 实例,比方说,所有没有“环境”标签的 EC2 实例。

SDK可以做到吗?

4

2 回答 2

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);
});

因此,您将在数组中拥有实例 ID ,您可以将其传递给stopInstances()函数以停止 VM,或通过terminateInstances()直接终止它们。clearThese

此外,您可以使用区域数组在所有区域中运行此代码。

于 2018-02-21T13:45:03.830 回答
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}`);
});
于 2018-02-09T22:00:40.123 回答