如何同时从AWS Cost Explorer获取EC2与RDS的预留实例利用率?
解决AWS Cost Explorer同时获取EC2和RDS预留实例利用率的问题
你遇到的报错原因是:不能对同一个维度(SERVICE)重复设置过滤条件,AWS Cost Explorer的API不允许这种写法。正确的方式是在同一个DimensionValues的Values列表中同时传入EC2和RDS的服务标识,而非用两个Expression通过AND拼接。
修正后的请求代码
final GetReservationUtilizationRequest request = new GetReservationUtilizationRequest() .withFilter(new Expression() .withDimensions(new DimensionValues() .withKey("SERVICE") .withValues( "Amazon Elastic Compute Cloud - Compute", "Amazon Relational Database Service"))) .withGroupBy(Collections.singletonList( new GroupDefinition() .withType("DIMENSION") .withKey("SUBSCRIPTION_ID"))) .withTimePeriod(new DateInterval() .withStart(Objects.requireNonNull(startDate).format(ISO_LOCAL_DATE)) .withEnd(Objects.requireNonNull(endDate).format(ISO_LOCAL_DATE)));
代码说明
- 将原本两个独立的SERVICE维度过滤条件合并为一个,在
withValues中直接传入两个服务名称,实现同时查询EC2和RDS的预留实例利用率。 - 保留原有的分组(SUBSCRIPTION_ID)和时间区间设置,确保查询逻辑符合需求。
原错误信息(中文翻译)
以下维度被重复过滤:Service(服务:AWSCostExplorer;状态码:400;错误代码:ValidationException;请求ID:76e77a0b-ba13-44a1-a8f5-161146b9f8b0;代理:null)
内容的提问来源于stack exchange,提问作者Sanyukta Agrawal
相关产品推荐
相关产品推荐

