【发布时间】:2019-03-07 10:37:44
【问题描述】:
我正在使用 AWS 中的 Terraform 部署一个基础设施。此基础架构可以部署到不同的环境中,我正在使用工作区。
部署中的大多数组件应该为每个工作区单独创建,但我希望在它们之间共享几个关键组件,主要是:
- 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 角色,应该在该 Lambda 的所有实例之间共享,并且不应多次重新创建。
第二个资源是一个 Lambda 函数,其名称取决于当前工作区,因此每个工作区将部署并跟踪不同 Lambda 的状态。
如何在不同的 Terraform 工作空间之间共享资源及其状态?
【问题讨论】:
标签: amazon-web-services terraform devops terraform-provider-aws