gpt4 book ai didi

amazon-web-services - 如何在 Terraform 中创建角色

转载 作者:行者123 更新时间:2023-12-05 03:04:30 28 4
gpt4 key购买 nike

我想用 terraform 创建一个 aws_iam_role 但在运行 terraform apply 后我收到以下错误消息:aws_iam_role.role:更新 IAM 角色 (edb_eb_role) 承担角色策略时出错:MalformedPolicyDocument:具有禁止的字段资源

这是我的政策:

resource "aws_iam_role" "role" {
name = "edb_eb_role"

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

我做错了什么?我也尝试只与校长一起做,但后来我收到消息说“校长”也不被禁止?

最佳答案

Assume_role_policy 不接受 aws policy json 文件。 所以上面的代码是行不通的。
aws_iam_role 中 assume_role_policy 的详细解释,看这个 thread .

如下所示更新代码并执行。

variable policy_arn{
default = "arn:aws:iam::aws:policy/service-role/AWSLambdaRole"
}
resource "aws_iam_role" "edb_role" {
name = "edb_role"

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


resource "aws_iam_role_policy_attachment" "test-attach" {
role = "${aws_iam_role.edb_role.name}"
policy_arn = "${var.policy_arn}"
}

output "role" {
value = "${aws_iam_role.edb_role.name}"
}

在这里,我们使用 IAM 的策略部分中的 AWSLambdaRole 策略。

  • 使用 aws_iam_role_policy_attach 将多个策略添加到一个角色
  • 使用 aws 提供的默认策略,如上所示。否则要创建新策略,请参阅文档 here


关于amazon-web-services - 如何在 Terraform 中创建角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52886945/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com