如何使用 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,则该帐户是您登录门户的帐户)具有正确的 RBAC 角色,例如Storage Account Contributor 在您的存储帐户/组/订阅中,如果没有,请按照 this 添加。

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

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