code: func (name KubernetesVolumeID) mapToAWSVolumeID() (awsVolumeID, error) {
  	// name looks like aws://availability-zone/awsVolumeId
  
  	// The original idea of the URL-style name was to put the AZ into the
  	// host, so we could find the AZ immediately from the name without
  	// querying the API.  But it turns out we don't actually need it for
  	// multi-AZ clusters, as we put the AZ into the labels on the PV instead.
  	// However, if in future we want to support multi-AZ cluster
  	// volume-awareness without using PersistentVolumes, we likely will
  	// want the AZ in the host.
  
  	s := string(name)
  
  	if !strings.HasPrefix(s, "aws://") {
  		// Assume a bare aws volume id (vol-1234...)
  		// Build a URL with an empty host (AZ)
  		s = "aws://" + "" + "/" + s
  	}
  	url, err := url.Parse(s)
  	if err != nil {
  		// TODO: Maybe we should pass a URL into the Volume functions
  		return "", fmt.Errorf("Invalid disk name (%s): %v", name, err)
  	}
  	if url.Scheme != "aws" {
  		return "", fmt.Errorf("Invalid scheme for AWS volume (%s)", name)
  	}
  
  	awsID := url.Path
  	awsID = strings.Trim(awsID, "/")
  
  	// We sanity check the resulting volume; the two known formats are
  	// vol-12345678 and vol-12345678abcdef01
  	// TODO: Regex match?
  	if strings.Contains(awsID, "/") || !strings.HasPrefix(awsID, "vol-") {
  		return "", fmt.Errorf("Invalid format for AWS volume (%s)", name)
  	}
  
  	return awsVolumeID(awsID), nil
  }
docs: // mapToAWSVolumeID extracts the awsVolumeID from the KubernetesVolumeID