如何使用 CloudShell 在存储帐户上创建新的存储容器?

How can you create a new storage container on a storage account using CloudShell?

我已经用谷歌搜索了几个小时,在 bash 和 powershell 中发现了很少的代码片段,但那些没有完全出错的代码片段最终给了我一个 403。这是我到目前为止的脚本。

$resourceGroupName = "MyResourceGroup"
$storageAccountName = "MyStorageAcc"
$containerName = "mynewcontainer"
$storageAccKey = (Get-AzStorageAccountKey -ResourceGroupName $resourceGroupName -AccountName $storageAccountName)[0].value
$storagecontext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccKey

New-AzureStorageContainer -Name $containerName -Permission Container -Context $storagecontext

我最初没有得到存储帐户密钥,但在那之后给了我一个 403,我开始调查错误的潜在原因,许多人建议获取存储帐户密钥。但是,这仍然不起作用。我错过了什么?

更新

我发现了这个:https://github.com/Azure/azure-cli/issues/9396,这表明您连接的 IP 地址有问题。但是,我已经添加了我的 IP 地址,但仍然遇到同样的问题。

更新 2

我找不到通过脚本完成此操作的充分方法,因此决定使用 ARM 模板将其作为初始创建的一部分。

确保您的用户帐户登录 Azure powershell(如果使用 cloud shell, the account is which you login the portal) has the correct RBAC role e.g. Storage Account Contributor at your storage account/group/subscription, if not, follow this 添加它。

此外,您将旧的 AzureRM 命令 New-AzureStorageContainer 与新的 Az 命令 Get-AzStorageAccountKeyNew-AzStorageContext 混合使用,这可能会导致您使用错误的上下文,将最后一行更改如下。

New-AzStorageContainer -Name $containerName -Permission Container -Context $storagecontext