public final class BlobServiceClient extends Object
BlobServiceClientBuilder
. This class does
not hold any state about a particular storage account but is instead a convenient way of sending off appropriate
requests to the resource on the service. It may also be used to construct URLs to blobs and containers.
This client contains operations on a blob. Operations on a container are available on BlobContainerClient
through BlobServiceClient.getBlobContainerClient(String)
, and operations on a blob are available on BlobClient
.
Please see here for more information on containers.
Modifier and Type | Method and Description |
---|---|
BlobContainerClient |
createBlobContainer(String containerName)
Creates a new container within a storage account.
|
com.azure.core.http.rest.Response<BlobContainerClient> |
createBlobContainerWithResponse(String containerName,
Map<String,String> metadata,
PublicAccessType accessType,
com.azure.core.util.Context context)
Creates a new container within a storage account.
|
void |
deleteBlobContainer(String containerName)
Deletes the specified container in the storage account.
|
com.azure.core.http.rest.Response<Void> |
deleteBlobContainerWithResponse(String containerName,
com.azure.core.util.Context context)
Deletes the specified container in the storage account.
|
com.azure.core.http.rest.PagedIterable<TaggedBlobItem> |
findBlobsByTags(FindBlobsOptions options,
Duration timeout,
com.azure.core.util.Context context)
Returns a lazy loaded list of blobs in this account whose tags match the query expression.
|
com.azure.core.http.rest.PagedIterable<TaggedBlobItem> |
findBlobsByTags(String query)
Returns a lazy loaded list of blobs in this account whose tags match the query expression.
|
String |
generateAccountSas(AccountSasSignatureValues accountSasSignatureValues)
Generates an account SAS for the Azure Storage account using the specified
AccountSasSignatureValues . |
StorageAccountInfo |
getAccountInfo()
Returns the sku name and account kind for the account.
|
com.azure.core.http.rest.Response<StorageAccountInfo> |
getAccountInfoWithResponse(Duration timeout,
com.azure.core.util.Context context)
Returns the sku name and account kind for the account.
|
String |
getAccountName()
Get associated account name.
|
String |
getAccountUrl()
Gets the URL of the storage account represented by this client.
|
BlobContainerClient |
getBlobContainerClient(String containerName)
Initializes a
BlobContainerClient object pointing to the specified container. |
com.azure.core.http.HttpPipeline |
getHttpPipeline()
Gets the
HttpPipeline powering this client. |
BlobServiceProperties |
getProperties()
Gets the properties of a storage account’s Blob service.
|
com.azure.core.http.rest.Response<BlobServiceProperties> |
getPropertiesWithResponse(Duration timeout,
com.azure.core.util.Context context)
Gets the properties of a storage account’s Blob service.
|
BlobServiceVersion |
getServiceVersion()
Gets the service version the client is using.
|
BlobServiceStatistics |
getStatistics()
Retrieves statistics related to replication for the Blob service.
|
com.azure.core.http.rest.Response<BlobServiceStatistics> |
getStatisticsWithResponse(Duration timeout,
com.azure.core.util.Context context)
Retrieves statistics related to replication for the Blob service.
|
UserDelegationKey |
getUserDelegationKey(OffsetDateTime start,
OffsetDateTime expiry)
Gets a user delegation key for use with this account's blob storage.
|
com.azure.core.http.rest.Response<UserDelegationKey> |
getUserDelegationKeyWithResponse(OffsetDateTime start,
OffsetDateTime expiry,
Duration timeout,
com.azure.core.util.Context context)
Gets a user delegation key for use with this account's blob storage.
|
com.azure.core.http.rest.PagedIterable<BlobContainerItem> |
listBlobContainers()
Returns a lazy loaded list of containers in this account.
|
com.azure.core.http.rest.PagedIterable<BlobContainerItem> |
listBlobContainers(ListBlobContainersOptions options,
Duration timeout)
Returns a lazy loaded list of containers in this account.
|
void |
setProperties(BlobServiceProperties properties)
Sets properties for a storage account's Blob service endpoint.
|
com.azure.core.http.rest.Response<Void> |
setPropertiesWithResponse(BlobServiceProperties properties,
Duration timeout,
com.azure.core.util.Context context)
Sets properties for a storage account's Blob service endpoint.
|
BlobContainerClient |
undeleteBlobContainer(String deletedContainerName,
String deletedContainerVersion)
Restores a previously deleted container.
|
com.azure.core.http.rest.Response<BlobContainerClient> |
undeleteBlobContainerWithResponse(UndeleteBlobContainerOptions options,
Duration timeout,
com.azure.core.util.Context context)
Restores a previously deleted container.
|
public BlobContainerClient getBlobContainerClient(String containerName)
BlobContainerClient
object pointing to the specified container. This method does not create
a container. It simply constructs the URL to the container and offers access to methods relevant to containers.
Code Samples
BlobContainerClient blobContainerClient = client.getBlobContainerClient("containerName");
containerName
- The name of the container to point to.BlobContainerClient
object pointing to the specified containerpublic com.azure.core.http.HttpPipeline getHttpPipeline()
HttpPipeline
powering this client.public BlobServiceVersion getServiceVersion()
public BlobContainerClient createBlobContainer(String containerName)
Code Samples
BlobContainerClient blobContainerClient = client.createBlobContainer("containerName");
containerName
- Name of the container to createBlobContainerClient
used to interact with the container created.public com.azure.core.http.rest.Response<BlobContainerClient> createBlobContainerWithResponse(String containerName, Map<String,String> metadata, PublicAccessType accessType, com.azure.core.util.Context context)
Code Samples
Map<String, String> metadata = Collections.singletonMap("metadata", "value"); Context context = new Context("Key", "Value"); BlobContainerClient blobContainerClient = client.createBlobContainerWithResponse( "containerName", metadata, PublicAccessType.CONTAINER, context).getValue();
containerName
- Name of the container to createmetadata
- Metadata to associate with the container.accessType
- Specifies how the data in this container is available to the public. See the
x-ms-blob-public-access header in the Azure Docs for more information. Pass null for no public access.context
- Additional context that is passed through the Http pipeline during the service call.Response
whose value
contains the BlobContainerClient
used
to interact with the container created.public void deleteBlobContainer(String containerName)
Code Samples
try { client.deleteBlobContainer("container Name"); System.out.printf("Delete container completed with status %n"); } catch (UnsupportedOperationException error) { System.out.printf("Delete container failed: %s%n", error); }
containerName
- Name of the container to deletepublic com.azure.core.http.rest.Response<Void> deleteBlobContainerWithResponse(String containerName, com.azure.core.util.Context context)
containerName
- Name of the container to deletecontext
- Additional context that is passed through the Http pipeline during the service call.public String getAccountUrl()
public com.azure.core.http.rest.PagedIterable<BlobContainerItem> listBlobContainers()
PagedIterable
can be consumed
while new items are automatically retrieved as needed. For more information, see the Azure Docs.
Code Samples
client.listBlobContainers().forEach(container -> System.out.printf("Name: %s%n", container.getName()));
public com.azure.core.http.rest.PagedIterable<BlobContainerItem> listBlobContainers(ListBlobContainersOptions options, Duration timeout)
PagedIterable
can be consumed
while new items are automatically retrieved as needed. For more information, see the Azure Docs.
Code Samples
ListBlobContainersOptions options = new ListBlobContainersOptions() .setPrefix("containerNamePrefixToMatch") .setDetails(new BlobContainerListDetails().setRetrieveMetadata(true)); client.listBlobContainers(options, timeout).forEach(container -> System.out.printf("Name: %s%n", container.getName()));
options
- A ListBlobContainersOptions
which specifies what data should be returned by the service.timeout
- An optional timeout value beyond which a RuntimeException
will be raised.public com.azure.core.http.rest.PagedIterable<TaggedBlobItem> findBlobsByTags(String query)
PagedIterable
can be consumed while new items are automatically retrieved as needed. For more
information, including information on the query syntax, see the Azure Docs.
Code Samples
client.findBlobsByTags("where=tag=value").forEach(blob -> System.out.printf("Name: %s%n", blob.getName()));
query
- Filters the results to return only blobs whose tags match the specified expression.public com.azure.core.http.rest.PagedIterable<TaggedBlobItem> findBlobsByTags(FindBlobsOptions options, Duration timeout, com.azure.core.util.Context context)
PagedIterable
can be consumed while new items are automatically retrieved as needed. For more
information, including information on the query syntax, see the Azure Docs.
Code Samples
Context context = new Context("Key", "Value"); client.findBlobsByTags(new FindBlobsOptions("where=tag=value").setMaxResultsPerPage(10), timeout, context) .forEach(blob -> System.out.printf("Name: %s%n", blob.getName()));
options
- FindBlobsOptions
timeout
- An optional timeout value beyond which a RuntimeException
will be raised.context
- Additional context that is passed through the Http pipeline during the service call.public BlobServiceProperties getProperties()
Code Samples
BlobServiceProperties properties = client.getProperties(); System.out.printf("Hour metrics enabled: %b, Minute metrics enabled: %b%n", properties.getHourMetrics().isEnabled(), properties.getMinuteMetrics().isEnabled());
public com.azure.core.http.rest.Response<BlobServiceProperties> getPropertiesWithResponse(Duration timeout, com.azure.core.util.Context context)
Code Samples
Context context = new Context("Key", "Value"); BlobServiceProperties properties = client.getPropertiesWithResponse(timeout, context).getValue(); System.out.printf("Hour metrics enabled: %b, Minute metrics enabled: %b%n", properties.getHourMetrics().isEnabled(), properties.getMinuteMetrics().isEnabled());
timeout
- An optional timeout value beyond which a RuntimeException
will be raised.context
- Additional context that is passed through the Http pipeline during the service call.Response
whose value
contains the storage account properties.public void setProperties(BlobServiceProperties properties)
This method checks to ensure the properties being sent follow the specifications indicated in the Azure Docs. If CORS policies are set, CORS parameters that are not set default to the empty string.
Code Samples
BlobRetentionPolicy loggingRetentionPolicy = new BlobRetentionPolicy().setEnabled(true).setDays(3); BlobRetentionPolicy metricsRetentionPolicy = new BlobRetentionPolicy().setEnabled(true).setDays(1); BlobServiceProperties properties = new BlobServiceProperties() .setLogging(new BlobAnalyticsLogging() .setWrite(true) .setDelete(true) .setRetentionPolicy(loggingRetentionPolicy)) .setHourMetrics(new BlobMetrics() .setEnabled(true) .setRetentionPolicy(metricsRetentionPolicy)) .setMinuteMetrics(new BlobMetrics() .setEnabled(true) .setRetentionPolicy(metricsRetentionPolicy)); try { client.setProperties(properties); System.out.printf("Setting properties completed%n"); } catch (UnsupportedOperationException error) { System.out.printf("Setting properties failed: %s%n", error); }
properties
- Configures the service.public com.azure.core.http.rest.Response<Void> setPropertiesWithResponse(BlobServiceProperties properties, Duration timeout, com.azure.core.util.Context context)
This method checks to ensure the properties being sent follow the specifications indicated in the Azure Docs. If CORS policies are set, CORS parameters that are not set default to the empty string.
Code Samples
BlobRetentionPolicy loggingRetentionPolicy = new BlobRetentionPolicy().setEnabled(true).setDays(3); BlobRetentionPolicy metricsRetentionPolicy = new BlobRetentionPolicy().setEnabled(true).setDays(1); BlobServiceProperties properties = new BlobServiceProperties() .setLogging(new BlobAnalyticsLogging() .setWrite(true) .setDelete(true) .setRetentionPolicy(loggingRetentionPolicy)) .setHourMetrics(new BlobMetrics() .setEnabled(true) .setRetentionPolicy(metricsRetentionPolicy)) .setMinuteMetrics(new BlobMetrics() .setEnabled(true) .setRetentionPolicy(metricsRetentionPolicy)); Context context = new Context("Key", "Value"); System.out.printf("Setting properties completed with status %d%n", client.setPropertiesWithResponse(properties, timeout, context).getStatusCode());
properties
- Configures the service.timeout
- An optional timeout value beyond which a RuntimeException
will be raised.context
- Additional context that is passed through the Http pipeline during the service call.public UserDelegationKey getUserDelegationKey(OffsetDateTime start, OffsetDateTime expiry)
TokenCredential
in this object's HttpPipeline
.
Code Samples
System.out.printf("User delegation key: %s%n", client.getUserDelegationKey(delegationKeyStartTime, delegationKeyExpiryTime));
start
- Start time for the key's validity. Null indicates immediate start.expiry
- Expiration of the key's validity.public com.azure.core.http.rest.Response<UserDelegationKey> getUserDelegationKeyWithResponse(OffsetDateTime start, OffsetDateTime expiry, Duration timeout, com.azure.core.util.Context context)
TokenCredential
in this object's HttpPipeline
.
Code Samples
System.out.printf("User delegation key: %s%n", client.getUserDelegationKeyWithResponse(delegationKeyStartTime, delegationKeyExpiryTime, timeout, context));
start
- Start time for the key's validity. Null indicates immediate start.expiry
- Expiration of the key's validity.timeout
- An optional timeout value beyond which a RuntimeException
will be raised.context
- Additional context that is passed through the Http pipeline during the service call.Response
whose value
contains the user delegation key.public BlobServiceStatistics getStatistics()
Code Samples
System.out.printf("Geo-replication status: %s%n", client.getStatistics().getGeoReplication().getStatus());
public com.azure.core.http.rest.Response<BlobServiceStatistics> getStatisticsWithResponse(Duration timeout, com.azure.core.util.Context context)
Code Samples
System.out.printf("Geo-replication status: %s%n", client.getStatisticsWithResponse(timeout, context).getValue().getGeoReplication().getStatus());
timeout
- An optional timeout value beyond which a RuntimeException
will be raised.context
- Additional context that is passed through the Http pipeline during the service call.Response
whose value
the storage account statistics.public StorageAccountInfo getAccountInfo()
Code Samples
StorageAccountInfo accountInfo = client.getAccountInfo(); System.out.printf("Account kind: %s, SKU: %s%n", accountInfo.getAccountKind(), accountInfo.getSkuName());
public com.azure.core.http.rest.Response<StorageAccountInfo> getAccountInfoWithResponse(Duration timeout, com.azure.core.util.Context context)
timeout
- An optional timeout value beyond which a RuntimeException
will be raised.context
- Additional context that is passed through the Http pipeline during the service call.Response
whose value
contains the storage account info.public String getAccountName()
public String generateAccountSas(AccountSasSignatureValues accountSasSignatureValues)
AccountSasSignatureValues
.
Note : The client must be authenticated via StorageSharedKeyCredential
See AccountSasSignatureValues
for more information on how to construct an account SAS.
Generating an account SAS
The snippet below generates an AccountSasSignatureValues object that lasts for two days and gives the user read and list access to blob and file shares.
AccountSasPermission permissions = new AccountSasPermission() .setListPermission(true) .setReadPermission(true); AccountSasResourceType resourceTypes = new AccountSasResourceType().setContainer(true); AccountSasService services = new AccountSasService().setBlobAccess(true).setFileAccess(true); OffsetDateTime expiryTime = OffsetDateTime.now().plus(Duration.ofDays(2)); AccountSasSignatureValues sasValues = new AccountSasSignatureValues(expiryTime, permissions, services, resourceTypes); // Client must be authenticated via StorageSharedKeyCredential String sas = client.generateAccountSas(sasValues);
accountSasSignatureValues
- AccountSasSignatureValues
String
representing all SAS query parameters.public BlobContainerClient undeleteBlobContainer(String deletedContainerName, String deletedContainerVersion)
deletedContainerName
already exists, this call will result in a 409 (conflict).
This API is only functional if Container Soft Delete is enabled
for the storage account associated with the container.
For more information, see the
Azure Docs. TODO (kasobol-msft) add link to REST API docs
Code Samples
ListBlobContainersOptions listBlobContainersOptions = new ListBlobContainersOptions(); listBlobContainersOptions.getDetails().setRetrieveDeleted(true); client.listBlobContainers(listBlobContainersOptions, null).forEach( deletedContainer -> { BlobContainerClient blobContainerClient = client.undeleteBlobContainer( deletedContainer.getName(), deletedContainer.getVersion()); } );
deletedContainerName
- The name of the previously deleted container.deletedContainerVersion
- The version of the previously deleted container.BlobContainerClient
used to interact with the restored container.public com.azure.core.http.rest.Response<BlobContainerClient> undeleteBlobContainerWithResponse(UndeleteBlobContainerOptions options, Duration timeout, com.azure.core.util.Context context)
destinationContainerName
if provided in options
.
Otherwise deletedContainerName
is used as destination container name.
If the container associated with provided destinationContainerName
already exists, this call will result in a 409 (conflict).
This API is only functional if Container Soft Delete is enabled
for the storage account associated with the container.
For more information, see the
Azure Docs. TODO (kasobol-msft) add link to REST API docs
Code Samples
ListBlobContainersOptions listBlobContainersOptions = new ListBlobContainersOptions(); listBlobContainersOptions.getDetails().setRetrieveDeleted(true); client.listBlobContainers(listBlobContainersOptions, null).forEach( deletedContainer -> { BlobContainerClient blobContainerClient = client.undeleteBlobContainerWithResponse( new UndeleteBlobContainerOptions(deletedContainer.getName(), deletedContainer.getVersion()) .setDestinationContainerName(deletedContainer.getName() + "V2"), timeout, context).getValue(); } );
options
- UndeleteBlobContainerOptions
.timeout
- An optional timeout value beyond which a RuntimeException
will be raised.context
- Additional context that is passed through the Http pipeline during the service call.Response
whose value
contains the BlobContainerClient
used
to interact with the restored container.Copyright © 2020 Microsoft Corporation. All rights reserved.