【发布时间】:2020-01-06 18:46:15
【问题描述】:
在this answer 的后面,我正在尝试创建一个允许访问 ECR 的aws_iam_role。但是,当我定义以下内容时:
resource "aws_iam_role" "jenkins_ecr_role" {
name = "JenkinsECRRole"
assume_role_policy = <<END_OF_POLICY
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "ecr.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
END_OF_POLICY
}
我得到错误:
Error: Error creating IAM Role JenkinsECRRole:
MalformedPolicyDocument: Invalid principal in policy: "SERVICE":"*"
根据 AWS 文档,ecr.amazonaws.com 似乎是一个有效的委托人。我做错了什么?
【问题讨论】:
-
允许 ECR 代入角色,不允许用户/实例配置文件代入能够与 ECR 交互的角色。
-
@ydaetskcoR 那么在这种情况下正确的 Principal 是什么?
-
我也做了同样的假设。原来
Principal是 AWS 服务访问 ECR 所需要的。就我而言,ecs中的某些机器需要ecr权限。所以Principal是"Service": ["ecs.amazonaws.com"]
标签: amazon-web-services terraform amazon-iam terraform-provider-aws amazon-ecr