2016-07-28 6 views
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 호출을 엄청 많이와 그냥 내가 원하는 것을 얻을 복잡한 객체로 굴을 파는 많은 것 같다. 나는 이것을 얻기 위해 더 빠르고 덜 강렬한 방법을 좋아할 것입니다.

NB : 산발적으로

+1

나는이 질문이 람다와 관련이 없다고 생각합니다. Lambda는 이에 대한 추가 도구를 제공하지 않으며 일반적인 AWS SDK 솔루션을 차단해서는 안됩니다. 컨텍스트를 식별하는 데 아무런 해가 없습니다. –

+0

네 말이 맞아. 나는 그것을 철회 할 것이다. 나는 그것이 전화를하기위한 나의 출발점과 관련이있을 수 있기 때문에 단지 그것을 언급했다. – Raychaser

+1

ECS 호스트에서 특정 태그를 사용하지 않는 한 사용자가 선호하는 방법입니다. –

답변

0

나는 빨리 찾을 수 없습니다 난 내가 하나의 컨테이너와 오직 하나의 인스턴스가 알고 안 때문에 비록 여기 Instances[0]를 사용할 수 있지만, IP는 변경 될 수 있습니다 방법은 그래서 내가 가진 것과 함께 갔다.