Terraform,使用配置的 IAM 策略时 ecs 服务创建失败

Terraform,使用配置的 IAM 策略时 ecs 服务创建失败

使用 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
}

供将来参考,希望这对某人有所帮助。

相关内容