0

現在、ブロブ ストレージからロールにファイルをプルし、これもブロブ ストレージにあるバッチ スクリプトを介して操作することにより、Azure ワーカー ロールへのアプリケーションのデプロイを自動化しようとしています。これを達成するために onStart を使用しています。これが私の onStart メソッドの縮小版です。

ファイルをプルダウンする準備をします:

public override bool OnStart()
        {
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));

CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

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

container.CreateIfNotExist();

CloudBlob file = container.GetBlobReference("file.bat");

実際にファイルをロールに入れる:

LocalResource localResource = RoleEnvironment.GetLocalResource("localStore");
            string filePath = System.IO.Path.Combine(localResource.RootPath, "file.bat");

using (var fileStream = System.IO.File.OpenWrite(@filePath)) 
            {
                file.DownloadToStream(fileStream);
            }

これは、バッチ ファイルと依存関係をロールに取得する方法です。私の問題は、もともと、他のファイルがすぐにドロップされるという前提でバッチファイルを作成したことですC:\。例 - C:\installer.exeC:\archive.zipなど。ただし、ファイルは localStorage にあります。

私は、A) スクリプト onStart を動的に記述して localStorage がどこにあるかをバッチ ファイルに何らかの方法で伝えるか、B) localStorage を使用するように変更できると考えていますC:\

どちらを行うか、またはここで行う最善の方法がわかりません。考え?

4

1 に答える 1

1

C: を使用するように LocalStorage を変更することはありません (とにかくこれを行うにはどうすればよいでしょうか?)。Steve のブログ投稿: Using a Local Storage Resource From a Startup Task をご覧ください。彼は、powershell を使用して LocalResource を取得する方法 (およびバッチ ファイルからそのスクリプトを呼び出す方法) を説明しています。

Windows Azure Bootstrapperを使用しない理由はありません。これは、コードを記述しなくてもロールの構成に役立つ小さなツールです。スタートアップ タスクから呼び出すだけで、ファイルをダウンロードできます (これも BLOB ストレージから)。資力、 ...

bootstrapper.exe -get http://download.microsoft.com/download/F/3/1/F31EF055-3C46-4E35-AB7B-3261A303A3B6/AspNetMVC3ToolsUpdateSetup.exe -lr $lr(temp) -run $lr(temp)\AspNetMVC3ToolsUpdateSetup.exe -args /q 

注:バッチ ファイルで絶対参照を使用する代わりに、%~dp0 を使用して相対パスを使用するようにしてください。

于 2012-08-06T06:20:30.870 に答える