允许 ECS 任务 AssumeRole 到另一个账户

Allow ECS task to AssumeRole into another account

我查看了 this question and this one,但我无法将角色部署到子帐户中,该子帐户允许父帐户中的 ECS 任务 运行ning 到 AssumeRole 中。

地形代码:

data "aws_iam_policy_document" "cross-account-assume-role-child" {
  statement {
    actions = ["sts:AssumeRole"]
    principals {
      type        = "AWS"
      identifiers = [
        "arn:aws:sts::${var.master_account_ID}:assumed-role/${var.cross_account_role_name}"
      ]
    }
  }
}

当我尝试 运行 terraform 时,计划成功但应用失败并出现这样的错误:

Error: failed creating IAM Role (ECS-cross-account-child-role): 
MalformedPolicyDocument: Invalid principal in policy: 
"AWS":"arn:aws:sts::<AWS Account ID>:assumed-role/ECS-cross-account-master-role"

如果我尝试在 AWS 控制台中像上面那样手动更新策略,我会遇到同样的错误,所以这不是因为 terraform。

我做错了什么?

您需要在策略中指定的 arn 是 IAM 角色之一,而不是假定的凭据:

arn:aws:iam::${var.master_account_ID}:role/${var.cross_account_role_name}

而不是 stsassumed-role