当我看到enum Regions
(amazonaws / regions / Regions.class)时,我找到了DEFAULT_REGION = US_WEST_2
。
在网址https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-credentials.html上,我发现If you don't select a region, then us-east-1 will be used by default.
当我使用new AmazonS3Client()
创建AmazonS3客户端时,它会将us-east-1
作为默认区域。
所以,我的问题是: 1.)这些默认区域对于不同的服务是否不同?目前,我只对AmazonS3Client / AmazonS3ClientBuilder感兴趣。
2。)这些有什么意义吗?对us-east-1
更多...感兴趣?
答案 0 :(得分:1)
默认构造函数具有固定端点,(至少对于我使用的服务)位于us-east-1
。您可以通过调用setRegion()
或setEndpoint()
方法更改为其他区域。
但是,自1.11.11版以来,不推荐使用默认构造函数。您现在应该使用客户端构建器(例如AmazonS3ClientBuilder),它将查找已配置的区域。除非您有充分理由不这样做,否则请致电AmazonS3ClientBuilder.defaultClient()
。
答案 1 :(得分:0)
这些有很大的意义。
对于大多数服务,AWS区域都是独立的。
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html
给定区域中的服务与不同区域中的相同服务隔离,以实现操作弹性。如果你在遥远的地区创建一个桶或一个SQS队列或一个SNS主题或一个Lambda函数,物理定律会影响你的表现 - 在全球范围内,光的速度变得非常缓慢到一定程度很多人似乎都低估了。如果您的存储桶,队列,主题等位于(例如)us-west-2中,则无法通过eu-west-2端点访问它。您可以从eu-west-2区域内访问它,但您的请求及其响应必须遍历海洋。
使用您和用户附近的区域。不要采取默认值。他们只是出于历史原因,后见之明表明他们可能不是一个好主意。您可能会发现默认区域恰好是您理想的区域选择,在这种情况下明确使用该区域。
us-east-1地区是原始的,最古老的,也是最大的地区。那些没有主动选择某个地区的客户已经被巧妙地鼓励在很长一段时间内通过一些默认设置使用us-west-2,大概是因为总体上存在更多的剩余容量(但这是猜测)。在某些情况下,us-east-1默认值可能仍然存在,但趋势似乎是要删除默认值并需要选择,这可能是它应该始终如此。