@Override
  public CompletableFuture<Void> setMetadataWithResponse(BlobId blobId, Map<String, String> metadata,
      BlobRequestConditions requestConditions, Context context) {
    return getAzureStorageClient(blobId).setMetadataWithResponse(blobId, metadata, requestConditions, context);
  }
Changes a blob's metadata. The specified metadata in this method will replace existing metadata. If old values
must be preserved, they must be downloaded and included in the call to this method.
@param blobId {@link BlobId} object.
@param metadata Metadata to associate with the blob.
@param requestConditions {@link BlobRequestConditions}
@param context Additional context that is passed through the Http pipeline during the service call.
@return a {@link CompletableFuture} of type {@link Void} that will eventually complete successfully when blob
        metadata is changed or completes exceptionally if an error occurred.
ambry-cloud/src/main/java/com/github/ambry/cloud/azure/ShardedStorageClient.java