code: func KubernetesVolumeIDToEBSVolumeID(kubernetesID string) (string, 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.
  	if !strings.HasPrefix(kubernetesID, "aws://") {
  		// Assume a bare aws volume id (vol-1234...)
  		return kubernetesID, nil
  	}
  	url, err := url.Parse(kubernetesID)
  	if err != nil {
  		// TODO: Maybe we should pass a URL into the Volume functions
  		return "", fmt.Errorf("Invalid disk name (%s): %v", kubernetesID, err)
  	}
  	if url.Scheme != "aws" {
  		return "", fmt.Errorf("Invalid scheme for AWS volume (%s)", kubernetesID)
  	}
  
  	awsID := url.Path
  	awsID = strings.Trim(awsID, "/")
  
  	// We sanity check the resulting volume; the two known formats are
  	// vol-12345678 and vol-12345678abcdef01
  	if !awsVolumeRegMatch.MatchString(awsID) {
  		return "", fmt.Errorf("Invalid format for AWS volume (%s)", kubernetesID)
  	}
  
  	return awsID, nil
  }
docs: // KubernetesVolumeIDToEBSVolumeID translates Kubernetes volume ID to EBS volume ID
  // KubernetsVolumeID forms:
  //  * aws://<zone>/<awsVolumeId>
  //  * aws:///<awsVolumeId>
  //  * <awsVolumeId>
  // EBS Volume ID form:
  //  * vol-<alphanumberic>
  // This translation shouldn't be needed and should be fixed in long run
  // See https://github.com/kubernetes/kubernetes/issues/73730