Как изменить значение времени ожидания для командлета Azure Add-Blob?

Я пытаюсь вызвать Add-Blob командлет Azure

Add-Blob -BlobType Block -FilePath $packagePath -ContainerName $blobContainerName

и он работал нормально до недавнего времени, но теперь он терпит неудачу с

Operation could not be completed within the specified time.

сообщение. Я подозреваю, что по какой-то причине скорость загрузки стала очень низкой, и поэтому он просто не может загрузить файл достаточно быстро.

Можно ли увеличить значение тайм-аута для этой операции?


person sharptooth    schedule 19.10.2012    source источник


Ответы (1)


Используете ли вы командлеты с http://wappowershell.codeplex.com? Обратите внимание, что эти командлеты теперь (отчасти) устарели и были заменены командлетами управления Windows Azure (http://msdn.microsoft.com/en-us/library/windowsazure/jj554330.aspx). К сожалению, в новых командлетах отсутствует командлет для добавления больших двоичных объектов.

Возвращаясь к вашему вопросу, я не думаю, что можно указать время ожидания запроса с помощью этого командлета, и на сайте CodePlex нет исходного кода, который вы могли бы изменить. Что вы можете сделать, так это вызвать библиотеку Storage Client напрямую через PowerShell. Я позволил себе изменить код из этого сообщения в блоге (http://www.fsmpi.uni-bayreuth.de/~dun3/archives/uploading-a-file-to-azure-blob-storage-from-powershell/528.html) и включил поддержку параметра Timeout:

    Add-Type -Path "C:\Program Files\Microsoft SDKs\Windows Azure\.NET SDK\2012-06\ref\Microsoft.WindowsAzure.StorageClient.dll"

    $accountName = "<your account name>";

    $accountKey = "<your account key>";

    $blobContainerName = "<your blob container name>";

    $fullFilePath = "<Full path of the file you wish to upload>";

    $requestTimeoutInSeconds = 600;

    $cloudStorageAccountNameAndKey = new-object Microsoft.WindowsAzure.StorageCredentialsAccountAndKey($accountName, $accountKey);

    $cloudStorageAccount = new-object Microsoft.WindowsAzure.CloudStorageAccount($cloudStorageAccountNameAndKey, $true);

    $cloudBlobClient = [Microsoft.WindowsAzure.StorageClient.CloudStorageAccountStorageClientExtensions]::CreateCloudBlobClient($cloudStorageAccount)

    $blobContainer = $cloudBlobClient.GetContainerReference($blobContainerName);

$blobContainer.CreateIfNotExist();

    $blockBlob = $blobContainer.GetBlockBlobReference("<blob name>");

    $blobRequestOptions = new-object Microsoft.WindowsAzure.StorageClient.BlobRequestOptions;

    $blobRequestOptions.Timeout = [TimeSpan]::FromSeconds($requestTimeoutInSeconds);

    $blockBlob.UploadFile($fullFilePath, $blobRequestOptions);

Если вы ищете альтернативы командлетам Microsoft PowerShell, могу ли я предложить вам взглянуть на командлеты Cerebrata Azure Management [Я один из разработчиков этого продукта]. В нем есть командлеты для полного управления хранилищем и службами.

Надеюсь это поможет.

person Gaurav Mantri    schedule 20.10.2012