CloudWatch: Migrate to aws-sdk-go-v2 (#103106)

* Cloudwatch: Migrate to aws-sdk-go-v2 (#99643)
* CloudWatch: use PDC fix from new grafana-aws-sdk
This commit is contained in:
Nathan Vērzemnieks
2025-04-01 10:03:06 +02:00
committed by GitHub
parent 3e15459d20
commit a65cc0df93
60 changed files with 1497 additions and 1607 deletions
+19 -10
View File
@@ -11,7 +11,8 @@ import (
"strings"
"time"
"github.com/aws/aws-sdk-go/aws/endpoints"
"github.com/aws/aws-sdk-go-v2/service/cloudwatch"
"github.com/google/uuid"
"github.com/grafana/grafana-plugin-sdk-go/backend"
@@ -201,7 +202,11 @@ func (q *CloudWatchQuery) BuildDeepLink(startTime time.Time, endTime time.Time)
return "", fmt.Errorf("could not marshal link: %w", err)
}
url, err := url.Parse(fmt.Sprintf(`https://%s/cloudwatch/deeplink.js`, getEndpoint(q.Region)))
endpoint, err := getEndpoint(q.Region)
if err != nil {
return "", err
}
url, err := url.Parse(fmt.Sprintf(`https://%s/cloudwatch/deeplink.js`, endpoint))
if err != nil {
return "", fmt.Errorf("unable to parse CloudWatch console deep link")
}
@@ -503,14 +508,18 @@ func parseDimensions(dimensions dataquery.Dimensions) (map[string][]string, erro
return parsedDimensions, nil
}
func getEndpoint(region string) string {
partition, _ := endpoints.PartitionForRegion(endpoints.DefaultPartitions(), region)
url := defaultConsoleURL
if partition.ID() == endpoints.AwsUsGovPartitionID {
url = usGovConsoleURL
func getEndpoint(region string) (string, error) {
resolver := cloudwatch.NewDefaultEndpointResolver()
endpoint, err := resolver.ResolveEndpoint(region, cloudwatch.EndpointResolverOptions{})
if err != nil {
return "", fmt.Errorf("resolve endpoint failed: %w", err)
}
if partition.ID() == endpoints.AwsCnPartitionID {
url = chinaConsoleURL
consoleURL := defaultConsoleURL
switch endpoint.PartitionID {
case "aws-us-gov":
consoleURL = usGovConsoleURL
case "aws-cn":
consoleURL = chinaConsoleURL
}
return fmt.Sprintf("%s.%s", region, url)
return fmt.Sprintf("%s.%s", region, consoleURL), nil
}