From afc4645d0aaa207256fba25f9c5fe261f693d307 Mon Sep 17 00:00:00 2001 From: BillyGriffiths <billy.griffiths@gmail.com> Date: Thu, 8 Sep 2022 16:22:11 +0200 Subject: [PATCH] ADHOC - reuse the secretManagerSession if a connection already exists --- secrets_manager/secrets_manager.go | 33 ++++++++++++++++++------------ 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/secrets_manager/secrets_manager.go b/secrets_manager/secrets_manager.go index e3926a5..04c50cc 100644 --- a/secrets_manager/secrets_manager.go +++ b/secrets_manager/secrets_manager.go @@ -36,6 +36,8 @@ var ( secretManagerRegion = "af-south-1" ) +var secretManagerSession *secretsmanager.SecretsManager + func GetDatabaseCredentials(secretID string, isDebug bool) (DatabaseCredentials, error) { secret, _ := GetSecret(secretID, isDebug) var credentials DatabaseCredentials @@ -56,11 +58,16 @@ func GetS3UploadCredentials(secretID string, isDebug bool) (*credentials2.Creden return credentials2.NewStaticCredentials(credentials.AccessKeyID, credentials.SecretKey, ""), nil } -// createClient Instantiates a new Secrets Manager client -func createClient(isDebug bool) (svc *secretsmanager.SecretsManager, err error) { +// getSecretManagerSession Instantiates a new Secrets Manager client session +func getSecretManagerSession(isDebug bool) (err error) { + if secretManagerSession != nil { + return nil + } + + logs.Info("Creating a new Secrets Manager session") awsSession, err := session.NewSession() if err != nil { - return svc, err + return err } // Get local config @@ -76,14 +83,14 @@ func createClient(isDebug bool) (svc *secretsmanager.SecretsManager, err error) }, }) if err != nil { - return svc, err + return err } } - // Create a Secrets Manager client - svc = secretsmanager.New(awsSession, aws.NewConfig().WithRegion(secretManagerRegion)) + // Create a Secrets Manager client session + secretManagerSession = secretsmanager.New(awsSession, aws.NewConfig().WithRegion(secretManagerRegion)) - return svc, nil + return nil } // logError Logs any errors returned by the Secrets Manager client @@ -108,7 +115,7 @@ func GetSecret(secretID string, isDebug bool) (string, string) { } // Create a Secrets Manager client - svc, err := createClient(isDebug) + err = getSecretManagerSession(isDebug) if err != nil { logs.Info("Could not create client: %+v", err) return "", "" @@ -120,7 +127,7 @@ func GetSecret(secretID string, isDebug bool) (string, string) { VersionStage: aws.String("AWSCURRENT"), // VersionStage defaults to AWSCURRENT if unspecified } - result, err := svc.GetSecretValue(input) + result, err := secretManagerSession.GetSecretValue(input) if err != nil { logError(err) return "", "" @@ -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) func CreateSecret(secretID string, secret any, isDebug bool) (awsSecretID string, err error) { // Create a Secrets Manager client - svc, err := createClient(isDebug) + err = getSecretManagerSession(isDebug) if err != nil { logs.Info("Could not create client: %+v", err) return "", err @@ -164,7 +171,7 @@ func CreateSecret(secretID string, secret any, isDebug bool) (awsSecretID string SecretString: aws.String(string(secretStr)), } - result, err := svc.CreateSecret(input) + result, err := secretManagerSession.CreateSecret(input) if err != nil { logError(err) return "", err @@ -175,7 +182,7 @@ func CreateSecret(secretID string, secret any, isDebug bool) (awsSecretID string func DeleteSecret(secretID string, forceWithoutRecovery bool, isDebug bool) error { // Create a Secrets Manager client - svc, err := createClient(isDebug) + err := getSecretManagerSession(isDebug) if err != nil { logs.Info("Could not create client: %+v", err) return err @@ -187,7 +194,7 @@ func DeleteSecret(secretID string, forceWithoutRecovery bool, isDebug bool) erro ForceDeleteWithoutRecovery: aws.Bool(forceWithoutRecovery), } - _, err = svc.DeleteSecret(input) + _, err = secretManagerSession.DeleteSecret(input) if err != nil { logError(err) return err -- GitLab