Amazon web services Terraform Workspace-AWS提供-如何为每个工作区维护不同的IAM实例角色/策略?

Amazon web services Terraform Workspace-AWS提供-如何为每个工作区维护不同的IAM实例角色/策略?,amazon-web-services,terraform,amazon-iam,terraform-provider-aws,Amazon Web Services,Terraform,Amazon Iam,Terraform Provider Aws,我正在尝试使用Terraform workspace在AWS中构建多个环境 每个环境都有自己的IAM实例角色,需要附加不同的策略 我如何使用工作区在Terraform中强制执行这一点 地形文件夹结构: ami.tf backend.tf iam_role_policy.tf lauch_config.tf local.tf main.tf output.tf provider.tf user_data.sh variables.tf resource "aws_launch_configura

我正在尝试使用Terraform workspace在AWS中构建多个环境

每个环境都有自己的IAM实例角色,需要附加不同的策略

我如何使用工作区在Terraform中强制执行这一点

地形文件夹结构:

ami.tf
backend.tf
iam_role_policy.tf
lauch_config.tf
local.tf
main.tf
output.tf
provider.tf
user_data.sh
variables.tf
resource "aws_launch_configuration" "launch_config" {
name_prefix                 = "${var.application_name}-${var.application_type}-${local.environment}-launch-config-"
image_id                    = "${data.aws_ami.puppet_ami.id}"
instance_type               = "${local.instance_type}"
security_groups             = "${var.security_group}"
key_name                    = "${local.key}"
user_data                   = "${data.template_file.user_data.rendered}"
iam_instance_profile        = "${aws_iam_instance_profile.iam_instance_role.name}"
associate_public_ip_address = false
}
地形代码:

ami.tf
backend.tf
iam_role_policy.tf
lauch_config.tf
local.tf
main.tf
output.tf
provider.tf
user_data.sh
variables.tf
resource "aws_launch_configuration" "launch_config" {
name_prefix                 = "${var.application_name}-${var.application_type}-${local.environment}-launch-config-"
image_id                    = "${data.aws_ami.puppet_ami.id}"
instance_type               = "${local.instance_type}"
security_groups             = "${var.security_group}"
key_name                    = "${local.key}"
user_data                   = "${data.template_file.user_data.rendered}"
iam_instance_profile        = "${aws_iam_instance_profile.iam_instance_role.name}"
associate_public_ip_address = false
}
我尝试使用不起作用的
环境
文件夹结构

iam_instance_profile        = "${local.environment}/${aws_iam_instance_profile.iam_instance_role.name}"
下面是错误

terraform plan
Acquiring state lock. This may take a few moments...

Error: Reference to undeclared resource

  on lauch_config.tf line 23, in resource "aws_launch_configuration" "launch_config":
  23:     iam_instance_profile        = "${local.environment}/${aws_iam_instance_profile.iam_instance_role.name}"

A managed resource "aws_iam_instance_profile" "iam_instance_role" has not been
declared in the root module.


Error: Reference to undeclared resource

关于如何缓解这个问题,您有什么想法吗?

您说您尝试的方法无效,但您没有分享尝试时发生的情况。你能分享一些关于发生了什么的更多信息吗,包括你看到的任何错误消息,与它们显示的一模一样?@MartinAtkins更新了问题中的错误,感谢你指出错误是说你没有定义一个
aws\u iam\u instance\u profile.iam\u instance\u role
resource。你能分享一个展示你的问题的例子吗?只是想知道是否有解决方法?我有一个类似的要求——需要知道我们是否可以像对待EC2那样将实例概要文件附加到工作区。还没有尝试过Terraform。你说你尝试的东西不管用,但你没有分享你尝试时发生的事情。你能分享一些关于发生了什么的更多信息吗,包括你看到的任何错误消息,与它们显示的一模一样?@MartinAtkins更新了问题中的错误,感谢你指出错误是说你没有定义一个
aws\u iam\u instance\u profile.iam\u instance\u role
resource。你能分享一个展示你的问题的例子吗?只是想知道是否有解决方法?我有一个类似的要求——需要知道我们是否可以像对待EC2那样将实例概要文件附加到工作区。但我还没有尝试过地形。