允许 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}
而不是 sts
和 assumed-role
我查看了 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}
而不是 sts
和 assumed-role