Azure:环境变量和预定义环境变量

在Azure的definition文件里,我们可以定义一些环境变量,这里是个例子:

<WorkerRole> 
     <Startup> 
          <Task taskType="background" commandLine="my.cmd"

executionContext="limited">  
               <Environment> 
                    <Variable value="my_value" /> 
               </Environment> 
          </Task> 
     </Startup> 
     <Runtime> 
          <Environment> 
               <Variable value="my_value2" /> 
          </Environment>  
     </Runtime>

</WorkerRole>

Azure的lifecycle提供了类似于servlet的start和rutnime概念,在definition里的环境变量定义是分开的,也就是说startup里的环境变量在runtime里是看不到的,反之亦然。所以如果要开发的是java程序,要确保java程序能拿到环境变量,要先确定你的java程序是在什么时候启动的。Azure的eclipse插件创建的工程里,java程序都是在startup的时候启动的,那这样的话环境变量就要定义在Startup里了。


但是这种方式我们能定义自己的环境变量,但是还是拿不到Azure的运行信息(比如当前运行的instance的编号等待)。 Azure有提供一些API用来获取Azure运行相关信息的,但是,最简单的可能还是去获取环境变量了(如果你只要这些信息的话)。

Azure默认提供了以下的一些环境变量,这些环境变量在Startup和Runtime里都有, 所有标有星号(*)的变量都在Azure portal里可以看到:

@AccountUsername *– Azure远程桌面登陆的时候的用户名,在CSCFG文件中可配置 @AccountEncryptedPassword * – 加密后的远程桌面密码,使用Host Service里的SSL证书加密,在CSCFG文件中可配置 @AccountExpiration *– 远程桌面用户过期时间,在CSCFG文件中可配置 @ConnectionString – diagnostics 使用的为了连接Azure Storage使用的Connection String,在CSCFG文件中可配置. DiagnosticStore – diagnostics 使用的为了连接Azure Storage使用的Storage account,在CSCFG文件中可配置. RdRoleId – Role instance 的唯一id,例子:eaaa6a386255466dada9dd158c5d4008.WebTest_IN_0 RoleRoot – Azure role代码的根目录, 可以在%RoleRoot%\AppRoot路径下找到放在代码中的文件
RdRoleRoot – 内容和RoleRoot一样 RoleDeploymentID * – Host service的当前deployment的id,和RdRoleId的前面一部分是一致的,比如:eaaa6a386255466dada9dd158c5d4008 RoleInstanceID * – 当前instance的id,比如:WebTest_IN_0 RoleName * – 当前role的名字比如: WebTest __WaRuntimeAgent__ – 运行在系统中的Azure安装的agent的id(Azure在所有instance中都会安装agent来收集一些信息) WA_CONTAINER_SID – Azure容器id


关键字:Azure, 环境变量,获取Instance信息

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/1e5f729e88904761a3875cce7436da15.html