次のコードを使用して、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で強制的にそのパラメータを変更することはできません。誰がなぜこれが起こっているのか知っていますか?フィドラーのコンテンツをアップデートに投稿します。
フィドラーの痕跡を控えてください。また、使用しているAzCopyのバージョンも教えてください。 –