我看了这个问题和这个问题,但我无法将角色部署到子帐户中,因为子帐户允许在父帐户中运行的ECS任务在其中扮演角色。
Terraform代码:
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}"
]
}
}
}
当我尝试运行地形时,计划成功了,但应用失败了,出现了这样一个错误:
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控制台中手动更新如上所述的策略,我会遇到同样的错误,所以这不是由于地形造成的。
我做错了什么?
您需要在策略中指定的arn是IAM角色之一,而不是假定的凭据之一:
arn:aws:iam::${var.master_account_ID}:role/${var.cross_account_role_name}
代替sts
和assumed-role