私は1つのBLOB、特にvhdをストレージアカウントから別のストレージアカウントにコピーしようとしています。私が書いているアプリは、両方のストレージアカウントへの所有者アクセス権を持ち、これらのストレージアカウントで他の操作を実行できます。 vhdにはリースはありません(VMに接続されていません)。私は次のコードを持っていますが、403禁止された応答を取得します。Azure異なるプレミアムストレージアカウントにBLOBをコピーする
StorageCredentials scSource = new StorageCredentials(SourceStorageName, strSourceStorageKey);
StorageCredentials scTarget = new StorageCredentials(TargetStorageName, strTargetStorageKey);
CloudStorageAccount csaSource = new CloudStorageAccount(scSource, true);
CloudStorageAccount csaTarget = new CloudStorageAccount(scTarget, true);
CloudBlobClient cbcSource = csaSource.CreateCloudBlobClient();
CloudBlobClient cbcTarget = csaTarget.CreateCloudBlobClient();
CloudBlobContainer bcSource = cbcSource.GetContainerReference(SourceContainer);
CloudBlobContainer bcTarget = cbcTarget.GetContainerReference(TargetContainer);
CloudBlob cbSource = bcSource.GetBlobReference(strSourceDiskName);
CloudBlob cbTarget = bcTarget.GetBlobReference(strTargetDiskName);
Task<string> tskCopy = cbTarget.StartCopyAsync(cbSource.Uri);
while (tskCopy.Status != TaskStatus.RanToCompletion)
{
if (tskCopy.Exception != null)
throw tskCopy.Exception;
Thread.Sleep(2500);
}
ない私は他のツール(クラウドベリーなど)を介して別のストレージアカウントからブロブをコピーすることですので、なぜこれが起こっていることを確認。
ありがとうございます!
あなたは、ソース・コンテナのACLを確認してくださいことはできますか?ソースコンテナ内のコピー用のブロブは、公に利用可能でなければならない。 –
プレミアムストレージアカウントコンテナデータは、アカウント所有者のプライベートアクセスのみに設定できます。 – Jeremy
この場合、少なくとも "Read"権限を持つソースBLOB上にSAS URLを作成し、blobのURLではなくソースURLとしてSAS URLを使用する必要があります。 –