diff --git a/secrets/providers/aws_secrets_manager.go b/secrets/providers/aws_secrets_manager.go index 90335b07bc..0d60bbb500 100644 --- a/secrets/providers/aws_secrets_manager.go +++ b/secrets/providers/aws_secrets_manager.go @@ -145,6 +145,10 @@ func (a *AWSSecretsManagerProvider) Register(secret secrets.GenericSecret) secre a.mtx.Lock() defer a.mtx.Unlock() if f, OK := a.fetchers[s.SecretARN]; OK { + if s.RefreshInterval <= 0 { + a.logger.Info("setting default refresh interval for", "ARN", s.SecretARN) + s.RefreshInterval = time.Minute * 5 + } a.logger.Info("found an existing secret fetcher", "ARN", s.SecretARN) f.update(s.RefreshInterval) a.newFetchers[s.SecretARN] = struct{}{} diff --git a/secrets/providers/aws_secrets_manager_test.go b/secrets/providers/aws_secrets_manager_test.go index 7e5289a952..8730c2094c 100644 --- a/secrets/providers/aws_secrets_manager_test.go +++ b/secrets/providers/aws_secrets_manager_test.go @@ -428,6 +428,37 @@ func TestRegisterSecret(t *testing.T) { provider.Stop() } +func TestRegisterMultipleSecretsNoRefreshInterval(t *testing.T) { + reg := prometheus.NewPedanticRegistry() + ctx, cancel := context.WithCancel(context.Background()) + options := secrets.SecretProviderOptions{ + Logger: promslog.NewNopLogger(), + Registerer: reg, + Context: ctx, + } + provider := NewAWSSecretsManagerProvider(options) + secretOne := secrets.GenericSecret{ + AWSSecretsManagerConfig: secrets.AWSSecretsManagerConfig{ + SecretARN: "arn:aws:secretsmanager:us-west-2:123456789:secret:receiver-pager-duty", + SecretKey: "key1", + }, + } + secretOneCopy := secrets.GenericSecret{ + AWSSecretsManagerConfig: secrets.AWSSecretsManagerConfig{ + SecretARN: "arn:aws:secretsmanager:us-west-2:123456789:secret:receiver-pager-duty", + SecretKey: "key2", + }, + } + provider.Register(secretOne) + require.Equal(t, 1, provider.fetchersCount()) + + provider.Register(secretOneCopy) + require.Equal(t, 1, provider.fetchersCount()) + + cancel() + provider.Stop() +} + type MockSecretsManagerClient struct { secretsmanager.Client secrets map[string]string