Azure 函数 - 当前 Azure 资源名称
Posted
技术标签:
【中文标题】Azure 函数 - 当前 Azure 资源名称【英文标题】:Azure Function – Current Azure Resource Name 【发布时间】:2019-07-02 04:54:22 【问题描述】:如果我在作为 TimerTrigger 的 Azure 函数中,如何在运行时获取我部署的 Azure 资源的名称。
在 HttpTrigger 中,您可以简单地执行以下操作:req.RequestUri.AbsoluteUri
并获得提供良好“部署后”运行时描述的内容。
在 Timer 中,在 TimerFuncton 执行时如何获取 Azure 资源名称或路径并不明显。
我想要类似于 Microsoft.Azure.WebJobs.ExecutionContext 的东西,它可以为您提供编译时函数信息——但我正在从正在执行我的 TimerTrigger 函数的 Running Azure 资源中寻找一些运行时信息。
我的后备方案是将我的 Azure 资源名称硬编码到环境变量中,并在运行时读取它。看起来很奇怪,但会起作用。
谢谢克劳迪乌
以下是一些关于此的最后说明:
// Environment Variable Usage
string res = System.Environment.GetEnvironmentVariable("WEBSITE_HOSTNAME", EnvironmentVariableTarget.Process);
// WEBSITE_HOSTNAME is like "myAzureDeployedFuncName.azurewebsites.net"
// WEBSITE_HOSTNAME is like "localhost:7072"
string res = System.Environment.GetEnvironmentVariable("WEBSITE_SITE_NAME", EnvironmentVariableTarget.Process);
// WEBSITE_SITE_NAME is "myAzureDeployedFuncName" on Azure
// WEBSITE_SITE_NAME is not there in local debug function runtime
// using AppSettings is not the same and usign the above GetEnvironmentVariable call
string res = System.Configuration.ConfigurationManager.AppSettings["WEBSITE_HOSTNAME"]; // not there for Settings interface
// WEBSITE_HOSTNAME will be blank - it is not part of "Settings"
string res = System.Configuration.ConfigurationManager.AppSettings["WEBSITE_SITE_NAME"];
// WEBSITE_SITE_NAME is "myAzureDeployedFuncName" on Azure when using "settings" instead of Environment variable
// WEBSITE_SITE_NAME is not there in local debug function runtime
// the above AppSettings are not the same as GetEnvironmentVariable behavior at runtime
从函数应用计时器触发器调用“你自己”这很有用...
WEBSITE_HOSTNAME = myAzureDeployedFuncName.azurewebsites.net
Some Other potentially useful Env Vars:
// next one has scm in name
HTTP_HOST = myAzureDeployedFuncName.scm.azurewebsites.net
// slot help
APPSETTING_WEBSITE_SLOT_NAME = Production
【问题讨论】:
【参考方案1】:您可以从“WEBSITE_SITE_NAME”环境变量中读取。
去Kudu可以找到更多有用的变量:“https://.scm.azurewebsites.net/Env.cshtml”
【讨论】:
我实际上使用了 WEBSITE_HOSTNAME 来解决我的情况。您的帮助和建议正是我需要知道的。以上是关于Azure 函数 - 当前 Azure 资源名称的主要内容,如果未能解决你的问题,请参考以下文章
Microsoft.Azure.StorageException:指定的资源名称包含无效字符