2016-04-12 6 views
1

Azure Powershell v1.3を使用して、既存のポリシーを参照する既存の共有アクセス署名トークンを使用して新しいストレージコンテキストを作成しようとしています。私はエラーを取得-SasToken-StorageAccountNameNew-AzureStorageContextを呼び出すとき:-StorageAccountKeyの代わりに-SasTokenを使用してNew-AzureStorageContextを呼び出す方法

PS C:\> $ctx = New-AzureStorageContext -SasToken '?sr=c&sv=2015-02-21&si=ReadOnly&sig=<signature omitted>=&api-version=2015-04-05' -StorageAccountName 'mystorageaccount' 

New-AzureStorageContext : An item with the same key has already been added. 
At line:1 char:8 

私が間違っSASトークンの形式を取得しています、もしくはステップまたはパラメータが欠落していますような気がしますが、何の例はありませんそれは似ているはずですが、これは私がAzureから照会できた唯一のSASフォームです。

メモすでにトークンがあり、読み取り専用の目的で使用しているだけなので、New-AzureStorageAccountSASTokenを使用したくないので、ストレージアカウントキーを使用する必要はありません。新しいクライアントを作成するには、このクライアントには必要ない権限が必要です。

構文/手順がありません。

+1

私は100%確実ではないが、私は、これはPowerShellのコマンドレットのバグのように見えると思います。もし私のSASトークンが 'api-version'パラメータを持っていれば、あなたと同じエラーが出ます。私はそれを削除すると、エラーがなくなった。私は 'api-version'の有無にかかわらずSAS Tokenを使いました。うまく動きました。 –

+0

実際には、ストレージクライアントライブラリのバグです! –

答えて

2

私はあなたがStorage Client Libraryのバグを発見したと思います。私はPowerShellのコードをStorage Client Libraryにたどりました。 PowerShellコマンドレットコードは、このSASトークンを渡してStorageCredentialsオブジェクトを作成しようとします。あなたがUpdateQueryBuilderためのコードを見れば

public StorageCredentials(string sasToken) 
    { 
     CommonUtility.AssertNotNullOrEmpty("sasToken", sasToken); 

     this.SASToken = sasToken; 
     this.UpdateQueryBuilder(); 
    } 

    private void UpdateQueryBuilder() 
    { 
     SasQueryBuilder newQueryBuilder = new SasQueryBuilder(this.SASToken); 

     newQueryBuilder.Add(Constants.QueryConstants.ApiVersion, Constants.HeaderConstants.TargetStorageVersion); 

     this.queryBuilder = newQueryBuilder; 
    } 

は今、これはすでに存在しているかどうかをチェックせずにもう一度api-versionを追加しようとします。

Githubに問題が発生しました:https://github.com/Azure/azure-storage-net/issues/259

+0

ありがとう!問題を提出する方法。それは今まで見たことのあるMSの最速フォローアップかもしれません。 – codekaizen

0

それは古いものですが、今のストレージコンテキストがSASで作業している:

$resourceGroup="YourResourceGroupName" 
$storAccName = "YourStorageAccountName" 

# get Storage Key 
$storKey = (Get-AzureRmStorageAccountKey -ResourceGroupName $resourceGroup -Name $storAccName).Value[0] 

# create main Storage Context 
$storCont = New-AzureStorageContext -StorageAccountName $storAccName -StorageAccountKey $storKey 

# create SAS token 
$storSAS = New-AzureStorageAccountSASToken -Service Blob, Queue -ResourceType Service, Container, Object -Permission "rwdalucp" -Context $storCont 

# create SAS-based Storage Context 
$storContSAS = New-AzureStorageContext -StorageAccountName $storAccName -SasToken $storSAS 
関連する問題