func()

in provider/secrets_manager_provider.go [159:187]


func (p *SecretsManagerProvider) fetchSecret(ctx context.Context, descriptor *SecretDescriptor) (ver string, val *SecretValue, e error) {

	req := secretsmanager.GetSecretValueInput{SecretId: aws.String(descriptor.ObjectName)}

	// Use explicit version if specified
	if len(descriptor.ObjectVersion) != 0 {
		req.SetVersionId(descriptor.ObjectVersion)
	}

	// Use stage label if specified
	if len(descriptor.ObjectVersionLabel) != 0 {
		req.SetVersionStage(descriptor.ObjectVersionLabel)
	}

	rsp, err := p.client.GetSecretValueWithContext(ctx, &req)
	if err != nil {
		return "", nil, fmt.Errorf("Failed fetching secret %s: %s", descriptor.ObjectName, err.Error())
	}

	// Use either secret string or secret binary.
	var sValue []byte
	if rsp.SecretString != nil {
		sValue = []byte(*rsp.SecretString)
	} else {
		sValue = rsp.SecretBinary
	}

	return *rsp.VersionId, &SecretValue{Value: sValue, Descriptor: *descriptor}, nil
}