我正在尝试创建一个角色,一旦假定该角色应向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属性答案 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。