1
我正在使用AWS Lambda中的NodeJS,并试图获取ECS集群中特定容器的IP /主机名。 ELB对我们来说不存在问题,或者我只是使用它。获取ECS容器的IP地址
这是我想出了:
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可能会改变零星
我不认为这个问题涉及到Lambda。 Lambda不为此提供任何其他工具,并且不应阻止任何常规的AWS SDK解决方案。尽管如此,确定上下文没有任何危害。 –
你说得对。我会解开它。我只是提到它,因为它可能是作为我打电话的起点。 – Raychaser
除非您在您的ECS主机上使用特定标签,否则您的首选方式是。 –