У меня есть инфраструктура, которую я развертываю, используя Terraform в AWS. Эту инфраструктуру можно развернуть в разных средах, для которых я использую рабочие пространства.
Большинство компонентов в развертывании должны создаваться отдельно для каждой рабочей области, но у меня есть несколько ключевых компонентов, которыми я хочу поделиться между ними, в первую очередь:
- Роли и разрешения IAM
- Они должны использовать один и тот же API-шлюз, но каждое рабочее пространство должно развертываться по разным путям и методам
Например:
resource "aws_iam_role" "lambda_iam_role" {
name = "LambdaGeneralRole"
policy = <...>
}
resource "aws_lambda_function" "my_lambda" {
function_name = "lambda-${terraform.workspace}"
role = "${aws_iam_role.lambda_iam_role.arn}"
}
Первый ресурс - это роль IAM, которая должна использоваться всеми экземплярами этой лямбды и не должна создаваться повторно более одного раза.
Второй ресурс - это лямбда-функция, имя которой зависит от текущего рабочего пространства, поэтому каждое рабочее пространство будет развертываться и отслеживать состояние другой лямбды.
Как я могу поделиться ресурсами и их состоянием между различными рабочими пространствами Terraform?