Я создал базовую инфраструктуру, как показано ниже, и пытаюсь проверить, работают ли у меня модули для репликации инфраструктуры на AWS с помощью Terraform.
variable "access_key" {}
variable "secret_key" {}
provider "aws" {
access_key = "${var.access_key}"
secret_key = "${var.secret_key}"
alias = "us-east-1"
region = "us-east-1"
}
variable "company" {}
module "test1" {
source = "./modules"
}
module "test2" {
source = "./modules"
}
А мой модуль выглядит следующим образом:
resource "aws_iam_policy" "api_dbaccess_policy" {
name = "lambda_dbaccess_policy"
policy = "${file("${path.module}/api-dynamodb-policy.json")}"
}
Но почему-то, когда я использую тот же модуль в своем main.tf
, он выдает ошибку для политики ресурсов с таким же именем. Как мне справиться с таким сценарием?
Я хочу использовать тот же main.tf для среды prod / stage / dev. Как мне этого добиться?
Мой фактический модуль выглядит как код в этом вопросе.
Как использовать модули и иметь возможность динамически называть ресурсы модуля? например stage_iam_policy
/ prod_iam_policy
и т. Д. Это правильный подход?