Как получить доступ к локальному хранилищу Azure из задачи запуска? - PullRequest
1 голос
/ 13 июля 2011

В моей задаче запуска роли Azure мне нужно развернуть родное приложение C ++. Я делаю это, выполняя набор действий из файла .cmd.

Проблема в том, что диск E:\, на котором находится содержимое роли и откуда запускается задача запуска, имеет только около 1 гигабайта свободного места, и этого недостаточно для развертывания этого приложения.

Конечно, я могу попросить локальное хранилище в определении службы, но не могу найти, как определить фактический путь к местному хранилищу из задачи запуска - для этого есть RoleEnvironment.GetLocalResource(), но, похоже, быть доступным только из кода роли, и мне нужно сделать то же самое из задачи запуска.

Как определить путь к моему локальному хранилищу из задачи запуска?

Ответы [ 3 ]

3 голосов
/ 13 июля 2011

Если я правильно помню, мы используем Azure Bootstrapper .Это удобно, и вам не придется сталкиваться со сложностями PowerShell, если вы не знакомы с ним.

Я не уверен на 100% в данный момент, но я помню, что у него есть доступ к локальным ресурсамтак что вы можете использовать его.

3 голосов
/ 13 июля 2011

Вы можете написать C # или PowerShell, чтобы сделать это. В настоящее время моим предпочтительным методом является следующий скрипт 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

РЕДАКТИРОВАТЬ: См. Также http://blog.smarx.com/posts/using-a-local-storage-resource-from-a-startup-task, тот же ответ, но в моем блоге.

0 голосов
/ 25 апреля 2014

Как определить путь к моему локальному хранилищу из задачи запуска?

Использовать локальное хранилище для хранения файлов во время запуска

<!-- 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>

И вы можете получить доступ с помощью локальной переменной окружения PathToStartupStorage, %PathToStartupStorage% из вашего скрипта запуска

Дополнительные ссылки: http://msdn.microsoft.com/en-us/library/azure/hh974419.aspx

...