如何通过元数据终结点或java sdk获取我的FARGATE ECS任务的公共IP? [英] How can I get Public IP of my FARGATE ECS task with metadata endpoint or java sdk?

查看:116
本文介绍了如何通过元数据终结点或java sdk获取我的FARGATE ECS任务的公共IP?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I want to get public IP of my fargate ECS task after container started. I get IPv4Addresses when requested http://169.254.170.2/v2/metadata/ but I don't get public IP of task.

当我使用RunTaskResult的runTask(request)方法时,再次无法从RunTaskResult获取公共IP.

When I use runTask(request) method of RunTaskResult, again I don't get public IP from RunTaskResult.

是否有一种方法可以获取我的Fargate任务的公共IP,例如 http://169.254.169.254/latest/meta-data/public-hostname (对于EC2)?

Is there a way to get public IP of my fargate task something like http://169.254.169.254/latest/meta-data/public-hostname (for EC2)?

推荐答案

我用DescribeNetworkInterfacesRequest解决了我的问题.我用 curl

I solved my problem with DescribeNetworkInterfacesRequest.I get private IP of my container with curl http://169.254.170.2/v2/metadata/ then run this code.

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

这篇关于如何通过元数据终结点或java sdk获取我的FARGATE ECS任务的公共IP?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆