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

如何用Pulumi Azure Native Python实现跨Azure订阅配置诊断

跨Azure订阅配置诊断设置(Pulumi Azure Native)

核心思路

要实现跨订阅的诊断设置,关键是通过双Provider实例分别绑定两个订阅的上下文:一个用于在订阅A中创建诊断设置,另一个用于从订阅B中读取Log Analytics工作区信息。

步骤实现(Python示例)

1. 导入依赖并配置双Provider

先确保安装兼容Pulumi v3.55.0的Azure Native包:

pip install pulumi-azure-native==2.11.0

在代码中初始化两个Provider,分别指向订阅A和订阅B:

import pulumi
import pulumi_azure_native as azure_native
from pulumi_azure_native import operationalinsights, storage

# 订阅A的Provider(用于创建诊断设置)
provider_sub_a = azure_native.Provider(
    "provider-sub-a",
    subscription_id="订阅A的ID",
    # 服务主体凭据可通过AZURE_CLIENT_ID等环境变量自动加载,无需硬编码
)

# 订阅B的Provider(用于读取工作区)
provider_sub_b = azure_native.Provider(
    "provider-sub-b",
    subscription_id="订阅B的ID",
)

2. 从订阅B中获取Log Analytics工作区

注意:get_workspace函数属于operationalinsights模块,而非provider模块。指定工作区所在资源组和名称,并绑定订阅B的Provider:

# 获取订阅B中的Log Analytics工作区
workspace_in_sub_b = operationalinsights.get_workspace(
    resource_group_name="订阅B中工作区的资源组名",
    workspace_name="目标工作区名称",
    opts=pulumi.ResourceOptions(provider=provider_sub_b)
)

3. 在订阅A中配置诊断设置

以给存储账户配置诊断为例,绑定订阅A的Provider,将日志/指标发送到订阅B的工作区:

# 读取订阅A中已有的存储账户(或按需创建新资源)
existing_storage_account = storage.get_storage_account(
    resource_group_name="订阅A中存储账户的资源组名",
    account_name="目标存储账户名称",
    opts=pulumi.ResourceOptions(provider=provider_sub_a)
)

# 创建诊断设置
diagnostic_setting = azure_native.insights.DiagnosticSetting(
    "storage-diagnostic-setting",
    resource_uri=existing_storage_account.id,
    workspace_id=workspace_in_sub_b.id,
    logs=[
        azure_native.insights.LogSettingsArgs(
            category="StorageRead",
            enabled=True,
        ),
        azure_native.insights.LogSettingsArgs(
            category="StorageWrite",
            enabled=True,
        ),
    ],
    metrics=[
        azure_native.insights.MetricSettingsArgs(
            category="AllMetrics",
            enabled=True,
        ),
    ],
    opts=pulumi.ResourceOptions(provider=provider_sub_a)
)

pulumi.export("diagnostic_setting_id", diagnostic_setting.id)

常见问题排查

  • 找不到get_workspace:确认导入了pulumi_azure_native.operationalinsights模块,Pulumi Azure Native的资源查询函数都在对应服务的子模块下(比如operationalinsights对应Log Analytics)。
  • 权限报错:确保服务主体拥有订阅A的资源写入权限,以及订阅B的Log Analytics工作区读取权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 16:35:13