Skip to content

Commit

Permalink
Add secrets put
Browse files Browse the repository at this point in the history
  • Loading branch information
qbart committed Dec 27, 2021
1 parent 18f4432 commit 56bd05f
Show file tree
Hide file tree
Showing 2 changed files with 73 additions and 1 deletion.
47 changes: 46 additions & 1 deletion awscmd/secrets.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ func SecretsAll(ctx context.Context, input *InputSecretsAll) (*OutputSecretsAll,
SecretId: aws.String(input.ID),
VersionStage: aws.String("AWSCURRENT"),
}
result, err := svc.GetSecretValue(secretsInput)
result, err := svc.GetSecretValueWithContext(ctx, secretsInput)
if err != nil {
return nil, fmt.Errorf("Failed to get secret value: %w", err)
}
Expand All @@ -47,3 +47,48 @@ func SecretsAll(ctx context.Context, input *InputSecretsAll) (*OutputSecretsAll,

return &out, nil
}

type InputSecretsPut struct {
Region string
ID string
NewSecrets map[string]string
}

type OutputSecretsPut struct{}

func SecretsPut(ctx context.Context, input *InputSecretsPut) (*OutputSecretsPut, error) {
all, err := SecretsAll(ctx, &InputSecretsAll{
Region: input.Region,
ID: input.ID,
})
if err != nil {
return nil, err
}

for k, v := range input.NewSecrets {
all.Secrets[k] = v
}

secretBytes, err := json.Marshal(all.Secrets)
if err != nil {
return nil, fmt.Errorf("Failed to marshall secrets to json: %w", err)
}

sess, err := NewSession(input.Region)
if err != nil {
return nil, err
}

secretsString := string(secretBytes)
svc := secretsmanager.New(sess, aws.NewConfig().WithRegion(input.Region))
secretsInput := &secretsmanager.PutSecretValueInput{
SecretId: aws.String(input.ID),
SecretString: &secretsString,
}
_, err = svc.PutSecretValueWithContext(ctx, secretsInput)
if err != nil {
return nil, fmt.Errorf("Failed to set secrets: %w", err)
}

return &OutputSecretsPut{}, nil
}
27 changes: 27 additions & 0 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,33 @@ func main() {

shellcmd.KeyValueToExports(c.App.Writer, out.Secrets)

return nil
},
},
{
Name: "set",
Usage: "Sets key value secret",
Flags: []cli.Flag{
&cli.StringFlag{Name: "region", Usage: "AWS region", Required: true},
&cli.StringFlag{Name: "id", Usage: "Secrets ID", Required: true},
},
ArgsUsage: "KEY VALUE",
Action: func(c *cli.Context) error {
if c.NArg() != 2 {
return fmt.Errorf("Invalid number of arguments. Missing KEY and VALUE.")
}
k, v := c.Args().Get(0), c.Args().Get(1)

input := &awscmd.InputSecretsPut{
Region: c.String("region"),
ID: c.String("id"),
NewSecrets: map[string]string{k: v},
}
_, err := awscmd.SecretsPut(context.TODO(), input)
if err != nil {
return err
}

return nil
},
},
Expand Down

0 comments on commit 56bd05f

Please sign in to comment.