in plugin/source/secretsmanager/secretsmanager.go [60:108]
func (s *Source) DownloadToPath(dlPath string) error {
s.logger.Debugf(0, "dlPath is: %s", dlPath)
if err := os.MkdirAll(dlPath, 0755); err != nil {
return err
}
s.logger.Debugf(0, "copy directory %s is ready", dlPath)
cfg := aws.NewConfig().WithRegion(s.Region)
if s.Credentials.AccessKeyID != "" && s.Credentials.SecretAccessKey != "" {
cfg = cfg.WithCredentials(
credentials.NewStaticCredentials(s.Credentials.AccessKeyID, s.Credentials.SecretAccessKey, ""),
)
}
sess, err := session.NewSession(cfg)
if err != nil {
s.logger.Debugf(0, "failed to create AWS session: %s", err)
return err
}
svc := secretsmanager.New(sess)
input := &secretsmanager.GetSecretValueInput{
SecretId: aws.String(s.SecretId),
}
outpath := filepath.Join(dlPath, s.FileName)
result, err := svc.GetSecretValue(input)
if err != nil {
s.logger.Debugf(0, "failed to retrieve secret %s: %s", s.SecretId, err)
return err
}
// Create the output file if it doesn't exist
fh, err := os.OpenFile(outpath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0400)
if err != nil {
s.logger.Debugf(0, "failed to create target (%s): %s", outpath, err)
return err
}
defer fh.Close()
_, err = fh.WriteString(*result.SecretString)
if err != nil {
s.logger.Debugf(0, "failed to write secret data: %s", err)
return err
}
fh.Close()
s.logger.Debugf(0, "Wrote secret (%s) to: %s", s.SecretId, outpath)
return nil
}