【问题标题】:describeLoadBalancers does not show classic load balancersdescribeLoadBalancers 不显示经典负载均衡器
【发布时间】:2017-08-17 02:14:14
【问题描述】:

我正在尝试使用 AWS Java API 获取负载均衡器列表。

    AmazonElasticLoadBalancing elbClient = AmazonElasticLoadBalancingClient
            .builder()
            .withCredentials(new DefaultAWSCredentialsProviderChain())
            .withRegion(Regions.EU_WEST_1)
            .build();
    DescribeLoadBalancersResult result = elbClient.describeLoadBalancers(
            new DescribeLoadBalancersRequest());
    for (LoadBalancer lb : result.getLoadBalancers()) {
        System.out.println(lb.getLoadBalancerName());
    }

调用有效,但仅列出了新的应用程序负载平衡器。我没有看到任何经典的负载均衡器。我的凭据不受限制。

如何处理经典负载均衡器?

【问题讨论】:

    标签: java amazon-web-services amazon-ec2


    【解决方案1】:

    似乎有两个用于 Elastic Load Balancing 的 API。 AmazonElasticLoadBalancingClient 的 javadoc 提供了一个提示:

    本参考涵盖了 2015-12-01 API,它支持 Application Load Balancer。 2012-06-01 API 支持 Classic Load Balancer。

    对于下面的代码,注释掉的代码不会打印出经典的负载均衡器,但未注释掉的代码会:

    /*
    import com.amazonaws.services.elasticloadbalancingv2.AmazonElasticLoadBalancing;
    import com.amazonaws.services.elasticloadbalancingv2.AmazonElasticLoadBalancingClientBuilder;
    import com.amazonaws.services.elasticloadbalancingv2.model.DescribeLoadBalancersRequest;
    import com.amazonaws.services.elasticloadbalancingv2.model.DescribeLoadBalancersResult;
    */
    import com.amazonaws.services.elasticloadbalancing.AmazonElasticLoadBalancing;
    import com.amazonaws.services.elasticloadbalancing.AmazonElasticLoadBalancingClientBuilder;
    import com.amazonaws.services.elasticloadbalancing.model.DescribeLoadBalancersRequest;
    import com.amazonaws.services.elasticloadbalancing.model.DescribeLoadBalancersResult;
    import org.junit.Test;
    
    public class AwsTestIT
    {
        /*
        @Test
        public void testGetLoadBalancers()
        {
            AmazonElasticLoadBalancing amazonElasticLoadBalancingClient = AmazonElasticLoadBalancingClientBuilder
                .defaultClient();
            DescribeLoadBalancersResult result =
                amazonElasticLoadBalancingClient.describeLoadBalancers(new DescribeLoadBalancersRequest());
            result.getLoadBalancers().stream().forEach(loadBalancer -> System.out
                .println("loadBalancer = " + loadBalancer));
        }
        */
    
        @Test
        public void testGetLoadBalancers()
        {
            AmazonElasticLoadBalancing amazonElasticLoadBalancingClient = AmazonElasticLoadBalancingClientBuilder
                .defaultClient();
            DescribeLoadBalancersResult result =
                amazonElasticLoadBalancingClient.describeLoadBalancers(new DescribeLoadBalancersRequest());
            result.getLoadBalancerDescriptions().stream().forEach(loadBalancer -> System.out
                .println("loadBalancer = " + loadBalancer));
        }
    }
    

    【讨论】:

    【解决方案2】:

    有 2 个单独的 API:一个用于经典 ELB,一个用于 ALB。

    您使用的可能是“v2”API,并且只会返回 ALB。

    您需要使用“v1”API 来检索经典 ELB。

    例如AWS CLI中,有aws elbaws elbv2

    【讨论】:

      猜你喜欢
      • 2019-04-21
      • 1970-01-01
      • 2017-07-28
      • 2018-06-08
      • 1970-01-01
      • 2021-12-07
      • 2020-10-11
      • 2022-08-10
      • 2018-08-13
      相关资源
      最近更新 更多