8

我想在容器启动后获取我的 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)?

4

1 回答 1

4

我用 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();
于 2018-05-10T10:38:33.823 回答