Azureの小ネタ (改)

~Azureネタを中心に、色々とその他の技術的なことなどを~

スキーマの変更など

Windows Azure SDK 1.5でWeb/WorkerロールのCSDEFのスキーマが変更されています。詳しくは、WorkerRole Schemaあたりを参照していただくとして。

今回はその中からxPath要素あたりを。このxPath要素はWeb/Workerロールともに追加されています。

Environment - Variable要素の子要素として、xPath要素で取得した値を環境変数に設定可能となります。

    <Runtime executionContext="[limited|elevated]">
      <Environment>
         <Variable name="<variable-name>" value="<variable-value>">
            <RoleInstanceValue xpath="<xpath-to-role-environment-settings>"/>
          </Variable>          
      </Environment>

同じくStartup要素などにも。

<Startup priority="<for-internal-use-only>”>
      <Task commandLine="" executionContext="[limited|elevated]" taskType="[simple|foreground|background]">
        <Environment>
         <Variable name="<variable-name>" value="<variable-value>">
            <RoleInstanceValue xpath="<xpath-to-role-environment-settings>"/>
          </Variable>          
        </Environment>
      </Task>
    </Startup>

そのxPathですが使い方は、具体的に、xPath Values in Windows Azure ここに書かれています。RoleEnvironmentからの取得例がしっかり書いてあります。

ついでですが、今回ようやくエミュレータで動作しているか否かのフラグがRoleEnvironmentクラスに定義されました。スタートアップタスクとかで、エミュレータか切り替えたいときなどに、使えそうです。

以下のような感じで、実行すれば、コマンドプロンプトエミュレータ実行か切り分けることができるでしょう。

    <Startup>
      <Task commandLine="startup2.cmd" taskType="simple">
        <Environment>
          <Variable name="isEmulated">
            <RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated"/>
          </Variable>
        </Environment>
      </Task>
    </Startup>

あとは、EntryPoint系にも与えられるかもしれませんが、また別途。それでは。