Próbuję wymienić i pobierać blobe z kontenera na Azure. Działa doskonale, gdy próbuję to zrobić za pomocą klucza dostępu do konta pamięci masowej. Jednak nie powiedzie się, gdy używaj tokenu SAS. Wygenerowałem token SAS z następującym skryptem PowerShell:

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

Otrzymuję następujący wynik:

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

Załączam token SAS z zasobami URI, aby uzyskać:

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

I prowadził następujące polecenie 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

Otrzymuję następujący błąd:

azure.multiapi.storage.v2018_03_28.common.storageClient: Klient-żądanie-id = 0F7A 7762-3729-11E9-8B32-FFC4C9592D0A Polityka Ponów nie pozwolił na ponowne próba: serwer - timestamp = sat, 23 lut 2019 05:08:30 GMT, serwer-żądanie-ID = 21F07A6A-F01E-00E9-32 35-CB7D5C000000, HTTP Kod statusu = 403, Serwer wyjątkowy nie może uwierzytelnić żądania. Upewnij się, że wartość nagłówka autoryzacji jest tworzona prawidłowo podstawa podpisu. ErrorCode: AuthenticationFed AuthenticationFailed Serwer nie powiódł się z upośledzeniem żądania. Upewnij się, że wartość Nagłówek autoryzacji tworzy się Ectly, w tym Signature.requestid: 21F07A6A-F01E-00E9-3235-CB7D5C000000TIME : 2019-02-23T05: 08: 30.7149353Z podpis Rozmiar jest nieprawidłowy .

Nie masz wymaganych uprawnień potrzebnych do wykonania tej operacji. W zależności od operacji może być konieczne przypisanie jednego z następujących ro:

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

Jeśli chcesz użyć starej metody uwierzytelniania i zezwalaj na zapytanie do odpowiedniego klawisza konta, użyj parametru "- Trybowy" i wartość "Klucz".

Wydarzenie: Commandinvoker.onfilterResult [] 'CommandResultitem' Obiekt nie jest iterable Traceback (ostatnie połączenie ostatnie): Plik "C: Użytkownicy VSSADM ~ 1 Appdata Lokalne temp Pip-Install-R8nye8gm Knack I.PE ", Linia 212, w Plik Invoke" C: Użytkownicy VSSADM ~ 1 AppData Lokalny Temp Pip-Install-R8NYe8gm Knack \ OU TPPT.PY ", Linia 132, Wycieczka" C: Użytkownicy VSSADM ~ 1 AppData Lokalne Temp Pip-Install-R8nye8gm \ Tmp Knacja Ou tput.py.py ", Linia 38, w formacie_json TypeError:" CommandResultitem "Obiekt nie jest iterable telemetry.Save: Zapisz Rejestr telemetrii o długości 2499 w pamięci podręcznej

Próbowałem generowania portalu konta pamięci masowej SAS, ale nie znalazł szczęścia.

Proszę pomóż!

1
Saloni Shah 23 luty 2019, 08:18

2 odpowiedzi

Najlepsza odpowiedź

Powodem, dla którego otrzymasz ten błąd, jest to, że używasz pełnego adresu URL SAS zamiast tokenu SAS.

Zmień następujące czynności:

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

Do

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

I powinieneś móc wymienić blob.

0
Gaurav Mantri-AIS 23 luty 2019, 06:38

Dla każdego innego, który przychodzi wraz z tym samym błędem azcopy z 403 AuthenticationFailed, ale szczegóły pokazują Signature size is invalid - miałem ten sam problem podczas prążkującej skryptu Azcopy z pliku Windows. BAT. Kiedy dostaniesz adres URL SAS, pojawi się znaki procentowe w ciągu. Musisz podwoić znaki procentowe do "Escape" je podczas biegania z pliku .bat. na przykład Gdziekolwiek widzisz% w adresie URL, uczyń go %% - mam nadzieję, że to pomoże!

Zabawna rzecz jest przypomniana, aby zrobić to w pierwszych 3 skryptach azcopy, które napisałem, a kilka tygodni później zrobiłem czwartą na nowym koncie magazynowym i nie mogłem dowiedzieć się, dlaczego stajedziałem 403. Przypuszczam, że ten post będzie przypomnieniem do mnie następnym razem, gdy zapomnę ponownie :)

0
Dean L 4 maj 2019, 20:34