AzCopy — как загрузить отдельный файл в контейнер с помощью SAS

#azure #azure-blob-storage #azcopy

#azure #azure-blob-хранилище #azcopy

Вопрос:

У меня есть SAS для контейнера (только для записи, но я также пробую READ-WRITE-LIST). И мне нужно загрузить один файл в этот контейнер. Поэтому я использую AzCopy для этого:

 AzCopy /Source:./ /Dest:https://account.blob.core.windows.net/container/?sv=2018-03-28amp;si=writeamp;sr=camp;sig=****** /Pattern:somefile.ext /V:./AzCopy.log
  

И я попробовал другую версию:

 AzCopy /Source:somefile.ext /Dest:https://account.blob.core.windows.net/container/somefile.ext /DestSAS:******
  

но это тоже не работает.

И я попробовал обе версии AzCopy — 7.1.3 и 8.1! Что еще мне следует попробовать?

Кстати, в Powershell это работает как по волшебству, с тем же токеном SAS! Последняя версия Windows 10.

Обновить

Журнал (созданный на совершенно другом компьютере):

[2019.03.22 06:39:41.551 03:00] >>>>>>>>>>>>>>>> [2019.03.22 06:39:41.561 03:00][ ПОДРОБНЫЙ] Завершено: 0 файлов, 0 бит; Средняя скорость: 0 бит / с. [2019.03.22 06:39:41.569 03:00][ ПОДРОБНО] 8.1.0: AzCopy / Источник:somefile.ext /Dest:https://account.blob.core.windows.net/korch/somefile.ext /DestSAS:****** /V:./AzCopy с помощью SAS.log [2019.03.22 06:39:41.589 03:00][ ОШИБКА] Произошла ошибка при чтении журнала перезапуска из «C:UsersuserAppDataLocalMicrosoftAzureAzCopy «. Подробная ошибка: Ошибка при разборе файла журнала: файл журнала был сгенерирован другой версией AzCopy. [2019.03.22 06:39:43.175 03:00][ ПОДРОБНЫЙ] [ПОДСКАЗКА] Вы хотите перезаписать журнал, чтобы начать новую операцию? Выберите «Да», чтобы перезаписать, выберите «Нет», чтобы отменить текущую операцию. (Да / Нет): Y [2019.03.22 06:39:43.230 03:00][ ПОДРОБНО] Попытка проанализировать адрес ‘somefile.ext’ для каталога в качестве потенциального местоположения увенчалась успехом. [2019.03.22 06:39:43.232 03:00][ ПОДРОБНО] Попытка проанализировать адрес ‘somefile.ext’ для отдельного файла в качестве потенциального местоположения увенчалась успехом. [2019.03.22 06:39:43.239 03:00][ ПОДРОБНЫЙ] Исходный код интерпретируется как локальный файл: G:1somefile.ext. [2019.03.22 06:39:43.260 03:00][ ПОДРОБНО] Попытка проанализировать адрес ‘https://account.blob.core.windows.net/korch/somefile.ext ‘ в каталог в качестве потенциального местоположения успешно. [2019.03.22 06:39:43.269 03:00][ ПОДРОБНО] Попытка проанализировать адрес ‘https://account.blob.core.windows.net/korch/somefile.ext‘ в один файл в качестве потенциального местоположения удался. [2019.03.22 06:39:43.270 03:00][ ПОДРОБНО] Интерпретация назначения как отдельного файла, поскольку предоставленный источник является одним файлом. [2019.03.22 06:39:43.271 03:00][ ПОДРОБНЫЙ] Пункт назначения интерпретируется как облачный двоичный объект: https://account.blob.core.windows.net/korch/somefile.ext . [2019.03.22 06:39:43.942 03:00][ ПОДРОБНО] Начать передачу: G:1somefile.ext => https://account.blob.core.windows.net/korch/somefile.ext [2019.03.22 06:39:44.149 03:00][ ПОДРОБНЫЙ] Ошибка передачи: G:1somefile.ext => https://account.blob.core.windows.net/korch/somefile.ext. [2019.03.22 06:39:44.158 03:00][ ОШИБКА] Произошла неизвестная ошибка: передача завершилась неудачно. Серверу не удалось подтвердить подлинность запроса. Убедитесь, что значение заголовка авторизации сформировано правильно, включая подпись. HttpStatusMessage: серверу не удалось подтвердить подлинность запроса. Убедитесь, что значение заголовка авторизации сформировано правильно, включая подпись. Идентификатор запроса: 76ffafce-901e-0132-6460- e00b82000000 Время: пятница, 22 марта 2019 06:39:44 GMT [2019.03.22 06:39:44.161 03:00] Краткое описание передачи: —————— Общее количество переданных файлов: 1 Передача выполнена успешно: 0 Передача пропущена: 0 Сбой передачи: 1 Прошедшее время: 00.00:00:02

Комментарии:

1. Вам также нужно указать SAS для источника?

2. источником является локальный файл!

3. Какое сообщение об ошибке вы получаете?

4. Несанкционированный заголовок.

5. Не могли бы вы, пожалуйста, отредактировать свой вопрос и включить полное сообщение об ошибке? Я попробовал обе команды, которые вы использовали выше, и мне удалось успешно загрузить локальный файл.

Ответ №1:

хорошо, я создал файл .CMD для Azcopy’ing в виде одного файла. Но я не знал, что мне нужно экранировать% в пакетных файлах Windows. Вот почему маркер SAS был неверным в конце.

Ответ №2:

Вот что я попробовал, и это сработало.

 AzCopy /Source:D:temp /Dest:https://account-name.blob.core.windows.net/blob-container-name /DestSAS:"?se=2019-03-30T18:30:00Zamp;sp=rwamp;sv=2018-03-28amp;sr=camp;sig=xxxxx...=" /Pattern:test.txt

AzCopy /Source:D:temp2 /Dest:"https://account-name.blob.core.windows.net/blob-container-name?se=2019-03-30T18:30:00Zamp;sp=rwamp;sv=2018-03-28amp;sr=camp;sig=xxxxx...=" /Pattern:test.log
  

Я заметил одну вещь: если я просто включу Write разрешение, операция завершится с ошибкой. Мне пришлось добавить Read разрешение в моем SAS для успешной операции.

Кроме того, мне пришлось заключить токен SAS в двойные кавычки.

Комментарии:

1. Вы уверены, что ваш токен SAS создан с использованием политики для контейнера ?

2. Я не использовал политику. Я создал специальный токен SAS с разрешением на чтение и запись в контейнере больших двоичных объектов.

3. хорошо, я думаю, что нашел проблему. Я создал файл .cmd с параметром, и токен SAS должен быть экранирован внутри пакетного файла … Gr ….!

4. Потрясающе! Пожалуйста, укажите ваше решение в качестве ответа. Это может помочь некоторым другим пользователям, использующим подход с использованием командных файлов.