ADLS в Azure Storage Syn c с помощью AzCopy - PullRequest
0 голосов
/ 28 мая 2020

Мне нужна помощь в устранении ошибок, с которыми я сталкиваюсь. Позвольте мне объяснить сценарий. Я пытаюсь синхронизировать c один из контейнеров ADLS Gen2 с Azure хранилищем больших двоичных объектов. У меня AzCopy 10.4.3, я для этого использую Azcopy Sync. Я использую команду ниже

azcopy sync 'https://ADLSGen2.blob.core.windows.net/testsamplefiles/SAMPLE' 'https://AzureBlobStorage.blob.core.windows.net/testsamplefiles/SAMPLE' --recursive

Когда я запускаю эту команду, я получаю ошибку ниже

REQUEST/RESPONSE (Try=1/71.0063ms, OpTime=110.9373ms) -- RESPONSE SUCCESSFULLY RECEIVED
   PUT https://AzureBlobStorage.blob.core.windows.net/testsamplefiles/SAMPLE/SampleFile.parquet?blockid=ZDQ0ODlkYzItN2N2QzOWJm&comp=block&timeout=901
   X-Ms-Request-Id: [378ca837-d01e-0031-4f48-34cfc2000000]

ERR: [P#0-T#0] COPYFAILED: https://ADLSGen2.blob.core.windows.net/testsamplefiles/SAMPLE/SampleFile.parquet: 404 : 404 The specified resource does not exist.. When Staging block from URL. X-Ms-Request-Id: [378ca837-d01e-0031-4f48-34cfc2000000]

   Dst: https://AzureBlobStorage.blob.core.windows.net/testsamplefiles/SAMPLE/SampleFile.parquet
REQUEST/RESPONSE (Try=1/22.9854ms, OpTime=22.9854ms) -- RESPONSE SUCCESSFULLY RECEIVED
   GET https://AzureBlobStorage.blob.core.windows.net/testsamplefiles/SAMPLE/SampleFile.parquet?blocklisttype=all&comp=blocklist&timeout=31
   X-Ms-Request-Id: [378ca84e-d01e-0031-6148-34cfc2000000]

Пока я проверил и убедился, что ниже

  • Я вошел в правильный клиент при входе в AzCopy
  • Storage Blob Data Contributor роль была предоставлена ​​моим учетным данным AD

Не уверен, что еще я отсутствует, так как файл существует в источнике, и я получаю ту же ошибку. Я пробовал использовать SAS, но получил другую ошибку. Я не могу продолжить использование SAS из-за политики поставщика, поэтому мне нужно убедиться, что он работает с oAuth. Любые входы действительно приветствуются.

1 Ответ

0 голосов
/ 02 июня 2020

Для ошибки 404 вы можете проверить, есть ли опечатка в команде и существует ли путь /testsamplefiles/SAMPLE как в исходной, так и в целевой учетной записи. Также обратите внимание, что из советов .

Используйте одинарные кавычки во всех командных оболочках, кроме Windows Command Shell (cmd.exe). Если вы используете командную оболочку Windows (cmd.exe), заключите аргументы пути в двойные кавычки ("") вместо одинарных кавычек ('').

From azcopy syn c поддерживаемый сценарий:

Azure Blob <-> Azure Blob (источник должен включать SAS или быть общедоступным; для проверки подлинности можно использовать SAS или OAuth. destination)

Мы должны включить в источник токен SAS, но я попробовал приведенный ниже код с аутентификацией AD.

azcopy sync "https://[account].blob.core.windows.net/[container]/[path/to/blob]?[SAS]" "https://[account].blob.core.windows.net/[container]/[path/to/blob]" 

, но получил ту же ошибку 400, что и проблема Github .

Таким образом, в этом случае, после моей проверки, вы можете использовать эту команду для синхронизации c одного из контейнеров ADLS Gen2 с Azure хранилищем больших двоичных объектов без выполнения azcopy login. Если у вас есть логин, вы можете запустить azcopy logout.

azcopy sync "https://nancydl.blob.core.windows.net/container1/sample?sv=xxx" "https://nancytestdiag244.blob.core.windows.net/container1/sample?sv=xxx" --recursive --s2s-preserve-access-tier=false

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...