2017-08-08 4 views
1

Je tente d'installer un cluster redshift et un rôle IAM qui aura accès au cluster. J'utilise terraform pour cela. Selon le documentation, j'ai besoin de créer un rôle de service et de lui attacher la politique AmazonS3ReadOnlyAccess. J'ai la configuration suivante dans mon script terraform:Terraform: rôle AWS Redshift AWS

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 
} 

Cependant, cela me donne une erreur:

Erreurs:

* 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 

Comment puis-je configurer un rôle de service pour redshift?

Répondre

0

Vous mélangez les ressources aws_iam_role et aws_iam_role_policy

Exemple d'utilisation des ressources 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 
} 

d'utilisation des échantillons de ressources 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 
}