Je veux joindre une stratégie IAM gérée ARN (comme En utilisant AWS_IAM_ROLE_POLICY_ATCHAMMENT CODE> Je ne peux connecter qu'une seule stratégie, quelle est la façon de joindre les deux? p> maintenant je souhaite joindre une stratégie personnalisée comme ci-dessous à la Rôle p> Amazoms3fullAccess CODE>) et une politique IAM inline / personnalisée (écrite dans JSON dans le fichier TerraForm) à un seul rôle IAM.
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
}
4 Réponses :
Il suffit de les transmettre comme une variable ou de les déclarer comme une valeur locale, puis itérer sur une telle variable.
Par exemple: P>
resource "aws_iam_role_policy_attachment" "attach" { count = length(var.policies) role = aws_iam_role.my_role.name policy_arn = ${var.policies[count.index]} }
Je souhaite ajouter une stratégie personnalisée via JSON dans Terraform Terraform, par exemple Ressource "AWS_IAM_ROLE_POLICY" "TEST_POLICY" {NAME = "TEST_POLICY" RÔLE = AWS_IAM_ROLE.TEST_ROLE.ID POLITIQUE = << - EOF {"Version": "2012 -10-17 "," Déclaration ": [{" action ": [" EC2: décrit * "]," effet ":" Autoriser "," ressource ":" * "}]} eof} code>
Vous devrez peut-être modifier la stratégie à vos besoins, mais c'est ce dont on ressemblerait. Vous pouvez effectuer ce qui suit: espère qu'il aide. P> p>
Vous pouvez ajouter la stratégie intégrée avec JSON intégrée comme suit: ou vous pouvez utiliser un aws_iam_policy_document fort> pour obtenir une meilleure vérification des erreurs dans Idées comme Intellij Idea : P> resource "aws_iam_role" "test_role" {
name = "test_role"
assume_role_policy = data.aws_iam_policy_document.allow_ec2_and_sagemaker
}
data "aws_iam_policy_document" "allow_ec2_and_sagemaker" {
version = "2012-10-17"
statement {
sid = "AllowEC2AndSageMaker"
effect = "Allow"
actions = [
"sts:AssumeRole",
]
principals {
type = "Service"
identifiers = [
"ec2.amazonaws.com",
"sagemaker.amazonaws.com",
]
}
}
}
J'ai pu joindre une politique gérée IAM et une politique IAM inline / personnalisée au rôle IAM à l'aide du code ci-dessous.
# variables.tf variable "cloudwatch_lambda_iam_policy_arn" { type = list(string) description = "IAM Policy to be attached to AWS CloudWatch Lambda role" default = ["arn:aws:iam::aws:policy/AmazonEC2FullAccess", "arn:aws:iam::aws:policy/AWSLambdaExecute", "arn:aws:iam::aws:policy/AmazonCloudDirectoryFullAccess", "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"] } #------------------------------------------------------------ # lambda.tf resource "aws_iam_role" "awsmetrics_exec_role" { name = "awsmetrics-exec-role" assume_role_policy = <<EOF { "Version": "2012-10-17", "Statement": [ { "Action": "sts:AssumeRole", "Principal": { "Service": "lambda.amazonaws.com" }, "Effect": "Allow", "Sid": "" } ] } EOF } # custom/inline policy resource "aws_iam_role_policy" "sts_assumerole_lambda" { name = "sts-assumerole-lambda" role = aws_iam_role.awsmetrics_exec_role.id policy = <<-EOF { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "sts:AssumeRole", "sts:DecodeAuthorizationMessage", "sts:AssumeRoleWithSAML", "sts:AssumeRoleWithWebIdentity" ], "Resource": "*" } ] } EOF } # AWS managed policies resource "aws_iam_role_policy_attachment" "awsmetrics_role_policy_attachment" { role = aws_iam_role.awsmetrics_exec_role.name count = length(var.cloudwatch_lambda_iam_policy_arn) policy_arn = element(var.cloudwatch_lambda_iam_policy_arn, count.index) }
Pourriez-vous partager le code que vous avez jusqu'à présent et des erreurs que vous obtenez pourquoi essayer d'ajouter des politiques supplémentaires?
S'il vous plaît vérifier le code mis à jour @marcin
Vous pouvez avoir plusieurs actions définies dans votre bloc d'action pour votre police. Est-ce ce que vous êtes après?
Je souhaite joindre
test_policy code> à
test_role code> à l'aide de
aws_iam_role_policy_atchment code>
Vous pouvez avoir un fichier de modèle séparé pour votre stratégie, puis ajouter les actions à partir de là dans le fichier. Regardez cette Medium.com/@mitesh_shamra/.... a>
Je veux joindre la politique de la politique iam gérée et la politique de personnalité IAM en Json (en tant que fichier ou en terraform) à un seul rôle
test_role code>, dans le code ci-dessus, j'ai déjà joint des stratégies AWS gérées à
Test_role code>, je veux joindre
test_policy code> pour tester le rôle aussi. Le lien que vous avez mentionné montre comment ajouter une stratégie personnalisée à un rôle. Je cherche à la fois une politique personnalisée et une politique gérée AWS au rôle unique.
Vous pouvez ajouter la stratégie gérée et votre stratégie de test dans un fichier de modèle distinct, puis joindre cette politique au rôle.