Ich arbeite von NodeJS in AWS Lambda und ich versuche, die IP/Hostname eines bestimmten Containers in meinem ECS-Cluster zu erhalten. ELB kommt für uns nicht in Frage oder ich würde es einfach benutzen.Erhalten IP-Adresse eines ECS-Containers
Das ist, was ich kam mit:
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))
Dies scheint eine Menge von API-Aufrufe und eine Menge nur in komplexe Objekte wühlen zu bekommen, was ich will. Ich würde einen schnelleren, weniger intensiven Weg lieben, dies zu erreichen.
NB: Ich kann Instances[0]
hier verwenden, obwohl ich nicht soll, weil ich weiß, gibt es nur einen Behälter und immer nur eine Instanz, aber die IP kann sporadisch
Ich glaube nicht, diese Frage bezieht sich auf Lambda. Lambda stellt hierfür keine zusätzlichen Tools zur Verfügung und sollte keine normalen AWS SDK-Lösungen blockieren. Es ist jedoch kein Schaden, den Kontext zu identifizieren. –
Sie haben Recht. Ich werde es aufdecken. Ich habe es nur erwähnt, weil es als Ausgangspunkt für den Anruf relevant sein könnte. – Raychaser
Ihr bevorzugtes Verfahren, es sei denn, Sie verwenden bestimmte Tags auf Ihren ECS-Hosts. –