Azure存储:查找帐户是否为高级帐户

Azure存储:查找帐户是否为高级帐户,azure,azure-storage,Azure,Azure Storage,有没有办法确定帐户是高级帐户还是未使用Azure存储Java API或Azure REST API 如果我有存储帐户名和密钥,是否有办法确定存储帐户类型?您可以从REST API在sku.tier中检索此信息: 请求 GET /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}?api-version=

有没有办法确定帐户是高级帐户还是未使用Azure存储Java API或Azure REST API


如果我有存储帐户名和密钥,是否有办法确定存储帐户类型?

您可以从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"
}

如果您知道subscriptionId,请使用@Thiago Custodio提供的REST解决方案

如果您不知道subscriptionId,请检查我的以下解决方法

基于,我们知道高级存储帐户不支持CORS和存储分析,因此我们可以基于此获取帐户类型。如果downloadServiceProperties方法未引发异常,则帐户类型为标准。否则,帐户类型为Premium。以下代码仅供参考

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";
    }
}

这需要对存储帐户具有权限。我正在寻找一个只与存储帐户名和密钥一起工作的解决方案。我已经通过了该线程,但该解决方案需要依赖MSFT才能将上述服务添加到高级存储中。我不确定这样做是否正确。帐户名和密钥是访问存储内容的凭据,而不是存储帐户属性本身。我们只能根据标准存储和高级存储之间的差异来确定帐户类型。我们还可以发现高级存储不支持块blob。如果出现异常,我们可以编写代码将一些字节上传到blob。存储类型将是高级存储。有道理,我很想知道MSFT是否计划将上述服务添加到高级存储中。