如何用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
相关产品推荐
相关产品推荐

