AzCopy: ServiceCode=AuthenticationFailed? Hier eine mögliche Lösung


Thomas Wölfer
Thomas Wölfer

21. Februar 2021


Ich habe heute relativ lange mit der "neuen" Version von azcopy gekämpft. Nach der üblichen Sucherei mit "kleineren" Veränderungen am SAS-Token (da gibt oder gab es offensichtlich eine Vielzahl von Formatierungsproblemen), klappte es aber hinterher einfach trotzdem nicht: SAS-Token bzw. URL war per Storage Explorer definiert, aber beim Versuch die dann auch zu verwenden, gab es folgenden Fehler:

 

failed to perform copy command due to error: cannot start job due to error: cannot list files due to reason -> github.com/Azure/azure-storage-blob-go/azblob.newStorageError, /home/vsts/go/pkg/mod/github.com/!azure/azure-storage-blob-go@v0.10.1-0.20201022074806-8d8fc11be726/azblob/zc_storage_error.go:42

===== RESPONSE ERROR (ServiceCode=AuthenticationFailed) =====
Description=Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.

Der erste Teil sagt einfach nur, das das Problem im Go-Code aufgetreten ist: Offenbar handelt es sich bei azcopy um ein in "go" entwickeltes Programm. Der Response-Error mit seinem Text brachte mich dann aber irgendwann auf das eigentliche Problem. Ich hatte das, weil ich das zum testen immer so machen, in einem "test.bat" Job ausprobiert. Der Grund warum ich das immer mache: Man kann dann einfacher Veränderungen austesten.

Blöderweise hat das '%' Zeichen in .bat-Jobs eine besondere Bedeutung UND in der URL für azcopy (im SAS-Teil) befinden sich solche Zeichen. Ich musste also alle '%' im Job durch '%%' ersetzen - dann ging es.