Учетная запись облачного хранилища 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 для проверки типа учетной записи или суффикса конечной точки для них?
2 ответа
Итак, вопрос в том, как я могу узнать, какая учетная запись, если есть только AccountName и AccountKey? Есть ли какой-нибудь метод API для проверки типа учетной записи или суффикса конечной точки для них?
На сегодняшний день нет API для этого. Одна вещь, которую вы могли бы сделать, это создать экземпляр CloudStorageAccount
используя имеющуюся информацию, попробуйте перечислить контейнеры BLOB-объектов.
Предполагая, что учетная запись хранения с таким именем существует, и если комбинация имени учетной записи / ключа правильная, то вы должны увидеть список контейнеров BLOB-объектов. Если комбинация имени учетной записи и ключа неверна, служба хранения выдаст ошибку 403.
Поскольку ваше намерение состоит только в проверке сочетания имени учетной записи и ключа, вы можете попросить службу хранения вернуть только 1 контейнер больших двоичных объектов, чтобы уменьшить количество ответов и ускорить операцию.
Для этого нет такого API, поскольку ваши учетные записи находятся в разных облаках, а API Azure всегда работают в одном облаке. На самом деле, вы даже можете создавать учетные записи с одинаковыми именами в разных облаках. Следовательно, вам нужно поддерживать отображение "учетная запись, имя облака (общедоступное Azure/China/Germany Gov)" самостоятельно.:)