尝试通过Azure PowerShell函数创建KeyVault密钥时,我遇到了不一致的行为。似乎在不同的功能主机上运行相同的PowerShell将返回不同的结果/失败。失败是以下变体:
_Get-AzureRmKeyVault:您的Azure凭据尚未设置或已过期,请运行Login-AzureRmAccount以设置Azure凭据。
该脚本旨在通过Azure AD服务主体向Azure进行身份验证,获取相关的KeyVault并在其中创建密钥。但是,即使在对所有值进行硬编码进行故障排除时,不同功能主机之间仍然存在不一致性,即一个成功创建KeyVault密钥,而另一个失败。
$ServicePrincipalPassword = ConvertTo-SecureString "password" -AsPlainText -Force
$ServicePrincipalCredential = New-Object System.Management.Automation.PSCredential ($ServicePrincipalAppId, $ServicePrincipalPassword)
$Login = Login-AzureRmAccount -ServicePrincipal -TenantId $TenantId -Credential $ServicePrincipalCredential
$KeyVault = Get-AzureRmKeyVault -VaultName "testkeyvault"
write-output "$($KeyVault.VaultURI)"
$Key = Add-AzureKeyVaultKey -VaultName $KeyVault.VaultName -Name 'testkey' -Destination Software
$KeyUrl = $Key.id.Substring(0, $Key.id.LastIndexOf("/"))
Write-Output $KeyUrl
是否期望这种行为或我能做些什么来使体验保持一致? 感谢。
答案 0 :(得分:0)
您好像在https://github.com/Azure/azure-webjobs-sdk-script/issues/1827
打开了一个问题它可能是运行时中的一些错误,而且是打开跟踪问题的合适位置。请避免将来双重发布
答案 1 :(得分:0)
对于在Azure PowerShell功能中与此类或类似问题作斗争的任何人,我的解决方案是从使用基于密码的服务主体凭据切换到利用基于证书的凭据。这仍然无法解释我所经历的不一致,但至少它现在已经非常一致了。