@Override
  public CloudBlobMetadata getCloudBlobMetadata(BlobId blobId) throws CloudStorageException {
    AzureBlobLayoutStrategy.BlobLayout blobLayout = this.azureBlobLayoutStrategy.getDataBlobLayout(blobId);
    try {
      AzureBlobProperties azureBlobProperties = getAzureBlobPropertiesCached(blobLayout);
      if (azureBlobProperties.getProperties() == null) {
        throw new CloudStorageException(String.format("Failed to find blob properties for %s due to %s",
            blobLayout.blobFilePath, azureBlobProperties.getAzureStatus()));
      }
      return CloudBlobMetadata.fromMap(azureBlobProperties.getProperties().getMetadata());
    } catch (CloudStorageException cse) {
      throw cse;
    } catch (Throwable t) {
      throw new CloudStorageException(t.getMessage());
    }
  }
Get azure-blob-properties and wraps it in ambry cloud-blob-metadata object.
@param blobId
@return
@throws CloudStorageException
ambry-cloud/src/main/java/com/github/ambry/cloud/azure/AzureCloudDestinationSync.java