为什么我必须输入区域名称才能获取我的 AWS 账户中的区域列表

Why do I have to enter a region name to get the region list in my AWS account

使用此代码片段,我可以在我的 AWS 账户中获取区域列表,但为什么我必须输入区域名称才能获取区域列表(在本例中为“us-east-1”)。

AWSCredentials credentials = new BasicAWSCredentials("accessKey", "secretKey");
        AWSCredentialsProvider credentialsProvider=new AWSStaticCredentialsProvider(credentials);
        AmazonEC2 ec2 = AmazonEC2ClientBuilder.standard()
                .withCredentials(credentialsProvider)
                .withRegion("us-east-1")
                .build();

        DescribeRegionsResult regions_response = ec2.describeRegions();
        for(Region region : regions_response.getRegions()) {
            System.out.println(region.getRegionName());
        }
    }

来自AWS service endpoints - AWS General Reference

Most Amazon Web Services offer a Regional endpoint that you can use to make your requests. The general syntax of a Regional endpoint is as follows.

protocol://service-code.region-code.amazonaws.com

For example, https://dynamodb.us-west-2.amazonaws.com is the endpoint for the Amazon DynamoDB service in the US West (Oregon) Region.

您的代码正在调用 Amazon EC2 服务。为此,API 调用必须发送到区域 中的 EC2 端点。 EC2 服务将响应对该端点发出的请求。

您的特定 API 调用是 请求区域列表 这一事实与其他 API 调用没有任何不同,例如停止或启动实例的请求。该请求仍必须发送到 API 端点。所有区域都将使用相同的区域列表进行响应。

所以,简单的答案是:区域标识符有助于确定将请求发送到哪里。