在Terraform中找不到导出的属性

时间:2019-07-03 12:18:17

标签: terraform amazon-iam

我正在尝试创建一个角色,一旦假定该角色应向AWS账户以外的某些用户提供对特定存储桶的访问权限

resource "aws_iam_role" "s3_role_access" {
  name               = "${var.s3_role_name}"
  assume_role_policy = "${data.template_file.iam_policy_s3_assume.rendered}"
  description        =  "Role providing access to ${var.s3_role_bucket_name}/${var.s3_role_bucket_path}"
}

resource "aws_iam_role_policy" "s3_role_access" {
  name   = "${var.s3_role_name}"
  role   = "${aws_iam_role.s3_role_access.id}"
  policy = "${data.template_file.iam_policy_s3_permissions.rendered}"
}

我期望该计划能够成功,但是我得到以下信息:

  

错误:错误的运行计划:发生了1个错误:           * module.xxx.aws_iam_role_policy.s3_role_access:发生1个错误:           * module.xxx.aws_iam_role_policy.s3_role_access:找不到资源'aws_iam_role.s3_role_access'   'aws_iam_role.s3_role_access.id'

应按照https://www.terraform.io/docs/providers/aws/r/iam_role.html#id

的说明导出id属性

2 个答案:

答案 0 :(得分:0)

该策略中传递的JSON似乎无法正确呈现。

答案 1 :(得分:0)

如果在创建aws_iam_role.s3_role_access时出现错误,有时terraform无法像在上面那样在创建aws_iam_role_policy.s3_role_access时正确显示该错误,并显示上面的错误,因为没有aws_iam_role资源。

在这种情况下,您可以在注释掉aws_iam_role_policy资源进行测试之后,检查aws_iam_role.s3_role_access。