Skip to content
Snippets Groups Projects
Commit afc4645d authored by Billy Griffiths's avatar Billy Griffiths
Browse files

ADHOC - reuse the secretManagerSession if a connection already exists

parent badb9ddd
Branches
Tags
1 merge request!35ADHOC - Expand secrets manager to support create and delete
...@@ -36,6 +36,8 @@ var ( ...@@ -36,6 +36,8 @@ var (
secretManagerRegion = "af-south-1" secretManagerRegion = "af-south-1"
) )
var secretManagerSession *secretsmanager.SecretsManager
func GetDatabaseCredentials(secretID string, isDebug bool) (DatabaseCredentials, error) { func GetDatabaseCredentials(secretID string, isDebug bool) (DatabaseCredentials, error) {
secret, _ := GetSecret(secretID, isDebug) secret, _ := GetSecret(secretID, isDebug)
var credentials DatabaseCredentials var credentials DatabaseCredentials
...@@ -56,11 +58,16 @@ func GetS3UploadCredentials(secretID string, isDebug bool) (*credentials2.Creden ...@@ -56,11 +58,16 @@ func GetS3UploadCredentials(secretID string, isDebug bool) (*credentials2.Creden
return credentials2.NewStaticCredentials(credentials.AccessKeyID, credentials.SecretKey, ""), nil return credentials2.NewStaticCredentials(credentials.AccessKeyID, credentials.SecretKey, ""), nil
} }
// createClient Instantiates a new Secrets Manager client // getSecretManagerSession Instantiates a new Secrets Manager client session
func createClient(isDebug bool) (svc *secretsmanager.SecretsManager, err error) { func getSecretManagerSession(isDebug bool) (err error) {
if secretManagerSession != nil {
return nil
}
logs.Info("Creating a new Secrets Manager session")
awsSession, err := session.NewSession() awsSession, err := session.NewSession()
if err != nil { if err != nil {
return svc, err return err
} }
// Get local config // Get local config
...@@ -76,14 +83,14 @@ func createClient(isDebug bool) (svc *secretsmanager.SecretsManager, err error) ...@@ -76,14 +83,14 @@ func createClient(isDebug bool) (svc *secretsmanager.SecretsManager, err error)
}, },
}) })
if err != nil { if err != nil {
return svc, err return err
} }
} }
// Create a Secrets Manager client // Create a Secrets Manager client session
svc = secretsmanager.New(awsSession, aws.NewConfig().WithRegion(secretManagerRegion)) secretManagerSession = secretsmanager.New(awsSession, aws.NewConfig().WithRegion(secretManagerRegion))
return svc, nil return nil
} }
// logError Logs any errors returned by the Secrets Manager client // logError Logs any errors returned by the Secrets Manager client
...@@ -108,7 +115,7 @@ func GetSecret(secretID string, isDebug bool) (string, string) { ...@@ -108,7 +115,7 @@ func GetSecret(secretID string, isDebug bool) (string, string) {
} }
// Create a Secrets Manager client // Create a Secrets Manager client
svc, err := createClient(isDebug) err = getSecretManagerSession(isDebug)
if err != nil { if err != nil {
logs.Info("Could not create client: %+v", err) logs.Info("Could not create client: %+v", err)
return "", "" return "", ""
...@@ -120,7 +127,7 @@ func GetSecret(secretID string, isDebug bool) (string, string) { ...@@ -120,7 +127,7 @@ func GetSecret(secretID string, isDebug bool) (string, string) {
VersionStage: aws.String("AWSCURRENT"), // VersionStage defaults to AWSCURRENT if unspecified VersionStage: aws.String("AWSCURRENT"), // VersionStage defaults to AWSCURRENT if unspecified
} }
result, err := svc.GetSecretValue(input) result, err := secretManagerSession.GetSecretValue(input)
if err != nil { if err != nil {
logError(err) logError(err)
return "", "" return "", ""
...@@ -147,7 +154,7 @@ func GetSecret(secretID string, isDebug bool) (string, string) { ...@@ -147,7 +154,7 @@ func GetSecret(secretID string, isDebug bool) (string, string) {
// CreateSecret Creates a JSON marshaled "string secret" (can be expanded to cater for binary secrets should the need arise) // CreateSecret Creates a JSON marshaled "string secret" (can be expanded to cater for binary secrets should the need arise)
func CreateSecret(secretID string, secret any, isDebug bool) (awsSecretID string, err error) { func CreateSecret(secretID string, secret any, isDebug bool) (awsSecretID string, err error) {
// Create a Secrets Manager client // Create a Secrets Manager client
svc, err := createClient(isDebug) err = getSecretManagerSession(isDebug)
if err != nil { if err != nil {
logs.Info("Could not create client: %+v", err) logs.Info("Could not create client: %+v", err)
return "", err return "", err
...@@ -164,7 +171,7 @@ func CreateSecret(secretID string, secret any, isDebug bool) (awsSecretID string ...@@ -164,7 +171,7 @@ func CreateSecret(secretID string, secret any, isDebug bool) (awsSecretID string
SecretString: aws.String(string(secretStr)), SecretString: aws.String(string(secretStr)),
} }
result, err := svc.CreateSecret(input) result, err := secretManagerSession.CreateSecret(input)
if err != nil { if err != nil {
logError(err) logError(err)
return "", err return "", err
...@@ -175,7 +182,7 @@ func CreateSecret(secretID string, secret any, isDebug bool) (awsSecretID string ...@@ -175,7 +182,7 @@ func CreateSecret(secretID string, secret any, isDebug bool) (awsSecretID string
func DeleteSecret(secretID string, forceWithoutRecovery bool, isDebug bool) error { func DeleteSecret(secretID string, forceWithoutRecovery bool, isDebug bool) error {
// Create a Secrets Manager client // Create a Secrets Manager client
svc, err := createClient(isDebug) err := getSecretManagerSession(isDebug)
if err != nil { if err != nil {
logs.Info("Could not create client: %+v", err) logs.Info("Could not create client: %+v", err)
return err return err
...@@ -187,7 +194,7 @@ func DeleteSecret(secretID string, forceWithoutRecovery bool, isDebug bool) erro ...@@ -187,7 +194,7 @@ func DeleteSecret(secretID string, forceWithoutRecovery bool, isDebug bool) erro
ForceDeleteWithoutRecovery: aws.Bool(forceWithoutRecovery), ForceDeleteWithoutRecovery: aws.Bool(forceWithoutRecovery),
} }
_, err = svc.DeleteSecret(input) _, err = secretManagerSession.DeleteSecret(input)
if err != nil { if err != nil {
logError(err) logError(err)
return err return err
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment