Terraform:AWS Redshift IAM角色

时间:2017-08-08 22:57:16

标签: amazon-web-services terraform

我正在尝试设置一个红色群集和一个可以访问群集的IAM角色。我正在使用terraform。根据{{​​3}}我需要创建一个服务角色并将AmazonS3ReadOnlyAccess策略附加到它。我的terraform脚本中有以下配置:

resource "aws_iam_role" "my_admin_role" {
  name = "my-role"
  policy = <<EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:Get*",
        "s3:List*",
        "redshift:*"
      ],
      "Resource": "*"
    }
  ]
}
EOF
}

然而,这给了我一个错误:

错误:

  * aws_iam_role.my_admin_role: "assume_role_policy": required field is not set
  * aws_iam_role.my_admin_role: : invalid or unknown key: policy

如何为redshift设置服务角色?

1 个答案:

答案 0 :(得分:0)

您混合了资源aws_iam_roleaws_iam_role_policy

资源aws_iam_role

的示例用法
resource "aws_iam_role" "test_role" {
  name = "test_role"

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

资源aws_iam_role_policy

的示例用法
resource "aws_iam_role_policy" "test_policy" {
  name = "test_policy"
  role = "${aws_iam_role.test_role.id}"

  policy = <<EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "ec2:Describe*"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}
EOF
}