Фильтрация параметров запроса AWS descriptionInstances - PullRequest
0 голосов
/ 26 июня 2019

Я использую приведенный ниже код node.js для перечисления своих экземпляров AWS.Тем не менее, он возвращает много данных, которые меня не интересуют. Я хотел бы получить только dns-name и ip-address.Я могу, конечно, отфильтровать их потом, но возможно ли ограничить поиск только этими 2 полями?

var AWS = require('aws-sdk');

exports.handler = function (event, context) {
    console.log("\n\nLoading handler\n\n");
    var ec2 = new AWS.EC2();
    ec2.describeInstances(function (err, data) {
        console.log("\nIn describe instances:\n");
        if (err) console.log(err, err.stack); // an error occurred
        else console.log("\n\n" + JSON.stringify(data) + "\n\n"); // successful response

        context.done(null, 'Function Finished!');
    });
};

1 Ответ

1 голос
/ 26 июня 2019

Нет, вы не можете отправить пользовательский запрос в EC2, который заставит его возвращать только те атрибуты, которые вас интересуют (IP-адрес и общедоступный DNS).

Вам придется отфильтровывать нежелательные атрибуты из результатов, возможно, используя деструктуризацию объекта, или map (), или lodash. Может быть, что-то вроде этого:

const _ = require('lodash');

const rc = _.flatten(data.Reservations.map((r) => {
    return r.Instances.map((i) => {
      return _.pick(i, ['PublicDnsName', 'PublicIpAddress']);
    });
}));

Это даст что-то вроде:

[
    {"PublicDnsName":"ec2-52-1-1-1.compute-1.amazonaws.com","PublicIpAddress":"52.1.1.1"},
    {"PublicDnsName":"ec2-52-2-2-2.compute-1.amazonaws.com","PublicIpAddress":"52.2.2.2"},
    {"PublicDnsName":"ec2-52-3-3-3.compute-1.amazonaws.com","PublicIpAddress":"52.3.3.3"},
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...