【问题标题】:How can I get Public IP of my FARGATE ECS task with metadata endpoint or java sdk?如何使用元数据端点或 java sdk 获取我的 FARGATE ECS 任务的公共 IP?
【发布时间】:2019-06-08 04:53:23
【问题描述】:

我想在容器启动后获取我的 Fargate ECS 任务的公共 IP。 我在请求 http://169.254.170.2/v2/metadata/ 时获得 IPv4Addresses,但我没有获得任务的公共 IP。

当我使用 RunTaskResult 的 runTask(request) 方法时,我再次没有从 RunTaskResult 获得公共 IP。

有没有办法获取我的 fargate 任务的公共 IP,例如 http://169.254.169.254/latest/meta-data/public-hostname(对于 EC2)?

【问题讨论】:

  • 你在taskdefinition中说明它需要一个公共ip吗?
  • 我设置了在运行任务时启用自动分配公共 IP。
  • 为任务分配公共 IP?是不是不安全?
  • 任务有安全组@Oleksandr_DJ

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


【解决方案1】:

我使用 DescribeNetworkInterfacesRequest 解决了我的问题。我使用 curl http://169.254.170.2/v2/metadata/ 获得了容器的私有 IP,然后运行此代码。

    AmazonEC2 ec2AsyncClient= AmazonEC2ClientBuilder.standard().withCredentials(new 
    AWSStaticCredentialsProvider(credentials)).build();

    DescribeNetworkInterfacesRequest request = new DescribeNetworkInterfacesRequest();
    request.withFilters(new Filter().withName("private-ip-address").withValues("my-container-private-Ip"));
    DescribeNetworkInterfacesResult result = ec2AsyncClient.describeNetworkInterfaces(request);
    String publicIP = result.getNetworkInterfaces().get(0).getAssociation().getPublicDnsName();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-27
    • 2020-04-30
    • 2021-10-15
    • 1970-01-01
    • 2018-12-18
    • 2019-09-07
    • 1970-01-01
    • 2020-01-16
    相关资源
    最近更新 更多