具有自定义端点后缀的Azure云存储帐户

时间:2017-06-21 12:30:20

标签: azure cloud azure-storage azure-storage-blobs azure-gov

想象一下,我们有2个Azure存储帐户,其中一个是常规帐户,另一个是 - 政府(或德国,中国等)。 以下是我们创建CloudBlobClient的方法:

    private const string ConnectionStringTemplate = "DefaultEndpointsProtocol={0};AccountName={1};AccountKey={2};";

    public static CloudBlobClient Create(string protocol, string accountName, string accountKey)
    {
        var connectionString = string.Format(CultureInfo.InvariantCulture, ConnectionStringTemplate, protocol, accountName, accountKey);
        var account = CloudStorageAccount.Parse(connectionString);

        return account.CreateCloudBlobClient();
    }

此代码适用于普通帐户,但政府部门则不行。我们应该指定EndpointSuffix(core.usgovcloudapi.net而不是默认的core.windows.net),连接字符串应该是这样的:

"DefaultEndpointsProtocol={0};AccountName={1};AccountKey={2};EndpointSuffix={3}";

所以,问题是,如果只有AccountName和AccountKey,我怎么知道哪个帐户?是否有一些API方法来检查帐户类型或端点后缀?

2 个答案:

答案 0 :(得分:2)

  

所以,问题是,我怎么知道哪个帐户是否只有   AccountName和AccountKey?是否有一些API方法来检查帐户   他们的类型或端点后缀?

截至今天,没有API可以做到这一点。您可以做的一件事是使用您拥有的信息创建CloudStorageAccount的实例,并尝试列出blob容器。

假设存在该名称的存储帐户,并且帐户名称/密钥组合正确,那么您应该能够看到blob容器列表。如果帐户名称/密钥组合不正确,则存储服务将返回403错误。

由于您的目的只是检查帐户名称/密钥组合,因此您可以要求存储服务仅返回1个blob容器以减少响应数据并加快操作。

答案 1 :(得分:1)

没有这样的API可以做到这一点,因为您的帐户跨越不同的云,Azure API始终在一个云中提供服务。实际上,您甚至可以在不同的云中创建具有相同名称的帐户。因此,您需要自己维护“帐户,云名称(公共Azure / China / Germany Gov)”映射。 :)