【发布时间】:2017-08-20 19:42:43
【问题描述】:
有没有办法确定一个帐户是高级帐户还是不使用 Azure Storage Java API 或 Azure REST API?
如果我有存储帐户名称和密钥,有没有办法确定存储帐户类型?
【问题讨论】:
标签: azure azure-storage
有没有办法确定一个帐户是高级帐户还是不使用 Azure Storage Java API 或 Azure REST API?
如果我有存储帐户名称和密钥,有没有办法确定存储帐户类型?
【问题讨论】:
标签: azure azure-storage
您可以通过 REST API 在 sku.tier 中检索此信息:
请求
GET /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}?api-version=2016-12-01
回应
{
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}",
"name": "accountName",
"location": "account geo region",
"tags": {
"key1": "value1",
"key2": "value2"
},
"type": "Microsoft.Storage/StorageAccount",
"properties": {
"provisioningState": "status",
"encryption": {
"services": {
"blob": {
"enabled": true,
"lastEnabledTime": dateTime}
}
"keySource": "Microsoft.Storage"
}
"primaryEndpoints": {
"blob": "blob endpoint",
"queue": "queue endpoint",
"table": "table endpoint",
"file": "file endpoint"
},
"primaryLocation": "primary geo region",
"statusOfPrimary": "available|unavailable",
"lastGeoFailoverTime": "dateTime",
"secondaryLocation": "secondary geo region",
"statusOfSecondary": "available|unavailable",
"secondaryEndpoints": {
"blob": "secondary blob endpoint",
"queue": "secondary queue endpoint",
"table": "secondary table endpoint",
},
"creationTime": "dateTime",
"customDomain": {
"name": "user domain”
},
"accessTier": "Cool|Hot"
},
"sku": {
"name": "Standard_LRS|Standard_ZRS|Standard_GRS|Standard_RAGRS|Premium_LRS"
"tier": "Standard|Premium"
}
"kind": "Storage|BlobStorage"
}
https://docs.microsoft.com/en-us/rest/api/storagerp/storageaccounts
https://docs.microsoft.com/en-us/rest/api/storagerp/srp_json_get_storage_account_properties
【讨论】:
如果您知道subscriptionId,请使用@Thiago Custodio 提供的REST 解决方案。
如果您不知道订阅 ID,请查看我的以下解决方法。
根据this thread,我们知道高级存储帐户不支持 CORS 和 Storage Analytics,因此我们可以根据此获取帐户类型。如果 downloadServiceProperties 方法没有抛出异常,则账户类型为 Standard。否则,帐户类型为高级。以下代码供您参考。
public string getAccountType(string accountName, string accountKey)
{
string connectionString = "DefaultEndpointsProtocol=http;AccountName=" + accountName + ";AccountKey=" + accountKey + ";";
// Setup the cloud storage account.
CloudStorageAccount account = CloudStorageAccount.parse(connectionString);
// Create a blob service client
CloudBlobClient blobClient = account.createCloudBlobClient();
try
{
bloblClient.downloadServiceProperties();
return "Standard";
}
catch(StorageException e)
{
return "Premium";
}
}
【讨论】: