2017-09-25 94 views
0

我正在使用“Classic RunAs Connection”配置Azure自动化Runbook。 当我通过此连接选择Azure订阅后,我获得了我的一个存储帐户的存储密钥,但问题是有时可用,有时不可用。下面是我在做什么:Azure自动化上的Get-AzureStorageKey错误

$ConnectionAssetName = "AzureClassicRunAsConnection" 
$Conn = Get-AutomationConnection -Name $ConnectionAssetName 
$CertificateAssetName = $Conn.CertificateAssetName 
$Cert = Get-AutomationCertificate -Name $CertificateAssetName 
Set-AzureSubscription -SubscriptionName $Conn.SubscriptionName -SubscriptionId $Conn.SubscriptionID -Certificate $AzureCert 
Select-AzureSubscription -SubscriptionId $Conn.SubscriptionID 

$storageAccountKey = Get-AzureStorageKey -StorageAccountName "MyStorageAccountName" 

发生是瞬时错误:

Get-AzureStorageKey : An error occurred while sending the request.

At line:38 char:26

  • ... eAccountKey = Get-AzureStorageKey -StorageAccountName "MyStorageAccountName"

  • ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    • CategoryInfo : CloseError: (:) [Get-AzureStorageKey], HttpRequestException

    • FullyQualifiedErrorId :

Microsoft.WindowsAzure.Commands.ServiceManagement.StorageServices.GetAzureStorageKeyCommand

它工作的大部分时间,但有时这会抛出异常。

有人可以帮我吗?

谢谢!

+0

您能否让我知道您的存储帐户是哪一种? ASM还是ARM? –

+0

你好贾森!它是一个ASM帐户(经典)。谢谢 –

回答

0

经过一些不正确的测试后,我决定将StorageKey存储在加密变量中。

我知道这不是最好的解决方案,但我没有发现问题。 最初的解决方案大多数时间工作,但发生错误时引发的异常并没有帮助我找到它。

0

您需要使用的RunAs连接 - 在ClassicRunAsConnections是RDFE的KeyVault的cmdlet使用AzureRm凭据。 RunAs凭证为您提供服务主体,并且您需要在KeyVault配置中为您的KeyVault授予该服务主体访问权限

+0

嗨,马克! Get-AzureStorageKey cmdlet使用KeyVault吗?我认为“ClassicRunAsConnection”是连接传统的存储帐户正确的选择,但我会按照你的建议,并提出一些测试与“AzureRunAsConnection”。然而,这很奇怪,因为有时候它有效,有时它不会。谢谢 –

+0

不,这完全是关于Get-AzureKeyVaultSecret或Get-AzureKeyVaultKey。 Get-AzureStorageKey是一个RDFE cmdlet –