az acr - 如果单个帐户有多个订阅,则无法找到存储库

az acr - Unable to find repository in case of multiple subscription on single account

我正在使用 Azure CLI v2.0.62

我在 Azure 中的单个帐户上确实有多个订阅 - S1、S2、S3、S4。

我正在执行以下脚本以将动态值插入存储库:

az login
az acr build "ParentStorage" --platform windows -f Dockerfile -t ChildRepository:<dynamicValue>

这里ParentStorageStorage Account类型,ChileRepositoryRepository类型

首先,当登录命令被执行时,它给了我可用订阅的列表。但是在执行 az acr build... 命令后,它会抛出如下错误消息:

错误

The resource with name 'ParentStorage' and type 'Microsoft.ContainerRegistry/registries' could not be found in subscription 'Visual Studio Professional (ID)'.

到目前为止我发现的是,它正在尝试在我的 Visual Studio 订阅 (S1) 下搜索。由于 S1 是默认订阅,存储库在 S2 中。所以我将 S2 设置为默认订阅并再次尝试 但它没有用 .

事件当我尝试执行以下命令时,它抛出了同样的错误:

az acr show --name ParentStorage

P.S.: 我尝试使用特定订阅登录但无法登录。

请让我知道我在这里缺少什么。

对于您的问题,您的注册表似乎不在当前订阅中。当您使用 CLI 命令 az login 时,您将使用默认订阅登录。对于您来说,"Visual Studio Professional (ID)" 似乎是默认值。您应该检查您的注册表是否在当前订阅中。如果不是,您应该通过 CLI 命令将该订阅设置为当前订阅:

az account set --subscription subscription_id

那我建议你最好用CLI命令再次检查注册表是否存在:

az acr show -n acr_name

它将显示您的注册表信息。这一次,您可以根据需要使用 CLI 命令 az acr build 构建镜像。

另外,您可以通过CLI命令az login.

在登录时使用参数--subscription设置订阅

如果您有更多问题,请告诉我。或者觉得有帮助可以采纳为答案。

只需按照

中提供的答案添加额外的东西

我们可以使用下面的命令来构建特定的订阅 ID,这样当多个用户想要使用他们不同的默认订阅 ID 执行这个命令时,他们不需要将其他订阅作为他们的默认订阅。

az acr build --subscription $SubscriptionId -r $registry --platform Windows -f Dockerfile -t XYZ:v$version obj

希望这对其他人也有帮助。

我运行进入这个并发现了另一个问题。我使用的服务提供商 (SP) 只有“Acr Push”角色。我不得不添加“贡献者”角色来解决这个问题。所以看起来“Acr Push”没有足够的权限来查看 ACR 资源。