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 и параметров.
Эта ошибка означает, что
- вы пытаетесь использовать неподдерживаемую комбинацию ИЛИ
- что-то не так с вашим 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) [Предварительный просмотр]