如何从命令行使用受限用户帐户更新 Azure 上的云服务

Posted

技术标签:

【中文标题】如何从命令行使用受限用户帐户更新 Azure 上的云服务【英文标题】:How to update a cloud service on Azure with a limited user account from the command line 【发布时间】:2015-10-18 09:36:27 【问题描述】:

我希望升级的服务位于资源组中,并且我的用户帐户被配置为该资源组的所有者。用户帐户仅限于访问一个资源组。

通过上传cspkgcscfg 文件,我可以使用新的管理门户成功更新云服务。

我正在尝试使用 Azure Powershell 自动执行此过程。

这是我迄今为止尝试过的:

Set-AzureDeployment -Upgrade -ServiceName test-service -Configuration C:\temp\test-service.cscfg -Package "https://test-service.blob.core.windows.net/azurepowershelldeploy/test-package.cspkg" -Slot Production -Mode Auto -Label test-2015-07-28T00:33:04

ForbiddenError: The server failed to authenticate the request.
Verify that the certificate is valid and is associated with this subscription.

看一下提琴手,它正在向这个端点发出请求,并返回一个 403 禁止。

POST /xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx/services/hostedservices/test-service/deploymentslots/Production/?comp=upgrade HTTP/1.1

我认为 ASM API 不能与资源组一起正常工作。是否有使用新 ARM API 更新云服务的方法?

【问题讨论】:

如何设置凭据? Get-AzureDeployment 可以使用吗? 您是该订阅的管理员并已连接吗? @jisaak 我使用 Add-AzureAccount 设置我的凭据。 @JamesWoolfenden 正如我所说,此帐户不是订阅的管理员,它是一个受限帐户,但它是包含服务的资源组的所有者,并且可以从门户部署服务. 【参考方案1】:

您可以使用 ARM 在单个协调操作中部署、更新或删除应用程序的所有资源。

您可以使用:New-AzureResourceGroupDeployment 将您的 ARM 模板重新部署到现有 RG

New-AzureResourceGroupDeployment cmdlet 将部署添加到现有资源组,包括部署所需的资源。此 cmdlet 类似于 New-AzureResourceGroup cmdlet,但它适用于现有资源组,而不是新资源组。要将单个资源添加到资源组,请使用 New-AzureResource cmdlet。

您的场景的一个很好的演练(有一些更改)位于:Provision and deploy microservices predictably in Azure

本教程展示了如何使用 JSON 资源组模板和 PowerShell 脚本以可预测的方式在 Azure 应用服务中以可预测的方式预配和部署由 Azure 应用服务中的微服务组成的应用程序。

不要在 RG 模板中使用应用服务资源,而是使用您需要的资源类型。然后调用上面的 New-AzureResourceGroupDeployment cmdlet 而不是 New-AzureResourceGroup cmdlet。

【讨论】:

我对使用 ARM 进行部署的理解是,您可以使用它来可预测地重复部署相同的基础架构(产品、开发、测试),但这不是用于更新部署中代码的机制。我们已经使用 ARM 来部署基础架构,但我不想在单个 .NET 云服务上运行更新操作。

以上是关于如何从命令行使用受限用户帐户更新 Azure 上的云服务的主要内容,如果未能解决你的问题,请参考以下文章

如何从 C# 代码轮换 Azure 存储帐户访问密钥?

在受限用户帐户下运行程序

如何使用 MySQL 中的命令行获取用户帐户列表?

$ Azure 门户帐户创建的路径环境变量

如何在 Azure AD B2C 中管理用户流之间的单个帐户/会话

Admin帐户被禁用,现在用着一个受限权限,如何成为管理员?