Created
June 26, 2022 20:21
-
-
Save ethanhinson/206719cdd2b5f9de4432fa59839eca34 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package secrets | |
import ( | |
"context" | |
"github.com/aws/aws-sdk-go-v2/aws" | |
"github.com/aws/aws-sdk-go-v2/service/secretsmanager" | |
"github.com/propertybrands/btt-cloud-deployment-manager/internal/app" | |
) | |
var secretsManagerConnection *secretsmanager.Client | |
// getClient Manager access to the secrets manager client connection. | |
func getClient() *secretsmanager.Client { | |
if secretsManagerConnection != nil { | |
return secretsManagerConnection | |
} | |
secretsManagerConnection = secretsmanager.NewFromConfig(app.Env.AwsConfig) | |
return secretsManagerConnection | |
} | |
// getSecret Retrieve a secret string from a secret name. | |
func getSecret(name string) (string, error) { | |
conn := getClient() | |
result, err := conn.GetSecretValue(context.TODO(), &secretsmanager.GetSecretValueInput{ | |
SecretId: aws.String(name), | |
}) | |
if err != nil { | |
return "", err | |
} | |
return *result.SecretString, err | |
} | |
// createSecret Create a secret in AWS SecretsManager. | |
func createSecret(name string, value string) (string, error) { | |
conn := getClient() | |
result, err := conn.CreateSecret(context.TODO(), &secretsmanager.CreateSecretInput{ | |
Name: aws.String(name), | |
SecretString: aws.String(value), | |
}) | |
if err != nil { | |
return "", err | |
} | |
return *result.ARN, err | |
} | |
// setSecret Set a secret value by its name. | |
func setSecret(name string, value string) (string, error) { | |
conn := getClient() | |
result, err := conn.PutSecretValue(context.TODO(), &secretsmanager.PutSecretValueInput{ | |
SecretId: aws.String(name), | |
SecretString: aws.String(value), | |
}) | |
if err != nil { | |
return "", err | |
} | |
return *result.ARN, err | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment