0

使用此代码段,我可以在我的 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());
        }
    }
4

1 回答 1

1

AWS 服务端点 - AWS 一般参考

大多数 Amazon Web Services 都提供了一个区域端点,您可以使用它来发出请求。区域端点的一般语法如下。

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

例如,https ://dynamodb.us-west-2.amazonaws.com 是美国西部(俄勒冈)区域的 Amazon DynamoDB 服务的终端节点。

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

您的特定 API 调用请求区域列表这一事实与其他 API 调用(例如对 Stop 或 Start 实例的请求)没有任何不同。请求仍必须发送到 API 端点。所有区域都将使用相同的区域列表进行响应。

因此,简单的答案是:区域标识符有助于确定将请求发送到何处。

于 2020-09-07T23:47:17.610 回答