2011-07-13 6 views
1

私のAzureロールスタートアップタスクでは、ネイティブC++アプリケーションをデプロイする必要があります。私は.cmdファイルから一連のアクションを実行することでそれを行います。スタートアップタスクからAzureローカルストレージにアクセスするには?

問題は、ロールの内容が格納されているドライブとスタートアップタスクの実行場所から約1ギガバイトの空き領域しかなく、そのアプリケーションを展開するには不十分です。

もちろん、サービス定義でローカルストレージを要求することはできますが、起動時のタスクからローカルストレージが配置される場所の実際のパスを取得する方法が見つかりません - それにはRoleEnvironment.GetLocalResource()があるようですロールコードからのみ利用可能であり、私はスタートアップタスク内から同じことをする必要があります。

スタートアップタスクからローカルストレージへのパスを検出するにはどうすればよいですか?

答えて

3

C#またはPowerShellで記述できます。

param($name) 
[void]([System.Reflection.Assembly]::LoadWithPartialName("Microsoft.WindowsAzure.ServiceRuntime")) 
write-host ([Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment]::GetLocalResource($name)).RootPath.TrimEnd('\\') 

私は、その後、必要に応じてバッチファイルから呼び出す:

powershell -c "set-executionpolicy unrestricted" 
for /f %%p in ('powershell .\getLocalResource.ps1 MyStorage') do set LOCALPATH=%%p 

EDITは:またhttp://blog.smarx.com/posts/using-a-local-storage-resource-from-a-startup-task、同じ答えを参照してくださいが、私のブログでこれらの日、私の好ましい方法は、次のPowerShellスクリプトであります。

+1

読むに値するさ:中

スタートアップ

中にストアファイルへの使用ローカルストレージ
<!-- Create the Local Storage used by the startup task. --> <LocalResources> <LocalStorage name="StartupLocalStorage" sizeInMB="5"/> </LocalResources> <Startup> <Task commandLine="Startup.cmd" executionContext="limited" taskType="simple"> <Environment> <!-- Create the environment variable that informs the startup task where to find its Local Storage. %PathToStartupStorage% resolves to the fully qualified path to the location of the Local Storage.--> <Variable name="PathToStartupStorage"> <RoleInstanceValue xpath="/RoleEnvironment/CurrentInstance/LocalResources/LocalResource[@name='StartupLocalStorage']/@path" /> </Variable> </Environment> </Task> </Startup> 

そして、あなたはローカルevironment変数PathToStartupStorageにアクセスすることができ、%PathToStartupStorage%起動スクリプトから

詳細参照スタートアップスクリプトを定義する方法:http://msdn.microsoft.com/en-us/library/gg456327.aspx –

3

私が正しく想起した場合は、Azure Bootstrapperを使用しています。これは便利で、PowerShellに慣れていない場合は、PowerShellの複雑な問題に対処する必要はありません。

現時点では100%確信していませんが、ローカルリソースへのアクセスもあるので、使用することができます。

関連する問題