如何从命令行使用受限用户帐户更新 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 【问题描述】:我希望升级的服务位于资源组中,并且我的用户帐户被配置为该资源组的所有者。用户帐户仅限于访问一个资源组。
通过上传cspkg
和cscfg
文件,我可以使用新的管理门户成功更新云服务。
我正在尝试使用 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 上的云服务的主要内容,如果未能解决你的问题,请参考以下文章