如何使用元数据端点或java sdk获取我的FARGATE ECS任务的公共IP?

时间:2018-05-07 13:16:59

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

我希望在容器启动后获取我的fargate ECS任务的公共IP。 我在收到http://169.254.170.2/v2/metadata/请求时获得了IPv4地址,但我没有获得任务公开IP。

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

有没有办法让我的fargate任务的公共IP类似于http://169.254.169.254/latest/meta-data/public-hostname(对于EC2)?

1 个答案:

答案 0 :(得分:2)

我用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();