diff --git a/secrets_manager/secrets_manager.go b/secrets_manager/secrets_manager.go
index e3926a53ccf40072765068c6c1701a9e15b9fd66..04c50cca103081aa493f1f46699ef26cc28ad522 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