mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-12-11 14:53:49 +00:00
3a8b4fab97
This adds the ability to utilize sigv4 signing for all AWS services not just "aps". When the newly introduced property "service" is not set it will default to "aps". Signed-off-by: Boris Petersen <boris.petersen@idealo.de>
47 lines
1.1 KiB
Go
47 lines
1.1 KiB
Go
package ec2
|
|
|
|
import (
|
|
"sync"
|
|
|
|
"github.com/VictoriaMetrics/VictoriaMetrics/lib/awsapi"
|
|
"github.com/VictoriaMetrics/VictoriaMetrics/lib/promscrape/discoveryutils"
|
|
)
|
|
|
|
type apiConfig struct {
|
|
awsConfig *awsapi.Config
|
|
instanceFilters []awsapi.Filter
|
|
azFilters []awsapi.Filter
|
|
port int
|
|
|
|
// A map from AZ name to AZ id.
|
|
azMap map[string]string
|
|
azMapLock sync.Mutex
|
|
}
|
|
|
|
var configMap = discoveryutils.NewConfigMap()
|
|
|
|
func getAPIConfig(sdc *SDConfig) (*apiConfig, error) {
|
|
v, err := configMap.Get(sdc, func() (interface{}, error) { return newAPIConfig(sdc) })
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return v.(*apiConfig), nil
|
|
}
|
|
|
|
func newAPIConfig(sdc *SDConfig) (*apiConfig, error) {
|
|
port := 80
|
|
if sdc.Port != nil {
|
|
port = *sdc.Port
|
|
}
|
|
awsCfg, err := awsapi.NewConfig(sdc.Region, sdc.RoleARN, sdc.AccessKey, sdc.SecretKey.String(), "ec2")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
cfg := &apiConfig{
|
|
awsConfig: awsCfg,
|
|
instanceFilters: sdc.InstanceFilters,
|
|
azFilters: sdc.AZFilters,
|
|
port: port,
|
|
}
|
|
return cfg, nil
|
|
}
|