Skip to content

Commit

Permalink
telleropsGH-134: localstack compatibility for aws providers
Browse files Browse the repository at this point in the history
  • Loading branch information
JacobJohansen committed Sep 16, 2022
1 parent 783dc56 commit 9d8736e
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 4 deletions.
20 changes: 18 additions & 2 deletions pkg/providers/aws_secretsmanager.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,11 @@ import (
"encoding/json"
"errors"
"fmt"
"os"
"sort"
"strings"

"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/config"
"github.com/aws/aws-sdk-go-v2/service/secretsmanager"
smtypes "github.com/aws/aws-sdk-go-v2/service/secretsmanager/types"
Expand Down Expand Up @@ -40,7 +42,7 @@ func init() {
metaInfo := core.MetaInfo{
Name: "aws_secretsmanager",
Description: "AWS Secrets Manager",
Authentication: "Your standard `AWS_DEFAULT_REGION`, `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` need to be populated in your environment",
Authentication: "Your standard `AWS_DEFAULT_REGION`, `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` need to be populated in your environment. `AWS_ENDPOINT` is used to allow usage of localstack",
ConfigTemplate: `
# configure only from environment
aws_secretsmanager:
Expand All @@ -57,7 +59,21 @@ func init() {
}

func NewAWSSecretsManager(logger logging.Logger) (core.Provider, error) {
cfg, err := config.LoadDefaultConfig(context.Background())
customResolver := aws.EndpointResolverFunc(func(service, region string) (aws.Endpoint, error) {
awsEndpointOverride := os.Getenv("AWS_ENDPOINT")
if awsEndpointOverride != "" {
return aws.Endpoint{
PartitionID: "aws",
URL: awsEndpointOverride,
SigningRegion: region,
}, nil
}

// returning EndpointNotFoundError will allow the service to fallback to its default resolution
return aws.Endpoint{}, &aws.EndpointNotFoundError{}
})

cfg, err := config.LoadDefaultConfig(context.Background(), config.WithEndpointResolver(customResolver))
if err != nil {
return nil, err
}
Expand Down
20 changes: 18 additions & 2 deletions pkg/providers/aws_ssm.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ package providers
import (
"context"
"fmt"
"os"

"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/config"
"github.com/aws/aws-sdk-go-v2/service/ssm"
"github.com/spectralops/teller/pkg/core"
Expand All @@ -25,7 +27,7 @@ func init() {
metaInfo := core.MetaInfo{
Description: "AWS SSM (aka paramstore)",
Name: awsssmName,
Authentication: "Your standard `AWS_DEFAULT_REGION`, `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` need to be populated in your environment",
Authentication: "Your standard `AWS_DEFAULT_REGION`, `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` need to be populated in your environment. `AWS_ENDPOINT` is used to allow usage of localstack",
ConfigTemplate: `
# configure only from environment
aws_ssm:
Expand All @@ -40,7 +42,21 @@ func init() {
}

func NewAWSSSM(logger logging.Logger) (core.Provider, error) {
cfg, err := config.LoadDefaultConfig(context.TODO())
customResolver := aws.EndpointResolverFunc(func(service, region string) (aws.Endpoint, error) {
awsEndpointOverride := os.Getenv("AWS_ENDPOINT")
if awsEndpointOverride != "" {
return aws.Endpoint{
PartitionID: "aws",
URL: awsEndpointOverride,
SigningRegion: region,
}, nil
}

// returning EndpointNotFoundError will allow the service to fallback to its default resolution
return aws.Endpoint{}, &aws.EndpointNotFoundError{}
})

cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithEndpointResolver(customResolver))
if err != nil {
return nil, err
}
Expand Down

0 comments on commit 9d8736e

Please sign in to comment.