如何在Terraform中获取Function App staging槽的principal_id
问题描述
我需要在Terraform中访问Function App的staging槽,已能获取其生产槽的相关信息,代码如下:
data "azurerm_linux_function_app" "my_application" { name = <app_name> resource_group_name = <resource_group_name> } resource "azurerm_role_assignment" "role_assignment" { scope = <scope> role_definition_name = <role_name> principal_id = data.azurerm_linux_function_app.my_application.identity.0.principal_id }
尝试用类似方法获取staging槽信息时,编写了如下代码:
data "azurerm_linux_function_app_slot" "my_app_staging" { name = <app_name> resource_group_name = <resource_group_name> slot_name = "staging" } resource "azurerm_role_assignment" "staging_role_assignment" { scope = <scope> role_definition_name = <role_name> principal_id = data.azurerm_linux_function_app_slot.my_app_staging.identity.0.principal_id }
但出现报错:
The provider hashicorp/azurerm does not support data source "azurerm_linux_function_app_slot".
请问如何在Terraform中获取Function App staging槽的principal_id?
解决方案
Azurerm provider没有单独的azurerm_linux_function_app_slot数据源,获取Function App部署槽信息需使用通用的azurerm_function_app_slot数据源,该数据源兼容Linux和Windows环境的Function App。
修改后的代码如下:
data "azurerm_function_app_slot" "my_app_staging" { name = <app_name> resource_group_name = <resource_group_name> slot_name = "staging" } resource "azurerm_role_assignment" "staging_role_assignment" { scope = <scope> role_definition_name = <role_name> principal_id = data.azurerm_function_app_slot.my_app_staging.identity.0.principal_id }
该数据源会返回指定部署槽的完整信息,包括托管标识的principal_id,可直接用于角色分配操作。
若使用的Azurerm provider版本较旧,建议升级至最新稳定版,以保证数据源的兼容性。
内容的提问来源于stack exchange,提问作者Kzryzstof
相关产品推荐
相关产品推荐

