2016-07-28 35 views
1

私はAWS LambdaのNodeJSから作業しています。私はECSクラスタ内の特定のコンテナのIP /ホスト名を取得しようとしています。 ELBは私たちのために問題になっていないか、ただ使っています。これは、API呼び出しの非常に多く、ちょうど私が欲しいものを得るために、複雑なオブジェクトに穴を掘るたくさんのように思える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)) 

これは私が思いついたものです。私はこれを得るより速く、より強烈な方法が大好きです。

NB:散発的に

+1

私はこの質問がラムダに関係するとは思わない。 Lambdaはこれに追加のツールを提供しておらず、通常のAWS SDKソリューションをブロックしてはいけません。しかし、文脈を特定することに害はない。 –

+0

あなたはそうです。私はそれをタグを解除します。私はそれがコールをするための私の出発点として適切かもしれないので、それだけを言及した。 – Raychaser

+1

あなたのECSホストで特定のタグを使用しない限り、Yoursが優先されます。 –

答えて

0

私はより速く見つけることができませんでした私は私が唯一のコンテナとしかつのインスタンスがあります知っているべきではありませんので、にもかかわらず、ここInstances[0]を使用することができますが、IPが変更されることがあり私は自分が持っているものと一緒に行きました。

関連する問題