如何通过元数据终结点或java sdk获取FARGATE ECS任务的公共IP?

tar*_*sun 5 metadata amazon-web-services amazon-ecs aws-sdk aws-fargate

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

tar*_*sun 5

我用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();
Run Code Online (Sandbox Code Playgroud)