【问题标题】:Filtering AWS describeInstances request parameters过滤 AWS describeInstances 请求参数
【发布时间】:2019-11-07 20:49:07
【问题描述】:

我正在使用下面的 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!');
    });
};

【问题讨论】:

    标签: node.js amazon-web-services amazon-ec2 aws-sdk


    【解决方案1】:

    不,您不能向 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"},
    ]
    

    【讨论】:

      猜你喜欢
      • 2019-03-05
      • 1970-01-01
      • 2014-04-18
      • 2010-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多