获取ECS容器的IP地址

时间:2016-07-28 00:00:29

标签: amazon-web-services aws-sdk amazon-ecs

我在AWS Lambda的NodeJS工作,我试图获取ECS集群中特定容器的IP /主机名。 ELB对我们来说是不可能的,或者我只是使用它。

这就是我提出的:

const AWS = require('aws-sdk');
const ecs = new AWS.ECS({region: 'us-east-1'});
const ec2 = new AWS.EC2({region: 'us-east-1'});

const CLUSTER = 'MyClusterNameHere';


function getIP() {
  return ecs.listContainerInstances({ cluster: CLUSTER }).promise()
    .then(data => ecs.describeContainerInstances({ containerInstances: data.containerInstanceArns, cluster: CLUSTER }).promise())
    .then(data => ec2.describeInstances({ InstanceIds: [ data.containerInstances[0].ec2InstanceID ] }).promise())
    .then(data => data.Reservations[0].Instances[0].PrivateDnsName);
}

getIP().then(data => console.log(data))

这似乎是一个非常多的API调用和大量挖掘复杂对象只是为了得到我想要的东西。我喜欢更快,更不强烈的方式来获得这个。

注意:我可以在这里使用Instances[0]即使我不应该因为我知道那里只有一个容器而且只有一个实例,但IP可能偶尔会改变

1 个答案:

答案 0 :(得分:0)

我无法找到更快捷的方式,所以我只是选择了我的方式。