하나의 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);
}
내가 다른 도구 (등 클라우드 베리)를 통해 다른 하나 개의 스토리지 계정에서 BLOB를 복사 할 수이기 때문에 이런 일이 왜 확실하지.
감사합니다.
당신이 소스 컨테이너의 ACL을 확인하시기 바랍니다 수 : 공유 액세스 서명을 찾고 후 나는 마이크로 소프트 https://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-shared-access-signature-part-2/
에서이 문서 구체적으로이 코드에왔다? 소스 컨테이너에 복사하기위한 blob은 공개적으로 사용할 수 있어야합니다. –
프리미엄 스토리지 계정 컨테이너 데이터는 계정 소유자의 비공개 액세스로만 설정할 수 있습니다. – Jeremy
이 경우 최소한 "Read"권한을 가진 원본 BLOB에 SAS URL을 생성하고 blob의 URL 대신 소스 URL로 사용해야합니다. –