aws

package
v0.308.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 16, 2025 License: Apache-2.0 Imports: 30 Imported by: 17

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultEC2SDConfig = EC2SDConfig{
	Port:             80,
	RefreshInterval:  model.Duration(60 * time.Second),
	HTTPClientConfig: config.DefaultHTTPClientConfig,
}

DefaultEC2SDConfig is the default EC2 SD configuration.

View Source
var DefaultECSSDConfig = ECSSDConfig{
	Port:               80,
	RefreshInterval:    model.Duration(60 * time.Second),
	RequestConcurrency: 20,
	HTTPClientConfig:   config.DefaultHTTPClientConfig,
}

DefaultECSSDConfig is the default ECS SD configuration.

View Source
var DefaultLightsailSDConfig = LightsailSDConfig{
	Port:             80,
	RefreshInterval:  model.Duration(60 * time.Second),
	HTTPClientConfig: config.DefaultHTTPClientConfig,
}

DefaultLightsailSDConfig is the default Lightsail SD configuration.

View Source
var DefaultSDConfig = SDConfig{
	RefreshInterval:  model.Duration(60 * time.Second),
	HTTPClientConfig: config.DefaultHTTPClientConfig,
}

DefaultSDConfig is the default AWS SD configuration.

Functions

This section is empty.

Types

type EC2Discovery

type EC2Discovery struct {
	*refresh.Discovery
	// contains filtered or unexported fields
}

EC2Discovery periodically performs EC2-SD requests. It implements the Discoverer interface.

func NewEC2Discovery

func NewEC2Discovery(conf *EC2SDConfig, logger *slog.Logger, metrics discovery.DiscovererMetrics) (*EC2Discovery, error)

NewEC2Discovery returns a new EC2Discovery which periodically refreshes its targets.

type EC2Filter

type EC2Filter struct {
	Name   string   `yaml:"name"`
	Values []string `yaml:"values"`
}

EC2Filter is the configuration for filtering EC2 instances.

type EC2SDConfig

type EC2SDConfig struct {
	Endpoint        string         `yaml:"endpoint"`
	Region          string         `yaml:"region"`
	AccessKey       string         `yaml:"access_key,omitempty"`
	SecretKey       config.Secret  `yaml:"secret_key,omitempty"`
	Profile         string         `yaml:"profile,omitempty"`
	RoleARN         string         `yaml:"role_arn,omitempty"`
	RefreshInterval model.Duration `yaml:"refresh_interval,omitempty"`
	Port            int            `yaml:"port"`
	Filters         []*EC2Filter   `yaml:"filters"`

	HTTPClientConfig config.HTTPClientConfig `yaml:",inline"`
}

EC2SDConfig is the configuration for EC2 based service discovery.

func (*EC2SDConfig) Name

func (*EC2SDConfig) Name() string

Name returns the name of the EC2 Config.

func (*EC2SDConfig) NewDiscoverer

NewDiscoverer returns a Discoverer for the EC2 Config.

func (*EC2SDConfig) NewDiscovererMetrics added in v0.50.0

NewDiscovererMetrics implements discovery.Config.

func (*EC2SDConfig) UnmarshalYAML

func (c *EC2SDConfig) UnmarshalYAML(unmarshal func(any) error) error

UnmarshalYAML implements the yaml.Unmarshaler interface for the EC2 Config.

type ECSDiscovery added in v0.308.0

type ECSDiscovery struct {
	*refresh.Discovery
	// contains filtered or unexported fields
}

ECSDiscovery periodically performs ECS-SD requests. It implements the Discoverer interface.

func NewECSDiscovery added in v0.308.0

func NewECSDiscovery(conf *ECSSDConfig, logger *slog.Logger, metrics discovery.DiscovererMetrics) (*ECSDiscovery, error)

NewECSDiscovery returns a new ECSDiscovery which periodically refreshes its targets.

type ECSSDConfig added in v0.308.0

type ECSSDConfig struct {
	Region          string         `yaml:"region"`
	Endpoint        string         `yaml:"endpoint"`
	AccessKey       string         `yaml:"access_key,omitempty"`
	SecretKey       config.Secret  `yaml:"secret_key,omitempty"`
	Profile         string         `yaml:"profile,omitempty"`
	RoleARN         string         `yaml:"role_arn,omitempty"`
	Clusters        []string       `yaml:"clusters,omitempty"`
	Port            int            `yaml:"port"`
	RefreshInterval model.Duration `yaml:"refresh_interval,omitempty"`

	// RequestConcurrency controls the maximum number of concurrent ECS API requests.
	// Default is 20, which aligns with AWS ECS sustained rate limits:
	// - Cluster read actions (DescribeClusters, ListClusters): 20 req/sec sustained
	// - Service read actions (DescribeServices, ListServices): 20 req/sec sustained
	// - Cluster resource read actions (DescribeTasks, ListTasks): 20 req/sec sustained
	// See: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/request-throttling.html
	RequestConcurrency int `yaml:"request_concurrency,omitempty"`

	HTTPClientConfig config.HTTPClientConfig `yaml:",inline"`
}

ECSSDConfig is the configuration for ECS based service discovery.

func (*ECSSDConfig) Name added in v0.308.0

func (*ECSSDConfig) Name() string

Name returns the name of the ECS Config.

func (*ECSSDConfig) NewDiscoverer added in v0.308.0

NewDiscoverer returns a Discoverer for the EC2 Config.

func (*ECSSDConfig) NewDiscovererMetrics added in v0.308.0

NewDiscovererMetrics implements discovery.Config.

func (*ECSSDConfig) UnmarshalYAML added in v0.308.0

func (c *ECSSDConfig) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML implements the yaml.Unmarshaler interface for the ECS Config.

type LightsailDiscovery

type LightsailDiscovery struct {
	*refresh.Discovery
	// contains filtered or unexported fields
}

LightsailDiscovery periodically performs Lightsail-SD requests. It implements the Discoverer interface.

func NewLightsailDiscovery

func NewLightsailDiscovery(conf *LightsailSDConfig, logger *slog.Logger, metrics discovery.DiscovererMetrics) (*LightsailDiscovery, error)

NewLightsailDiscovery returns a new LightsailDiscovery which periodically refreshes its targets.

type LightsailSDConfig

type LightsailSDConfig struct {
	Endpoint        string         `yaml:"endpoint"`
	Region          string         `yaml:"region"`
	AccessKey       string         `yaml:"access_key,omitempty"`
	SecretKey       config.Secret  `yaml:"secret_key,omitempty"`
	Profile         string         `yaml:"profile,omitempty"`
	RoleARN         string         `yaml:"role_arn,omitempty"`
	RefreshInterval model.Duration `yaml:"refresh_interval,omitempty"`
	Port            int            `yaml:"port"`

	HTTPClientConfig config.HTTPClientConfig `yaml:",inline"`
}

LightsailSDConfig is the configuration for Lightsail based service discovery.

func (*LightsailSDConfig) Name

func (*LightsailSDConfig) Name() string

Name returns the name of the Lightsail Config.

func (*LightsailSDConfig) NewDiscoverer

NewDiscoverer returns a Discoverer for the Lightsail Config.

func (*LightsailSDConfig) NewDiscovererMetrics added in v0.50.0

NewDiscovererMetrics implements discovery.Config.

func (*LightsailSDConfig) UnmarshalYAML

func (c *LightsailSDConfig) UnmarshalYAML(unmarshal func(any) error) error

UnmarshalYAML implements the yaml.Unmarshaler interface for the Lightsail Config.

type Role added in v0.308.0

type Role string

Role is role of the service in AWS.

const (
	RoleEC2       Role = "ec2"
	RoleECS       Role = "ecs"
	RoleLightsail Role = "lightsail"
)

The valid options for Role.

func (Role) String added in v0.308.0

func (c Role) String() string

func (*Role) UnmarshalYAML added in v0.308.0

func (c *Role) UnmarshalYAML(unmarshal func(any) error) error

UnmarshalYAML implements the yaml.Unmarshaler interface.

type SDConfig added in v0.308.0

type SDConfig struct {
	Role             Role                    `yaml:"role"`
	Region           string                  `yaml:"region,omitempty"`
	Endpoint         string                  `yaml:"endpoint,omitempty"`
	AccessKey        string                  `yaml:"access_key,omitempty"`
	SecretKey        config.Secret           `yaml:"secret_key,omitempty"`
	Profile          string                  `yaml:"profile,omitempty"`
	RoleARN          string                  `yaml:"role_arn,omitempty"`
	RefreshInterval  model.Duration          `yaml:"refresh_interval,omitempty"`
	Port             int                     `yaml:"port,omitempty"`
	HTTPClientConfig config.HTTPClientConfig `yaml:",inline"`

	// ec2 specific
	Filters []*EC2Filter `yaml:"filters,omitempty"`

	// ecs specific
	Clusters []string `yaml:"clusters,omitempty"`

	// Embedded sub-configs (internal use only, not serialized)
	*EC2SDConfig       `yaml:"-"`
	*ECSSDConfig       `yaml:"-"`
	*LightsailSDConfig `yaml:"-"`
}

SDConfig is the configuration for AWS service discovery.

func (*SDConfig) Name added in v0.308.0

func (*SDConfig) Name() string

Name returns the name of the AWS Config.

func (*SDConfig) NewDiscoverer added in v0.308.0

func (c *SDConfig) NewDiscoverer(opts discovery.DiscovererOptions) (discovery.Discoverer, error)

NewDiscoverer returns a Discoverer for the AWS Config.

func (*SDConfig) NewDiscovererMetrics added in v0.308.0

NewDiscovererMetrics implements discovery.Config.

func (*SDConfig) UnmarshalYAML added in v0.308.0

func (c *SDConfig) UnmarshalYAML(unmarshal func(any) error) error

UnmarshalYAML implements the yaml.Unmarshaler interface for SDConfig.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL