terraform 模块 - 如何将策略放入变量中

terraform module - how to put policy in a variable

我将这段代码片段用作我的模块。

我想知道如何制定政策

resource "aws_iam_role_policy" "role" {
  name   = var.name
  role   = var.role
  policy = file("${path.module}/mypolicy.json")
}

这是我创建 TF 的代码:

module "aws_iam_role_policy" {
   source = "../modules/mypolicypolicy/"
   name = "mypolicy"
   role = module.myrole.myroleout
}

我想知道的是在我的模块中引用 'policy' 的最佳方式,而我 运行 的代码实际上是根据我的模块创建策略的。我不想在我的模块中对实际的 json 进行硬编码。我怎样才能使它更易于重用以便以后用于其他策略?

如何将策略路径作为变量传递给您的模块?

在模块中:

variable "iam_policy_path" {
  default = "./mypolicy.json"  
}

resource "aws_iam_role_policy" "role" {
  name   = var.name
  role   = var.role
  policy = file(var.iam_policy_path)
}

然后在父模块中,如果需要,您只需提供新路径?

module "aws_iam_role_policy" {
   source = "../modules/mypolicypolicy/"
   name = "mypolicy"
   role = module.myrole.myroleout
   iam_policy_path = "new_policy_path.json"
}