【问题标题】:Does it work? az disk create --for-upload / az disk grant-access --access-level Write它有效吗? az disk create --for-upload / az disk grant-access --access-level 写入
【发布时间】:2019-08-13 13:53:06
【问题描述】:

我正在尝试创建一个空的托管磁盘,然后我可以将其 Blob 上传或 Blob 复制到该磁盘。 Azure 托管磁盘的全部目的是消除管理存储帐户的痛苦,因此我特别不想创建存储帐户

我已经尝试过:

  1. az disk create --for-upload true ...。 Azure 文档明确指出此选项用于创建将由 Blob 上传填充的空磁盘映像。
  2. az disk grant-access --access-level Write 生成可写入的 SAS URL。
  3. az storage blob upload ... 使用上一步中的 sas 详细信息。

更多详情请看这里:https://github.com/Azure/azure-cli/issues/10192

g=group1     # targetr resource group
n=nixosDisk1 # disk name
s=50         # disk size in GB
timeout=$(( 60*60 )) # sas url timeout

./az.sh disk create \
  --resource-group $g \
  --name $n \
  --size-gb $s \
  --for-upload true

sasurl="$(\
  ./az.sh disk grant-access \
    --access-level Write \
    --resource-group $g \
    --name $n \
    --duration-in-seconds $timeout \
      | jq -r '.accessSas')"

# decompose the URL into parts:
strg="md-impexp-jbvwf1mxwlr1"
cntr="mn02nwdj3lzl"
blob="abcd"
sastoken="sv=2017-04-17&sr=b&si=295e4a79-c2ac-4064-96c7-f6cb408ea89d&sig=zeTB%2FFGm3FEqkRg6XqsNLfF8ohgRHfGa6XSe2TDwU%2Fc%3D"

f="/tmp/azure-cli/disk.vhd"

./az.sh storage blob upload \
  --account-name "${strg}" \
  --container-name "${cntr}" \
  --name "$blob" \
  --sas-token "$sastoken" \
  --file "$f"

这当然会失败,除了我的 GitHub 错误报告之外,互联网上任何地方都没有错误:

<Error><Code>ApiNotSupportedForAccount</Code><Message>This API is not supported for the account

详细说明我为什么希望这样做:

  1. documentation for az disk create's flag --for-output 说:

    创建用于稍后通过存储命令上传 Blob 的磁盘。

    运行“az disk grant-access --access-level Write”以检索磁盘的 SAS 令牌。

  2. changelog for the Azure Storage python SDK 包含以下文字:

    新版托管磁盘

    将 GrantAccess API 与 AccessLevel.Write 结合使用以将 SAS 写入磁盘。这是一个新的访问级别,只能在上传到新磁盘时使用。然后客户可以使用存储 API 为磁盘上传位。

    有与上传过程相关的新 DiskState(DiskState.ReadyToUpload 和 DiskState.ActiveUpload)。

请注意,当您创建磁盘时,磁盘状态为“ReadyToUpload”,当您检索 SAS 令牌时,它会自动更改为“ActiveUpload”,甚至在开始 blob 操作之前。

所有这一切都表明我的脚本应该可以工作......然而,它没有。

【问题讨论】:

    标签: azure azure-storage azure-cli


    【解决方案1】:

    不久前我遇到了同样的问题。我用了很多很多方法来测试它。最后,我发现如果我们使用 AzCopy.exe 将本地 vhd 文件上传到磁盘。

    azcopy copy "vhd 文件的 url" "磁盘的 url" --blob-type PageBlob

    【讨论】:

      猜你喜欢
      • 2021-09-25
      • 2022-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多