Учетная запись облачного хранилища Azure с настраиваемым суффиксом конечной точки

Представьте, у нас есть 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 для проверки типа учетной записи или суффикса конечной точки?


person Lubch    schedule 21.06.2017    source источник


Ответы (2)


Итак, вопрос в том, как я могу узнать, какая учетная запись имеет только AccountName и AccountKey? Есть ли какой-нибудь метод API для проверки типа учетной записи или суффикса конечной точки?

На сегодняшний день для этого нет API. Вы можете создать экземпляр CloudStorageAccount, используя имеющуюся у вас информацию, и попытаться составить список контейнеров больших двоичных объектов.

Предполагая, что учетная запись хранения с таким именем существует и если комбинация имени учетной записи и клавиш верна, вы должны увидеть список контейнеров больших двоичных объектов. Если имя учетной записи / комбинация клавиш неверна, то служба хранения вернет ошибку 403.

Поскольку ваша цель - только проверить комбинацию имени учетной записи и клавиши, вы можете попросить службу хранения вернуть только 1 контейнер больших двоичных объектов, чтобы уменьшить количество данных ответа и ускорить операцию.

person Gaurav Mantri    schedule 21.06.2017
comment
Спасибо, я подумал об этом подходе, но он больше похож на обходной путь. Но если других способов нет, то можно :-) - person Lubch; 21.06.2017
comment
Это действительно обходной путь :). Мы также используем этот подход, чтобы проверить правильность комбинации имени учетной записи / ключа в наших продуктах, поскольку нет доступного API проверки подключения (как у вас в SQL Server). - person Gaurav Mantri; 21.06.2017

Для этого нет такого API, поскольку ваши учетные записи находятся в разных облаках, а API-интерфейсы Azure всегда обслуживаются в одном облаке. Фактически, вы даже можете создавать учетные записи с одинаковыми именами в разных облаках. Следовательно, вам необходимо самостоятельно поддерживать сопоставление «учетная запись, имя облака (общедоступное Azure / Правительство Китая / Германии)». :)

person Zhaoxing Lu    schedule 21.06.2017