如何在AWS Go SDK成本查询中添加筛选器获取指定服务数据
为AWS Go SDK的Cost Explorer查询添加服务筛选器
你需要在GetCostAndUsageInput中添加Filter字段,通过指定维度(DIMENSION)为SERVICE并设置目标服务名称列表,就能只获取指定服务的成本数据。
修改后的完整代码示例
result, err := svc.GetCostAndUsage(&costexplorer.GetCostAndUsageInput{ TimePeriod: &costexplorer.DateInterval{ Start: aws.String(startDate), End: aws.String(endDate), }, Granularity: aws.String(granularity), GroupBy: []*costexplorer.GroupDefinition{ &costexplorer.GroupDefinition{ Type: aws.String("DIMENSION"), Key: aws.String("SERVICE"), }, }, // 添加筛选器部分 Filter: &costexplorer.Expression{ Dimensions: &costexplorer.DimensionValues{ Key: aws.String("SERVICE"), Values: aws.StringSlice([]string{"Amazon Simple Storage Service", "Amazon Elastic Compute Cloud"}), // 可选:如果需要排除某些服务,设置MatchOptions为"NOT_EQUAL",默认是"EQUAL" // MatchOptions: aws.StringSlice([]string{"EQUAL"}), }, }, Metrics: aws.StringSlice(metrics), })
关键说明
- 服务名称必须准确:AWS服务的名称是官方全称,比如S3对应
Amazon Simple Storage Service,EC2对应Amazon Elastic Compute Cloud。如果不确定名称,可以先执行一次不带筛选的查询,从返回结果中提取服务名称后再填入。 - MatchOptions设置:默认是
EQUAL,即只包含列表中的服务;如果需要排除指定服务,可以将MatchOptions设为NOT_EQUAL。 - 多条件组合:如果需要同时筛选其他维度(比如区域、账户),可以在
Expression中使用And字段组合多个条件表达式。
内容的提问来源于stack exchange,提问作者G2code
相关产品推荐
相关产品推荐

