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主機上使用特定標籤,否則您的首選方式是。 –