如何在AWS Java SDK 2.21.1中无需硬编码获取指定国家的所有区域?
获取AWS所有区域(无需硬编码)
在AWS SDK for Java v2.21.1中,你可以直接通过Region类的内置方法获取所有支持的区域,完全不需要手动硬编码区域列表。
核心实现方法
调用Region.regions()即可获取SDK支持的所有区域对象集合,再通过Region.id()提取区域名称字符串。需要注意的是,SDK v2的区域ID采用小写短横线格式(如us-east-1),而非旧版的US_前缀风格。
示例代码
import software.amazon.awssdk.regions.Region; import java.util.List; import java.util.stream.Collectors; public class AwsRegionFetcher { public static void main(String[] args) { // 获取所有AWS区域对象 List<Region> allRegions = Region.regions(); // 提取所有区域名称字符串 List<String> allRegionIds = allRegions.stream() .map(Region::id) .collect(Collectors.toList()); // 筛选美国区域 List<String> usRegionIds = allRegions.stream() .map(Region::id) .filter(id -> id.startsWith("us-")) .collect(Collectors.toList()); // 输出示例 System.out.println("所有AWS区域:"); allRegionIds.forEach(System.out::println); System.out.println("\n美国区域:"); usRegionIds.forEach(System.out::println); } }
关键说明
Region.regions()返回的是当前SDK版本(2.21.1)内置支持的所有区域,AWS新增区域后,只需升级SDK版本就能自动同步新区域,无需修改代码。- 若需要动态获取实时最新的区域(比如SDK版本未及时更新),可以调用EC2的
DescribeRegionsAPI,但大多数场景下Region.regions()已足够满足需求。
内容的提问来源于stack exchange,提问作者heyitsvajid
相关产品推荐
相关产品推荐

