通过 Visual Studio 部署资源时 New-AzureRmResourceGroupDeployment 期间的 Azure ExpiredAuthenticationToken

标签 azure visual-studio-2015 azure-resource-manager azure-sdk-.net

我正在尝试通过 Visual Studio 使用 ARM 模板部署 HDInsight 群集。我已在 Visual Studio 2015 中创建了一个 Azure 资源组项目,并将我的资源定义添加到模板 JSON 文件中。

但是,当我部署它时(通过右键单击项目,选择“部署”->“新建部署”,输入我的参数),Visual Studio 的输出显示(我剪掉了一些无聊的内容):

17:19:23 - Build started.

17:19:23 - Project "LaunchHdInsightCluster.deployproj" (StageArtifacts target(s)):

[snip]

17:20:27 - [VERBOSE] 17:20:27 - Resource Microsoft.HDInsight/clusters 'groupbhdinsight' provisioning status is running

17:31:06 - [ERROR] New-AzureRmResourceGroupDeployment : ExpiredAuthenticationToken: The access token expiry UTC time '3/14/2016 5:31:06 PM' is earlier than current UTC time '3/14/2016 5:31:07 PM'.

请注意,部署仅运行了 12 分钟,访问 token 就过期了 - 显然对于部署 HDInsight 群集来说这是一个问题(平均需要 20 分钟)。

我只是想了解这里到底发生了什么,因为我找不到这方面的文档。即:

什么创建访问 token 以及如何创建?持续多久?部署时没有要求我提供任何 Azure 凭据 - 我假设这一定是因为我使用与 Azure 中使用的帐户相同的帐户登录 Visual Studio,并且它“借用”了身份验证 session ,但这是事实只是猜测

什么决定了访问 token 的到期时间,以便我可以防止这种情况再次发生?

如何刷新我的身份验证 token ?

最佳答案

这里发生的情况是,VS 中的 Azure 资源组部署使用项目中的 PowerShell 脚本进行部署(即使输出托管在 VS 中,我们也使用该 PS 脚本来完成工作)。 PowerShell 脚本通过使用 VS 登录的 token 进行身份验证。该 token 仅有效一个小时,然后 VS 将刷新它。不过,一旦将其移交给 PowerShell,PowerShell 就不会自动刷新它。因此,如果您拥有该 token 59 分钟,那么它在您开始部署后很快就会过期。该 token 可以持续一个小时,或者更短的时间。我们正在努力解决这个问题(即让 PowerShell 自动刷新 token ),但这还需要一个月左右的时间。请参阅:https://github.com/Azure/azure-powershell/issues/1068

解决方法:不幸的是,VS 没有好的解决方法。但是...

希望有帮助...

关于通过 Visual Studio 部署资源时 New-AzureRmResourceGroupDeployment 期间的 Azure ExpiredAuthenticationToken,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35994754/

相关文章:

unit-testing - Windows 10 通用应用程序单元测试项目

.net - 类库项目构建错误,引用损坏

azure - 将现有 Azure 资源组项目复制到另一个订阅 RG 中

azure - 我们可以通过ADF解析json数组并将其复制到多个sql表中吗

c# - Visual Studio .cshtml 文件中的缩进被破坏

azure - ARM模板: Multiple rules(filters) with in an subscription

azure - 如何在另一个资源组中引用 SQL Server

azure - 我的带有队列触发器的 Azure 函数应用程序未按应用程序服务计划进行扩展

java - azure java sdk身份验证

Azure 存储服务日志