protected Map<String, String> cloudBlobMetadatatoMap(CloudBlobMetadata cloudBlobMetadata) {
    Map<String, String> metadata = cloudBlobMetadata.toMap();
    if (!metadata.containsKey(CloudBlobMetadata.FIELD_LIFE_VERSION)) {
      /*
          Add the life-version explicitly, even if it is 0.
          Make it easier to determine what is the life-version of a blob instead of interpreting its
          absence as 0 and confusing the reader.
       */
      metadata.put(CloudBlobMetadata.FIELD_LIFE_VERSION, "0");
    }
    // If permanent blob, then just remove the expiry = -1
    if (metadata.containsKey(CloudBlobMetadata.FIELD_EXPIRATION_TIME) &&
        metadata.get(CloudBlobMetadata.FIELD_EXPIRATION_TIME).equals(String.valueOf(Utils.Infinite_Time))) {
      metadata.remove(CloudBlobMetadata.FIELD_EXPIRATION_TIME);
    }
    metadata.remove(CloudBlobMetadata.FIELD_UPLOAD_TIME); // unused field
    return metadata;
  }
Creates an object that stores blobs in Azure blob storage
@param partitionId Partition ID
@return {@link BlobContainerClient}
ambry-cloud/src/main/java/com/github/ambry/cloud/azure/AzureCloudDestinationSync.java