Amazon web services 列出所有帐户中的所有AWS ECS(EC2容器)服务器

Amazon web services 列出所有帐户中的所有AWS ECS(EC2容器)服务器,amazon-web-services,amazon-ec2,aws-lambda,amazon-ecs,Amazon Web Services,Amazon Ec2,Aws Lambda,Amazon Ecs,是否有任何方法可以获取单个AWS订阅中多个帐户中运行/停止的所有ECS服务器的列表。 我可以蜷缩到localhost中获取元数据 curl http://localhost:51678/v1/metadata 但我必须为每台服务器运行它,以获取信息。 然后列出响应容器服务的服务器 有没有更好的办法?任何lambda函数或任何东西 感谢您的帮助 谢谢。您尝试过命令行界面吗 大意是: aws ec2 describe-instances --query "Reservations[*].Insta

是否有任何方法可以获取单个AWS订阅中多个帐户中运行/停止的所有ECS服务器的列表。 我可以蜷缩到localhost中获取元数据

curl http://localhost:51678/v1/metadata
但我必须为每台服务器运行它,以获取信息。 然后列出响应容器服务的服务器

有没有更好的办法?任何lambda函数或任何东西

感谢您的帮助


谢谢。

您尝试过命令行界面吗

大意是:

aws ec2 describe-instances --query "Reservations[*].Instances[*].{ID:InstanceId,AZ:Placement.AvailabilityZone,Name:State.Name}"

如果需要,可以实现Lambda函数来实现这一点

这将类似于(如果您选择nodejs):


有关更多详细信息,请查看

谢谢,如果我想将结果发送给SES(完整列表),如何修改此lambda函数??再次感谢。答案已更新。为了将结果发送到sns主题,您只需要添加一个发布结果的方法。
const AWS      = require('aws-sdk');
const bluebird = require('bluebird');

const EC2_TOPIC_ARN   = process.env.EC2_TOPIC_ARN;
const DEFAULT_FILTERS = {};

AWS.config.setPromisesDependency(bluebird);

var ec2 = new AWS.EC2();
var sns = new AWS.SNS();

/**
* Describes EC2 instances
* 
* @param {Object} filters 
*/
var getEC2Instances = (filters) => {
   var params = {
       DryRun : false,
       Filters: [filters]
   };

   return ec2.describeInstances(params).promise();
}

/**
* Publishes a message to the sns topic
* 
* @param {Object} message
*/
var broadcast = (message) => {
    var params = {
        TargetArn: EC2_TOPIC_ARN,
        Message  : JSON.stringify(message),
        Subject  : 'EC2 Describe Event'
    };

    return sns.publish(params).promise();
}

exports.handler = (event, context, callback) => {
   var body    = JSON.parse(event.body);
   var filters = body.filters || DEFAULT_FILTERS;

   getEC2Instances(filters)
       .then(
           (result) => {
               console.log(result);

               broadcast(result)
                   .then((status) => console.log(status))
                   .catch((error) => console.error(error));

               callback(null, { statusCode: 200, body: JSON.stringify(result) });
           }
       ).catch(
           (error) => {
               console.error(error);
               callback(null, { statusCode: 500, body: JSON.stringify({message: 'Ops'}) });                
           }
      );
}