func()

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
}