如何从不同 Azure 帐户 w/Terraform 中的 blob 创建托管磁盘?

How do I create a managed disk from a blob in a different Azure account w/Terraform?

我的 Azure 存储帐户中保存了一个 .vhd。我将容器设置为允许匿名读取,并且我确实可以从未经身份验证的浏览器下载 VHD。

我的代码:

resource "azurerm_managed_disk" "MyDisk" {
  name                 = "MyDisk"
  location             = var.location
  resource_group_name  = azurerm_resource_group.rg.name
  storage_account_type = "Standard_LRS"
  create_option        = "Copy"
 source_resource_id = "/subscriptions/.../resourceGroups/ProvisioningScripts/providers/Microsoft.Storage/storageAccounts/myvhds/blobServices/default"
source_uri = "https://....blob.core.windows.net/images/mydisk.vhd"
  disk_size_gb         = "32"

  tags = {
    environment = "staging"
  }
}

我在尝试申请时遇到以下错误:

错误:错误creating/updating托管磁盘“MyDisk”(资源组“rg”):compute.DisksClient#CreateOrUpdate:发送请求失败:StatusCode= 403 -- 原始错误:Code="LinkedAuthorizationFailed" Message="客户端有权在范围 '/subscriptions/.../resourceGroups/rg/providers/Microsoft.Compute/disks/MyDisk' 上执行操作 'Microsoft.Compute/disks/beginGetAccess/action',但是当前租户“4019...”无权访问链接订阅“626c...”。“

非常感谢您的帮助。

无法直接从不同租户中的 VHD 文件创建托管磁盘。你需要将 VHD 文件复制到同一租户和同一订阅中的存储帐户,然后你可以从该订阅中的 VHD 文件创建新的托管磁盘。当然,你的账号需要有足够的权限才能复制和创建。