У меня есть инфраструктура, которую я развертываю, используя 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?