Terraform 如何找出此地形代码中要使用的属性?

Terraform 如何找出此地形代码中要使用的属性?,terraform,Terraform,当我运行terraform plan时,出现以下错误: 错误:加载/Users/antkong/infrastructure/windows服务器/main.tf时出错:读取错误 aws_实例[工作者]的配置:aws_iam_角色。windows_服务器_角色: 资源变量必须由三部分组成:TYPE.NAME.ATTR in: 这是相关代码 resource "aws_instance" "worker" { ami = "${data.aws_ami.win

当我运行
terraform plan
时,出现以下错误:

错误:加载/Users/antkong/infrastructure/windows服务器/main.tf时出错:读取错误 aws_实例[工作者]的配置:aws_iam_角色。windows_服务器_角色: 资源变量必须由三部分组成:TYPE.NAME.ATTR in:

这是相关代码

resource "aws_instance" "worker" {
  ami                  = "${data.aws_ami.windows_server.image_id}"
  instance_type        = "${var.instance}"
  iam_instance_profile = "${aws_iam_role.windows_server_role}"  // <- ERROR here
  get_password_data    = "true"

然而,这在文档中并不明显


除了在运行时出错之外,我怎样才能找到它呢?

同意terraform文档可能更好。我确实发现您需要参考
aws\u iam\u实例\u概要文件
,而不是
aws\u iam\u角色
。这里是链接到文件-

代码看起来像

resource "aws_instance" "worker" {
  ami                  = "${data.aws_ami.windows_server.image_id}"
  instance_type        = "${var.instance}"
  iam_instance_profile = "${aws_iam_instance_profile.windows_server.name}"
  get_password_data    = "true"
....
}
正在从上面共享的链接复制实例配置文件定义:

resource "aws_iam_instance_profile" "windows_server" {
  name = "windows_server_instance_profile"
  role = "${aws_iam_role.windows_server.name}"
}

resource "aws_iam_role" "windows_server" {
  name = "windows_server_role"
  path = "/"

  assume_role_policy = <<EOF
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "sts:AssumeRole",
            "Principal": {
               "Service": "ec2.amazonaws.com"
            },
            "Effect": "Allow",
            "Sid": ""
        }
    ]
}
EOF
}
资源“aws\u iam\u实例\u配置文件”“windows\u服务器”{
name=“windows\u服务器\u实例\u配置文件”
role=“${aws\u iam\u role.windows\u server.name}”
}
资源“aws\u iam\u角色”“windows\u服务器”{
name=“windows\u服务器\u角色”
path=“/”

假设\u role\u policy=非常感谢您的回答。我不知道aws\u iam\u实例\u配置文件是否存在。一个简单的问题:aws是否解释了他们为什么需要这个额外的抽象层?即,为什么不在ec2实例中直接使用aws\u iam\u角色?
resource "aws_instance" "worker" {
  ami                  = "${data.aws_ami.windows_server.image_id}"
  instance_type        = "${var.instance}"
  iam_instance_profile = "${aws_iam_instance_profile.windows_server.name}"
  get_password_data    = "true"
....
}
resource "aws_iam_instance_profile" "windows_server" {
  name = "windows_server_instance_profile"
  role = "${aws_iam_role.windows_server.name}"
}

resource "aws_iam_role" "windows_server" {
  name = "windows_server_role"
  path = "/"

  assume_role_policy = <<EOF
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "sts:AssumeRole",
            "Principal": {
               "Service": "ec2.amazonaws.com"
            },
            "Effect": "Allow",
            "Sid": ""
        }
    ]
}
EOF
}