Маркер Azure SAS для контейнеров выбрасывает ошибку «Недопустимый размер подписи» - PullRequest
0 голосов
/ 23 февраля 2019

Я пытаюсь составить список и загрузить большие двоичные объекты из контейнера в Azure.Он отлично работает, когда я пытаюсь сделать это, используя ключ доступа к учетной записи хранения.Однако происходит сбой при использовании токена SAS.Я сгенерировал токен SAS с помощью следующего сценария PowerShell:

    $storageContext = New-AzureStorageContext -StorageAccountName "myAccount" -StorageAccountKey "<account key>"
$permission = "rwdl"
$sasToken = New-AzureStorageContainerSASToken  -Name "myContainer" -Policy "testPolicy" -Context $storageContext >>sastoken.txt
"

Я получил следующий результат:

?sv=2017-04-17&sr=c&si=testPolicy&sig=dbS680%2FXgPp4o%2BQCCzpYzGZszCnDHVjCkdHZRf6KDeg%3D

Я добавил токен sas с URI ресурса для получения:

https://myAccount.blob.core.windows.net/myContainer?sv=2017-04-17&sr=c&si=testPolicy&sig=dbS680%2FXgPp4o%2BQCCzpYzGZszCnDHVjCkdHZRf6KDeg%3D

и запустил следующую команду CLI:

az storage blob list --container-name myContainer --account-name myAccount --auth-mode key --debug --sas-token "https://myAccount.blob.core.windows.net/myContainer?sv=2017-04-17&sr=c&si=testPolicy&sig=dbS680%2FXgPp4o%2BQCCzpYzGZszCnDHVjCkdHZRf6KDeg%3D" >> bloblist.txt

Я получаю следующую ошибку:

azure.multiapi.storage.v2018_03_28.common.storageclient: Клиент-Request-ID = 0f7a 7762-3729-11e9-8b32-ffc4c9592d0a Политика повторных попыток не допускает повторных попыток: Server- Timestamp = Sat, 23 февраля 2019 05:08:30 GMT, ID-запроса сервера = 21f07a6a-f01e-00e9-32 35-cb7d5c000000, код состояния HTTP = 403, исключительная ситуация = серверу не удалось аутентифицировать запрос.Убедитесь, что значение заголовка авторизации сформировано правильно, включая подпись.ErrorCode: AuthenticationFailed AuthenticationFailed Серверу не удалось авторизовать запрос.Убедитесь, что значение заголовка авторизации сформировано правильно, включая подпись.RequestId: 21f07a6a-f01e-00e9-3235-cb7d5c000000Time: 2019-02-23T05: 08: 30.7149353Z Недопустимый размер подписи .

У вас нет необходимых прав для выполнения этой операции.В зависимости от вашей операции вам может потребоваться назначить одну из следующих ролей:

"Storage Blob Data Contributor (Preview)"
"Storage Blob Data Reader (Preview)"
"Storage Queue Data Contributor (Preview)"
"Storage Queue Data Reader (Preview)"

Если вы хотите использовать старый метод аутентификации и разрешить запрашивать правильный ключ учетной записи, используйте "--auth-mode "параметр и значение" ключа ".

Событие: CommandInvoker.OnFilterResult [] Объект 'CommandResultItem' не повторяется. Трассировка (последний вызов был последним): файл" C: \ Users "\ VSSADM ~ 1 \ AppData \ Local \ Temp \ pip-install-r8nye8gm \ knack \ knack \ cl i.py ", строка 212, в файле вызова" C: \ Users \ VSSADM ~ 1 \ AppData \ Local \ Temp \ pip "-install-r8nye8gm \ knack \ knack \ ou tput.py ", строка 132, в выходном файле" C: \ Users \ VSSADM ~ 1 \ AppData \ Local \ Temp \ pip-install-r8nye8gm \ knack \ knack \ ou tput.py ", строка 38, в format_json TypeError: объект 'CommandResultItem' не является итеративным telemetry.save: сохранить запись телеметрии длиной 2499 в кэш-памяти

Я попытался создать портал SAS уровня учетной записи хранения, ноне нашел удачи.

Пожалуйста, помогите!

Ответы [ 2 ]

0 голосов
/ 04 мая 2019

Для всех, кто приходит с той же ошибкой azcopy, что и 403 AuthenticationFailed, но подробно показано Signature size is invalid - у меня была такая же проблема при попытке сценария azcopy из файла Windows .bat.Когда вы получите URL-адрес SAS, в строке появятся знаки процента.Вы должны удвоить знаки процента до "escape" их при запуске из файла .bat.например, везде, где вы видите% в URL, делайте его %% - надеюсь, это поможет!

Забавно, я вспомнил, что делал это в первых 3 написанных мной скриптах azcopy и несколькихнесколько недель спустя сделал 4-й для новой учетной записи хранения и не мог понять, почему я продолжал получать 403. Я предполагаю, что этот пост будет напоминанием для меня в следующий раз, когда я снова забуду:)

0 голосов
/ 23 февраля 2019

Причина, по которой вы получаете эту ошибку, в том, что вы используете полный SAS URL вместо токена SAS.

Пожалуйста, измените следующее:

az storage blob list --container-name myContainer --account-name myAccount --auth-mode key --debug --sas-token "https://myAccount.blob.core.windows.net/myContainer?sv=2017-04-17&sr=c&si=testPolicy&sig=dbS680%2FXgPp4o%2BQCCzpYzGZszCnDHVjCkdHZRf6KDeg%3D" >> bloblist.txt

на

az storage blob list --container-name myContainer --account-name myAccount --auth-mode key --debug --sas-token "?sv=2017-04-17&sr=c&si=testPolicy&sig=dbS680%2FXgPp4o%2BQCCzpYzGZszCnDHVjCkdHZRf6KDeg%3D" >> bloblist.txt

И вы должны иметь возможность перечислять капли.

...