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 资源名称的主要内容,如果未能解决你的问题,请参考以下文章

Azure 资源标识符格式 URI -URL OR URN

Microsoft.Azure.StorageException:指定的资源名称包含无效字符

如何根据 Azure 中的部署名称删除所有已部署的资源

Azure Policy Deny:如果资源组名称中不存在标记之一

创建Azure磁盘快照

如何使用 azure powershell 命令获取给定存储帐户名称和资源组的存储帐户 ID?