in util/common/metrics.go [371:408]
func BuildListEntitiesForMetricRequest(body []byte, region string) (*http.Request, error) {
cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithRegion(region))
if err != nil {
return nil, err
}
signer := v4.NewSigner()
h := sha256.New()
h.Write(body)
payloadHash := hex.EncodeToString(h.Sum(nil))
// build the request
req, err := http.NewRequest("POST", "https://monitoring."+region+".amazonaws.com/", bytes.NewReader(body))
if err != nil {
return nil, err
}
// set headers
req.Header.Set("Content-Type", "application/json")
req.Header.Set("X-Amz-Target", "com.amazonaws.cloudwatch.v2013_01_16.CloudWatchVersion20130116.ListEntitiesForMetric")
req.Header.Set("Content-Encoding", "amz-1.0")
// set creds
credentials, err := cfg.Credentials.Retrieve(context.TODO())
if err != nil {
return nil, err
}
req.Header.Set("x-amz-security-token", credentials.SessionToken)
// sign the request
err = signer.SignHTTP(context.TODO(), credentials, req, payloadHash, "monitoring", region, time.Now())
if err != nil {
return nil, err
}
return req, nil
}