2017-03-09 32 views
0

次のコードを使用して、Storage Client SDKバージョン8.0.0を使用して、AzCopyが使用しているものと一致するBLOBコンテナのSASを生成します。Azure BlobコンテナSASはAzCopyではなくコードで動作します

CloudStorageAccount storageAccount = CloudStorageAccount.Parse("myconnectionstring"); 

     CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); 

     CloudBlobContainer container = blobClient.GetContainerReference("mycontainer"); 

     SharedAccessBlobPolicy sasConstraints = new SharedAccessBlobPolicy(); 
     sasConstraints.SharedAccessStartTime = DateTime.Now.AddHours(-24); 
     sasConstraints.SharedAccessExpiryTime = DateTime.Now.AddHours(24); 
     sasConstraints.Permissions = SharedAccessBlobPermissions.List | SharedAccessBlobPermissions.Read; 

     string sas = container.GetSharedAccessSignature(sasConstraints, null); 

     Console.WriteLine(sas); 

     Console.WriteLine(container.Uri); 

     StorageCredentials creds = new StorageCredentials(sas); 

     var sasContainer = new CloudBlobContainer(new Uri(container.Uri + sas)); 

     var items = sasContainer.GetBlobReference("items.txt"); 

このすべては、コード内で正常に動作しますが、私は「SourceSAS」パラメータとしてブロブをダウンロードするAzCopyにSASトークンをコピーするとき、私は署名が(フィドラー経由で)一致していないと言って403を得ます。署名を作成するために使用されるパラメータは私にはよく見えます。私はなぜこれがコードで動作するのか、AzCopyでは動作しないのか混乱しています。

Azureストレージエクスプローラツールを使用してSASトークンを作成しても問題ありません。このSASトークンは異なるバージョンのサービスを対象としていますが、SDKで強制的にそのパラメータを変更することはできません。誰がなぜこれが起こっているのか知っていますか?フィドラーのコンテンツをアップデートに投稿します。

+0

フィドラーの痕跡を控えてください。また、使用しているAzCopyのバージョンも教えてください。 –

答えて

0

これまでのように、WindowsAzure.Storage v8.0.0をインストールしてアプリケーションのアクセスポリシーに関連するSASトークンを生成するためのテストを行います。私のコンテナからSASトークンを使用してBLOBをダウンロードできます。アプリ。 AzCopy v5.0.0と最新バージョン(5.2.0)の両方がこの有効なSASトークンを認識できます。

SASトークンを生成した後、ブラウザでhttps://{storageaccount}.blob.core.windows.net/{mycontainer}/items.txt?{sas token}にアクセスできるかどうかを確認してください。

さらに、SDKをアップグレードしてExpiryTimeを増やしたり、新しいコンテナを作成して同じ問題が発生するかどうかを確認してください。

+0

私はこれを受け入れるつもりです、これは完全に私の上にありました。私はストレージアカウントのキーが混ざっていました。 –

関連する問題