使用 Terraform,使用配置的 IAM 策略时 ecs 服务创建失败。
Error applying plan:
1 error(s) occurred:
* aws_ecs_service.beatthemarket_service: InvalidParameterException: Unable to assume role and validate the listeners configured on your load balancer. Please verify the role being passed has the proper permissions.
status code: 400, request id: ba3a3fb8-0972-11e6-a877-954fd57ba1a9
这似乎与这个问题。但我似乎无法修复它,即使添加了一项政策。我也不认为这是时间问题,因为经过terraform apply
多次尝试后,该角色已经存在。
到目前为止,我只有一个 IAM角色,政策, 一个紧急负载平衡和 ECS簇,服务和任务定义. 我还需要其他东西吗?比如自动伸缩组,启动配置,实例配置文件或者安全组?
是否有任何明显缺失的内容,可以解释为什么服务无法接受我配置的角色?该角色似乎具有所有正确的权限。
resource "aws_iam_role_policy" "beatthemarket" {
name = "beatthemarket"
role = "${aws_iam_role.beatthemarket.id}"
policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"ec2:*",
"ecs:*",
"iam:*",
"elasticloadbalancing:*"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
EOF
}
答案1
事实证明我需要将服务设置为ecs.amazonaws.com并不是ec2.amazonaws.com在我的aws_iam_role。我以前尝试过,但没有在aws_iam_role_policy. 这很像这个问题在 AWS 论坛上。
resource "aws_iam_role" "beatthemarket" {
name = "beatthemarket"
assume_role_policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Principal": {
"Service": "ecs.amazonaws.com"
},
"Effect": "Allow",
"Sid": ""
}
]
}
EOF
}
供将来参考,希望这对某人有所帮助。