You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Azure App Service内部获取Subscription ID

获取Azure App Service所属订阅ID的方法

方法1:通过实例元数据服务(IMDS)直接获取

App Service实例同样可以访问Azure实例元数据服务的内部端点,返回的元数据中包含完整的资源ID,从中可直接解析出订阅ID,这和虚拟机的元数据API使用逻辑一致。

调用方式

在App Service的代码中发起GET请求:

GET http://169.254.169.254/metadata/instance?api-version=2021-02-01
Metadata: true

解析订阅ID

返回的JSON数据里,compute.resourceId字段格式为:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}

只需提取/subscriptions/之后、/resourceGroups/之前的字符串片段,就是目标订阅ID。

示例代码(C#):

var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Add("Metadata", "true");
var response = await httpClient.GetAsync("http://169.254.169.254/metadata/instance?api-version=2021-02-01");
var jsonContent = await response.Content.ReadAsStringAsync();
var metadata = JObject.Parse(jsonContent);
var resourceId = metadata["compute"]["resourceId"].ToString();
var subscriptionId = resourceId.Split('/')[2];

方法2:通过托管标识调用ARM API获取

如果需要同时获取更多资源详情,可借助App Service的托管标识调用Azure资源管理器API:

  1. 给目标App Service启用系统分配的托管标识
  2. 为该标识分配当前App Service资源的读者权限
  3. 获取托管标识的访问令牌,调用ARM API获取网站详情,从中提取订阅ID

示例ARM API请求:

GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}?api-version=2023-01-01
Authorization: Bearer {access-token}

注:若不知道订阅ID、资源组或网站名,可先通过IMDS获取这些基础信息,再发起ARM API请求。


内容的提问来源于stack exchange,提问作者tango bango

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 12:31:06