2

我们的 Terraform 部署的一部分应该创建一个策略和一个角色,然后将一个附加到另一个。

我们当前的 tf 是:

resource "aws_iam_role" "module_role" {
  name = var.lambda_role
  assume_role_policy = var.lambda_trust
  tags = var.tags
}

resource "aws_iam_policy" "sample_policy" {
  name = var.lambda_role
  description = var.lambda_policy_description
  policy = var.lambda_policy
}

resource "aws_iam_role_policy_attachment" "lambda_attach" {
  role       = aws_iam_role.module_role.name
  policy_arn = aws_iam_policy.sample_policy.arn
}

显然,变量是从另一个文件传入的。整个模块是从父级调用的。

当我们的管道运行时,它会创建策略和角色,并在没有错误的情况下完成。但是,当我通过 aws 控制台检查策略时,我发现角色和策略未附加。谁能明白为什么?

我确实从文档中注意到,此资源 ( aws_iam_role_policy_attachment) 用于将“托管IAM 策略附加到 IAM 角色”。我们的政策不是受管理的。但是我在 terraform 注册表中找不到其他用于客户管理策略的 aws 资源的资源。

非常感谢

4

1 回答 1

0

据我了解,iam_policies 在policy字段中采用字符串或 json 值。也许你可以尝试这样的事情:

resource "aws_iam_policy" "sample_policy" {
  name = "${var.lambda_role}_policy"
  description = var.lambda_policy_description
  policy = var.lambda_policy.json
}
于 2021-09-10T22:57:10.340 回答