1
我需要列出Azure中每個blob的所有快照,如果可能的話使用Java SDK或Azure REST API。對於這兩種選擇,我知道如何列出所有存儲帳戶,但我還沒有找到一種方法來檢索與單個存儲帳戶關聯的快照列表。使用Azure Java SDK或REST API列出存儲帳戶的所有快照
我需要列出Azure中每個blob的所有快照,如果可能的話使用Java SDK或Azure REST API。對於這兩種選擇,我知道如何列出所有存儲帳戶,但我還沒有找到一種方法來檢索與單個存儲帳戶關聯的快照列表。使用Azure Java SDK或REST API列出存儲帳戶的所有快照
Acording到Azure存儲SDK的javadocs爲Java,使用該方法listBlobs(String prefix, boolean useFlatBlobListing, EnumSet<BlobListingDetails> listingDetails, BlobRequestOptions options, OperationContext opContext)
與BlobListingDetails.SNAPSHOTS
用於容器列出所有斑點包括snapshot blob
通過該方法isSnapshot()
進行過濾。
這是我的示例代碼如下。
String accountName = "<your-storage-account-name>";
String accountKey = "<your-storage-account-key>";
String storageConnectionString = "DefaultEndpointsProtocol=https;AccountName=%s;AccountKey=%s";
String connectionString = String.format(storageConnectionString, accountName, accountKey);
CloudStorageAccount account = CloudStorageAccount.parse(connectionString);
CloudBlobClient client = account.createCloudBlobClient();
// List all containers of a storage account
Iterable<CloudBlobContainer> containers = client.listContainers();
String prefix = null;
boolean useFlatBlobListing = true;
// Specify the blob list which include snapshot blob
EnumSet<BlobListingDetails> listingDetails = EnumSet.of(BlobListingDetails.SNAPSHOTS);
BlobRequestOptions options = null;
OperationContext opContext = null;
for (CloudBlobContainer container : containers) {
Iterable<ListBlobItem> blobItems = container.listBlobs(prefix, useFlatBlobListing, listingDetails, options,
opContext);
for (ListBlobItem blobItem : blobItems) {
if (blobItem instanceof CloudBlob) {
CloudBlob blob = (CloudBlob) blobItem;
// Check a blob whether be a snapshot blob
if (blob.isSnapshot()) {
System.out.println(blobItem.getStorageUri());
}
}
}
}
如果您想使用REST API來實現此需求,請執行以下步驟。
List Containers
作爲存儲帳戶來列出所有容器。List Blobs
與作爲小節中的reference的Blob and Snapshot List
url參數include={snapshots}
所述列出一種容器,其包括快照斑點的所有斑點,然後過濾所有快照斑點。