From 9ea3f0c0d354a752dd0af35d773a47f7960e19ce Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Mon, 9 May 2022 15:33:19 +0300 Subject: [PATCH] lib/awsapi: remove whitelist arg from GetFiltersQueryString(), since it may break new filters in the future Let users decide which filters to use. If users start using disallowed filters, then AWS will return an error. --- lib/awsapi/config.go | 7 +------ lib/promscrape/discovery/ec2/az.go | 16 +--------------- lib/promscrape/discovery/ec2/instance.go | 2 +- 3 files changed, 3 insertions(+), 22 deletions(-) diff --git a/lib/awsapi/config.go b/lib/awsapi/config.go index 522c582da5..eb6dd5f225 100644 --- a/lib/awsapi/config.go +++ b/lib/awsapi/config.go @@ -427,15 +427,10 @@ func buildAPIEndpoint(customEndpoint, region, service string) string { } // GetFiltersQueryString returns query string formed from the given filters. -// -// If whitelist isn't nil, then filters which don't fall into whitelist isn't returned. -func GetFiltersQueryString(filters []Filter, whitelist map[string]bool) string { +func GetFiltersQueryString(filters []Filter) string { // See how to build filters query string at examples at https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html var args []string for i, f := range filters { - if whitelist != nil && !whitelist[f.Name] { - continue - } args = append(args, fmt.Sprintf("Filter.%d.Name=%s", i+1, url.QueryEscape(f.Name))) for j, v := range f.Values { args = append(args, fmt.Sprintf("Filter.%d.Value.%d=%s", i+1, j+1, url.QueryEscape(v))) diff --git a/lib/promscrape/discovery/ec2/az.go b/lib/promscrape/discovery/ec2/az.go index 42ce2fd847..e6ffb00e13 100644 --- a/lib/promscrape/discovery/ec2/az.go +++ b/lib/promscrape/discovery/ec2/az.go @@ -30,7 +30,7 @@ func getAZMap(cfg *apiConfig) map[string]string { func getAvailabilityZones(cfg *apiConfig) ([]AvailabilityZone, error) { // See https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeAvailabilityZones.html - azFilters := awsapi.GetFiltersQueryString(cfg.azFilters, azFiltersWhitelist) + azFilters := awsapi.GetFiltersQueryString(cfg.azFilters) data, err := cfg.awsConfig.GetEC2APIResponse("DescribeAvailabilityZones", azFilters, "") if err != nil { return nil, fmt.Errorf("cannot obtain availability zones: %w", err) @@ -42,20 +42,6 @@ func getAvailabilityZones(cfg *apiConfig) ([]AvailabilityZone, error) { return azr.AvailabilityZoneInfo.Items, nil } -// See https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeAvailabilityZones.html -var azFiltersWhitelist = map[string]bool{ - "group-name": true, - "message": true, - "opt-in-status": true, - "parent-zoneID": true, - "parent-zoneName": true, - "region-name": true, - "state": true, - "zone-id": true, - "zone-type": true, - "zone-name": true, -} - // AvailabilityZonesResponse represents the response for https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeAvailabilityZones.html type AvailabilityZonesResponse struct { AvailabilityZoneInfo AvailabilityZoneInfo `xml:"availabilityZoneInfo"` diff --git a/lib/promscrape/discovery/ec2/instance.go b/lib/promscrape/discovery/ec2/instance.go index b7a219f0ba..c111aaf306 100644 --- a/lib/promscrape/discovery/ec2/instance.go +++ b/lib/promscrape/discovery/ec2/instance.go @@ -29,7 +29,7 @@ func getReservations(cfg *apiConfig) ([]Reservation, error) { // See https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html var rs []Reservation pageToken := "" - instanceFilters := awsapi.GetFiltersQueryString(cfg.instanceFilters, nil) + instanceFilters := awsapi.GetFiltersQueryString(cfg.instanceFilters) for { data, err := cfg.awsConfig.GetEC2APIResponse("DescribeInstances", instanceFilters, pageToken) if err != nil {