【问题标题】:Get IP address of an ECS container获取ECS容器的IP地址
【发布时间】:2016-08-03 05:02:49
【问题描述】:

我正在使用 AWS Lambda 中的 NodeJS,并且我正在尝试获取我的 ECS 集群中特定容器的 IP/主机名。 ELB 对我们来说是不可能的,否则我就使用它。

这是我想出的:

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 开发工具包解决方案。不过,识别上下文并没有什么坏处。
  • 你是对的。我会取消标记它。我之所以提到它,是因为它可能与我拨打电话的起点有关。
  • 除非您在 ECS 主机上使用特定标签,否则首选您的方式。

标签: amazon-web-services aws-sdk amazon-ecs


【解决方案1】:

我找不到更快的方法,所以我只好用我现有的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-07
    • 1970-01-01
    • 1970-01-01
    • 2013-06-14
    • 2020-01-14
    • 2020-09-01
    相关资源
    最近更新 更多