微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过Terraform执行时Azcopy引发错误

如何解决通过Terraform执行时Azcopy引发错误

我正在使用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

请提供您对此的想法。

解决方法

今天我需要执行类似的任务,并且我将azcopy cp命令与document中提供的--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
,

azcopy 仅支持 copy 子命令的源和目标类型(blob、Gen1、Gen2、S3、本地文件系统等)的某些组合。

azcopy 尝试根据 URL 和参数猜测源/目标类型。

这个错误意味着

  1. 您正在尝试使用不受支持的组合或
    • 你无能为力。按照建议提出问题。他们可能会像 thisthis 一样忽略它。
  2. 您的网址有问题。例如。当你应该有 blob.core.windows.net 时,你有 dfs.core.windows.net,反之亦然。这反过来又会导致对源和目标类型的错误识别。
    • 如果您确定支持该组合,则可以使用 azcopy 告诉 --from-to 类型。具有讽刺意味的是,当您使用不受支持的组合(例如 BlobFSBlobFS)时,它会给出相同的错误消息,而不是说“不支持源目标组合”。
    • 在处理 Gen2 时,您可以在 URL 中使用 blob 而不是 dfs 以使其使用较旧的 (blob/Gen1) API 与您的 Gen2 帐户进行交互。虽然性能较低,但它仍然可以工作。
  • 用于 Blob 存储的“Blob”
  • 'Local' 用于本地文件系统
  • Azure 文件的“文件”
  • 用于 ADLS Gen2 的“BlobFS”

目前支持以下组合per documentation

  • 本地 Azure Blob(SAS 或 OAuth 身份验证)
  • 本地 Azure 文件(共享/目录 SAS 身份验证)
  • 本地 Azure Data Lake Storage Gen 2(SAS、OAuth 或共享密钥身份验证)
  • Azure Blob(SAS 或公共)-> Azure Blob(SAS 或 OAuth 身份验证)
  • Azure Blob(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 身份验证)[预览]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。