如何使提供程序 assume_role 块有条件

How to make provider assume_role block conditional

我有一个 provider 块,我想给它一个 assume_role 属性 但前提是它不是 运行 在我的本地机器上。

我在所有环境 .tfvars 文件中定义了一个变量 islocal,只有本地文件的值为 true.

这是 provider 块:

provider "aws" {
    region = var.region1
    profile = var.islocal == true ? "default" : null # ONLY USED LOCALLY
    
    assume_role {       # NOT TO BE USED LOCALLY
        role_arn = var.terraform_execution_role
    }
}

问题:

  1. 如果我将 role_arn 属性 设置为 null 是否会使 assume_role 块无效? (即:和不在场一样)
  2. 如果assume_role块确实有影响,即使role_arn值为null,我如何在var.islocal为[=16]时完全删除它=]?

我考虑过动态块,但不确定如何构造它。

您可以在您的提供商中使用 dynamic blocks

provider "aws" {
    region = var.region1
    profile = var.islocal == true ? "default" : null # ONLY USED LOCALLY
    
  dynamic "assume_role" {    
    for_each = var.islocal == true ? [] : [1]  
    content {      
        role_arn = var.terraform_execution_role
    }  
  }
}