Azcopy выдает ошибку при выполнении через Terraform

Я использую инструмент Azcopy для копирования одной учетной записи хранения в другую. При выполнении команды с помощью терминала она выполняется отлично. Но при выполнении того же самого с использованием локального исполнителя Terraform он выдает ошибку. Пожалуйста, найдите код и ошибку ниже.

Код:

resource "null_resource" "backup" {
      provisioner "local-exec" {
     command= <<EOF
        azcopy cp "https://${var.src_storage_acc_name}.blob.core.windows.net${var.src_sas}" "https://${var.dest_storage_acc_name}.blob.core.windows.net${var.dest_sas}"
        EOF
  }
}

Ошибка:

 Error running command '        azcopy cp "https://strsrc.blob.core.windows.net?[SAS]" "https://strdest.blob.core.windows.net?[SAS]"
': exit status 1. Output: INFO: The parameters you supplied were Source: '"https://strsrc.blob.core.windows.net?[SAS]-REDACTED- of type Local, and Destination: '"https://strdest.blob.core.windows.net?[SAS]-REDACTED- of type Local
INFO: Based on the parameters supplied, a valid source-destination combination could not automatically be found. Please check the parameters you supplied.  If they are correct, please specify an exact source and destination type using the --from-to switch. Valid values are two-word phases of the form BlobLocal, LocalBlob etc.  Use the word 'Blob' for Blob Storage, 'Local' for the local file system, 'File' for Azure Files, and 'BlobFS' for ADLS Gen2. If you need a combination that is not supported yet, please log an issue on the AzCopy GitHub issues list.

failed to parse user input due to error: the inferred source/destination combination could not be identified, or is currently not supported

Пожалуйста, поделитесь своими мыслями по этому поводу.

2 ответа

Сегодня мне нужно было реализовать аналогичную задачу, и я использовал azcopy cp команда с --recursive=trueвариант, который приведен в документе.

Он успешно скопировал все содержимое исходного контейнера в место назначения.

Copy all blob containers, directories, and blobs from storage account to another by using a SAS token:

  - azcopy cp "https://[srcaccount].blob.core.windows.net?[SAS]" "https://[destaccount].blob.core.windows.net?[SAS]" --recursive=true

поддерживают только определенные комбинации типов источника и назначения (blob, Gen1, Gen2, S3, Local file system, ...) для copy подкоманда.

пытается угадать типы источника / назначения на основе URL и параметров.

Эта ошибка означает, что

  1. вы пытаетесь использовать неподдерживаемую комбинацию ИЛИ
    • Вы ничего не можете сделать. Поднимите вопрос, как предлагается. Они , вероятно , просто игнорировать его , как это или это.
  2. что-то не так с вашим URL. Например, у вас есть blob.core.windows.net когда ты должен был иметь dfs.core.windows.netили наоборот. Это, в свою очередь, приводит к неправильной идентификации типов источника и назначения.
    • Если вы уверены, что эта комбинация поддерживается, вы можете сказать azcopy типы, использующие --from-to. По иронии судьбы, когда вы используете неподдерживаемую комбинацию (например, BlobFSBlobFS), вместо сообщения «комбинация исходный пункт назначения не поддерживается» выдается то же сообщение об ошибке).
    • При работе с Gen2 вы можете использовать blob вместо dfsв URL-адресе, чтобы он использовал более старые (blob / Gen1) API для взаимодействия с вашей учетной записью Gen2. Хотя он менее эффективен, он все же может работать.
  • Blob для хранилища BLOB-объектов
  • 'Local' для локальной файловой системы
  • Файл для файлов Azure
  • 'BlobFS' для ADLS Gen2

На данный момент в документации поддерживаются следующие комбинации :

  • local <-> Azure Blob (аутентификация SAS или OAuth)
  • local <-> файлы Azure (проверка подлинности SAS общего ресурса / каталога)
  • local <-> Azure Data Lake Storage 2-го поколения (SAS, OAuth или аутентификация с общим ключом)
  • BLOB-объект Azure (SAS или общедоступный) -> BLOB-объект Azure (аутентификация SAS или OAuth)
  • Большой двоичный объект Azure (SAS или общедоступный) -> Файлы Azure (SAS)
  • Файлы Azure (SAS) -> Файлы Azure (SAS)
  • Файлы Azure (SAS) -> Azure Blob (аутентификация SAS или OAuth)
  • Amazon Web Services (AWS) S3 (ключ доступа) -> Azure Block Blob (аутентификация SAS или OAuth)
  • Google Cloud Storage (ключ учетной записи службы) -> Azure Block Blob (аутентификация SAS или OAuth) [Предварительный просмотр]
Другие вопросы по тегам