Я пытаюсь скопировать blob с одного uri на другой (оба на одной учетной записи хранилища), оба имеют токен SAS для учетных данных. Это отлично работает с SAS Token, у которого нет ограничения IP-адреса, но не выполняется, если тогда токен-бета SOS-источника не ограничен IP-адресом.Azure copy blob с использованием SAS Token (с ограничением IP) 403 Forbidden
Примечание: Это не подведет, потому что у меня неправильно, другие функции BLOB IP работать, т.е. список, удалять, загружать и т.д.
Пример кода:
Uri sourceBlobUri = new Uri("https://mystorage.blob.core.windows.net/a-container/a.json");
Uri targetBlobUri = new Uri("https://mystorage.blob.core.windows.net/a-container-archive/a.json");
var prodTokenSource = @"A_SAS_TOKEN_WITH_A_IP_RESTRICTION";
var prodTokenArchive = @"A_SAS_TOKEN_WITH_A_IP_RESTRICTION";
StorageCredentials sourceCredentials = new StorageCredentials(prodTokenSource);
StorageCredentials targetCredentials = new StorageCredentials(prodTokenArchive);
CloudBlockBlob sourceBlob = new CloudBlockBlob(sourceBlobUri, sourceCredentials);
CloudBlockBlob targetBlob = new CloudBlockBlob(targetBlobUri, targetCredentials);
await targetBlob.StartCopyAsync(sourceBlob); //Fails 403 error
Одно предположение, что запрос на копирование происходит из Azure, поэтому IP-адрес заблокирован? Должен ли я настроить исходный токен SAS для приема диапазона IP-адресов из Azure? Есть ли другой способ скопировать капли, которые позволяют использовать токены SAS?
Хорошо, спасибо. Интересно, следует ли считать эту ошибку ошибкой в API? Функция есть, но не работает так, как написано в документации. Возможно, я должен попросить, чтобы метод копирования сохранял исходные учетные данные. –
Я бы не назвал это ошибкой, поскольку функция работает по назначению. Вы хотите, чтобы URL-адрес SAS использовался с определенного IP-адреса (ов), и это то, что он делает. –