我在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可能偶尔会改变
答案 0 :(得分:0)
我无法找到更快捷的方式,所以我只是选择了我的方式。