Может ли кто-нибудь помочь с ошибкой при использовании ключа SAS для выполнения azCopy?
IS SH на моей виртуальной машине Azure и получения токена с использованием его управляемого удостоверения:
curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com' -H Метаданные: true
Затем я создаю запрос почтальона с заголовком «Authorization» «Bearer tokenFromAbove» и JSON тело:
{
"signatureServices": "b",
"signatureResourceTypes": "co",
"signaturePermission": "rw c",
"signatureProtocol": "https",
"signatureExpiry": "2020-02-22T00: 06: 00Z"
}
Это сообщение для: https://management.azure.com/subscriptions/mySubId/resourceGroups/myResourceGroupName/providers/Microsoft.Storage/storageAccounts/myStorageAccountName/listAccountSas/?api-version=2019-06-01
И возвращает токен SAS. Этот токен позволяет мне создать контейнер с «azcopy make».
Но я также хочу использовать «azcopy copy» для перемещения файлов с моей виртуальной машины в новый контейнер. Я пытаюсь сделать это с помощью команды:
azcopy copy 'mySourceDirectory' 'https://myStorageAccountName.blob.core.windows.net/myContainer?sv=2015-04-05&ss=b&srt=co&sp=rwc&se=2020-02-22T00: 06: 00Z & spr = https & sig = redacted ' --recursive
Но это не удается с следующее:
ИНФОРМАЦИЯ: Аутентификация не удалась, она либо неверна, либо истекла, либо не имеет правильного разрешения -> github.com/Azure/azure-storage-blob-go/azblob. newStorageError, /home/vsts/go/pkg/mod/github.com/!azure/azure-storage-blob-go@v0.7.0/azblob/zc_storage_error.go:42
===== ОШИБКА ОТВЕТА (ServiceCode = AuthenticationFailed) =====
Описание = Серверу не удалось аутентифицировать запрос. Убедитесь, что значение заголовка авторизации сформировано правильно, включая подпись.
RequestId: ef37087d-501e-0050-650b-e81cb4000000 Время: 2020-02-20T16: 35: 50.6651356Z, Подробности:
AuthenticationErrorDetail: Подпись не соответствует . Для подписи использовалась строка myStorageAccountName rwc b co 2020-02-22T00: 06: 00Z https 2015-04-05
Код: AuthenticationFailed
Обратите внимание, если я сгенерирую аналогичный токен SAS в Azure портал, это работает. Моя виртуальная машина является владельцем учетной записи хранения.